一直学一直嗨,一直嗨一直学

教你几种PostgreSQL判断字符串是否包含目标字符串的方法

PostgreSQL判断字符串包含的几种方法: 方式一: position(substring in string): position(substring in string)函数:参数一:目标字符串,参数二原字符串,如果包含目标字符串,会返回目标字符串笫一次出现的位置,可以根据返回值是否大于0来判断是否包含目标字符串 select position('aa' in 'abcd'); position ---------- 0 select position('ab' in 'abcd'); positi...

MySQL中Order By与Limit不要一起用

现象与问题 ORDER BY 排序后,用 LIMIT 取前几条,发现返回的结果集的顺序与预期的不一样。 下面是我遇到的问题: 可以看到,带 LIMIT 与不带 LIMIT 的结果与我预期的不一样,而且“很不可思议”,真是百思不得其解。 后来百度了一下,如果 order by 的列有相同的值时,MySQL 会随机选取这些行,为了保证每次都返回的顺序一致可以额外增加一个排序字段(比如:id),用两个字段来尽可...

连接mysql的常用命令

如下命令表示使用root用户(mysql的root用户,非系统root用户)连接到mysql数据库,-u表示指定用户,-p表示将会提示输入密码,-u与root用户名之间的空格可省略。 mysql -u root -p 如下命令表示使用root用户连接数据库,并且直接以明文的方式指定密码,注意,下例中的密码为123123,密码与-p选项之间不能存在空格。 mysql -u root -p123123 在连接mysql时,可以直接指定将要登录的具...

简单介绍基于PostgreSql 别名区分大小写的问题

PostgreSql是区分大小写的 如果别名的大小不一致就会提示错误: SELECT * FROM ( SELECT cpi."product_item_id" "PRODUCT_ITEM_ID" FROM prd.up_product_item cpi ) a WHERE a.PRODUCT_ITEM_product_item_id" "PRODUCT_ITEM_ID" FROM prd.up_product_item cpi ) a WHERE a."PRODUCT_ITEM_ID"=1 补充:postgresql查询字段别名大写的要加双引号 Postg...

教你如何解决PostgreSQL Array使用中的一些小问题

在PostgreSQL 中可以使用Array数据结构,例如 select array[1,2,3]; return {1,2,3} 但是,如果 select array[1,2,3][1]; --会报错 select (select array[1,2,3])[1] --可以使用 那么在用正则匹配函数 regexp_match 就会遇到这样的问题,如 select regexp_match('123-123', '(d+)-(d+)'); --return {123, 123} select regexp_match('123-123', '(d+)-(d+)')[1]; --报错 但是...

简单分析MySQL 一则慢日志监控误报问题

之前因为各种原因,有些报警没有引起重视,最近放假马上排除了一些潜在的人为原因,发现数据库的慢日志报警有些奇怪,主要表现是慢日志报警不属实,收到报警的即时通信提醒后,隔一会去数据库里面去排查,发现慢日志的性能似乎没有那么差(我设置的一个阈值是60)。 排查过几次代码层面的逻辑,没有发现明显的问题,几次下来,问题依旧,这可激发了修正的念头,决定认真看看到底是什么...

linux mysql定时备份脚本记录

1. 创建备份脚本 备份脚本: #!/bin/bash date_str=$(date +%Y%m%d-%T) cd /bf/mysql_back mysqldump -h localhost -u root --password=PASSWORD -R -E -e databaseName | gzip > /bf/mysql_back/database_$date_str.sql.gz 2.执行定时任务 利用crontab定时执行上述脚本 crontab -e 每周一凌晨执行备份 05 02 * * 1 /home/mysqls_backup/mysqlbackup.sh 查看cronta...

MySQL循环语句

1.while循环 -- 设置mysql分隔符为//,也就意味着,当遇到下一个//时,整体执行SQL语句 DELIMITER // DROP PROCEDURE if EXISTS ‘test’; # 如果存在test存储过程则删除 CREATE procedure test() # 创建无参存储过程,名称为test BEGIN DECLARE i INT; # 申明变量 SET i = 0; # 变量赋值 WHILE i<5 DO # 结束循环的条件: 当i大于5时跳出while循环 INSERT INTO test...

怎样在linux或unix服务器上安装、使用MySQL

一、怎么样取得最新版本的MySQL? 要安装MySQL,首先要当然要取得它的最新版本,虽然大家都知道在FreeBSD的Packages中可以找到MySQL,但是我还是建议大家到网络上去找最新版本的MySQL。我介绍大家到http://www.mysql.org去下载,这里的最新版本是MySQL 3.23 versions 。 二、安装MySQL时候的注意事项? 1、如果您是用MySQL+Apache,使用的又是FreeBSD网路操作系统的话,安装时候你应注...

sql中union和union all的用法

union和union all的区别是,union会自动压缩多个结果集合中的重复结果,而union all则将所有的结果全部显示出来,不管是不是重复。 union用法 目的:查询出members表中group_id = 1和group_id为null的成员: select m.member_name from members m where m.group_id = 1 union select m.member_name from members m where m.group_id is null; 结果: 分析:将上面查询的结果和...

sql查询更新update select

表结构: 当我从其它数据源使用sql来填充这个表数据时,from_id都是null,因此要使用update来对from_id进行补充。 update t_ch_test t set t.from_id = (select max(a.id) from t_ch_test a where a.node_id = t.node_id and a.id < t.id) 使用update select来自连接进行更新操作。这个sql在oracle中执行是没有任何问题的,然后,坑爹的是,这个sql在postgresql中编译都报错。而我...

mysql查看数据库操作记录

window 环境下 找到my.ini,在下面添加: log=存放日志的路径/my.log 保存文件,重启mysql服务,之后就可以在对应目录的下找到my.log文件。 linux环境下 MySQL中的参数general_log用来控制开启、关闭MySQL查询日志,参数general_log_file用来控制查询日志的位置。所以如果你要判断MySQL数据库是否开启了查询日志,可以使用下面命令。general_log为ON表示开启查询日志,OFF表示关闭查询...

啥?你忘记了Mysql密码?

在安装完 MySQL 或者是在使用 MySQL 时,最尴尬的就是忘记密码了,墨菲定律也告诉我们,如果一件事有可能出错,那么它一定会出错。那如果我们不小心忘记了 MySQL 的密码,该如何处理呢?别着急,本文教你一招搞定。 1.修改 MySQL 配置文件 首先我们需要打开 MySQL 的配置文件,如果是 Windows 系统的话,MySQL 的配置文件是 my.ini,它在 MySQL 的默认安装目录下;如果是 MacOS 系统的...

简单介绍MySQL索引失效的几种情况

一.索引不存储null值 更准确的说,单列索引不存储null值,复合索引不存储全为null的值。索引不能存储Null,所以对这列采用is null条件时,因为索引上根本没Null值,不能利用到索引,只能全表扫描。 为什么索引列不能存Null值? 将索引列值进行建树,其中必然涉及到诸多的比较操作。Null值的特殊性就在于参与的运算大多取值为null。这样的话,null值实际上是不能参与进建索引的过程。也...

教你使用SQLite 事务

事务(Transaction)是一个对数据库执行工作单元。事务(Transaction)是以逻辑顺序完成的工作单位或序列,可以是由用户手动操作完成,也可以是由某种数据库程序自动完成。 事务(Transaction)是指一个或多个更改数据库的扩展。例如,如果您正在创建一个记录或者更新一个记录或者从表中删除一个记录,那么您正在该表上执行事务。重要的是要控制事务以确保数据的完整性和处理数据库...

教你使用SQLite 子查询

子查询或称为内部查询、嵌套查询,指的是在 SQLite 查询中的 WHERE 子句中嵌入查询语句。 一个 SELECT 语句的查询结果能够作为另一个语句的输入值。 子查询可以与 SELECT、INSERT、UPDATE 和 DELETE 语句一起使用,可伴随着使用运算符如 =、IN、BETWEEN 等。 SELECT 语句中的子查询使用 子查询通常与 SELECT 语句一起使用。基本语法如下: SELECT column_name [, column_name ] ...

教你使用SQLite Autoincrement(自动递增)

SQLite 的 AUTOINCREMENT 是一个关键字,用于表中的字段值自动递增。我们可以在创建表时在特定的列名称上使用 AUTOINCREMENT 关键字实现该字段值的自动增加。 关键字 AUTOINCREMENT 只能用于整型(INTEGER)字段。 语法 AUTOINCREMENT 关键字的基本用法如下: CREATE TABLE table_name( column1 INTEGER AUTOINCREMENT, column2 datatype, column3 datatype, .......

教你使用SQLite 注入

SQLite 注入 如果您的站点允许用户通过网页输入,并将输入内容插入到 SQLite 数据库中,这个时候您就面临着一个被称为 SQL 注入的安全问题。本章节将向您讲解如何防止这种情况的发生,确保脚本和 SQLite 语句的安全。 注入通常在请求用户输入时发生,比如需要用户输入姓名,但用户却输入了一个 SQLite 语句,而这语句就会在不知不觉中在数据库上运行。 永远不要相信用户提供的数据,...

教你使用SQLite Vacuum

VACUUM 命令通过复制主数据库中的内容到一个临时数据库文件,然后清空主数据库,并从副本中重新载入原始的数据库文件。这消除了空闲页,把表中的数据排列为连续的,另外会清理数据库文件结构。 如果表中没有明确的整型主键(INTEGER PRIMARY KEY),VACUUM 命令可能会改变表中条目的行 ID(ROWID)。VACUUM 命令只适用于主数据库,附加的数据库文件是不可能使用 VACUUM 命令。 如...

教你如何解决MySQL数据延迟跳动的问题

首先在高可用检测中,有一套环境的检测时断时续,经过排查发现是数据库产生了延迟,在登录到从库show slave status查看,会发现Seconds_behind_master的值是不断跳动的,即从0~39~0~39这样的频率不断跳动,让人很搓火。 查看数据库的相关日志发现竟然没有任何可以参考的日志记录,怎么分析这个问题呢,我们先来复现,于是我按照节奏抓取了3次问题出现的日志,即通过show slave status...