整理部分容易忘记,且比较经常使用的语法mysql
一、关于NULL
,这里之因此先说NULL,由于在开发中遇到很多坑。下面罗列几个须要注意的点,若是还有其余坑,后面遇到会继续补齐
(1)=
及!=
不能用于NULL的筛选。举个例子,假若有一个sql查询根据A列进行条件查询,A列含有NULL值,那么使用=
及!=
这两种逻辑判断不能筛选出A字段为NULL的行。
如图:图片描述
上图中,第4行记录的user_sex字段为NULL,假设使用查询语句select user_id from user_info where user_sex != -1;
,是不会筛选出第4行记录,使用=
同理。结果如图:
图片描述
(2)使用NULL
及NOT NULL
的筛选,使用is
web
二、left join on
左链接
(1)LEFT JOIN 关键字会从左表 (table_name1) 那里返回全部的行。在右表 (table_name2) 中没有匹配的行,则右表的全部字段显示为NULL。
(2)left join on where
:在左链接的基础上,进行where条件筛选,若是筛选条件的字段的值含有NULL
,将不会被筛选出来。若是想所有筛选出来,可使用增长条件or A is null
,注意,这里使用or进行条件的链接。
(3)right join on
同理,所以不作累述sql
三、inner join on
内链接、等值链接
(1)只返回两个表中联结字段相等的行。也就是说,好比两张表中都有知足链接条件的值,才可以被筛选出来,若是其中某一行在另一张表找不到不匹配的行,那么这一行就不会显示出来。数据库
四、on duplicate key update
:
(1)解释:session
查看 UNIQUE索引或PRIMARY KEY 对应的行是否存在,存在则更新(执行on duplicate key update后面的语句),不存在则插入新行。.net
(2)实例:code
INSERT INTO table (a,b,c) VALUES (1,2,3) ON DUPLICATE KEY UPDATE c=c+1;
// 这里a是主键,查看a=1的行是否存在,存在则更新,不然插入对象
五、desc
倒序、asc
正序(默认)blog
六、limit m,n
:
(1)解释:从m+1开始,取n条记录索引
(2)使用场景:分页
七、where、group by、having
执行次序:
(1)where是对FROM指定的数据对象(基本表或者视图)进行过滤,选择知足条件的元组。若是后面接着group,则对where筛选出来的数据进行分组,having则是对分组之后的分组进行过滤。
八、存储过程:
(1)声明变量、循环:
DELIMITER ;; CREATE PROCEDURE `students_count3`() BEGIN declare num int; set num = 1; while num <= 1000000 do select count(1) from user_info; SET num = num + 1; end while; END;; DELIMITER ; call students_count3();
九、查看运行时间:
(1)select @@profiling;
:查看是否开启
(2)set profiling=1;
: 开启
(3)show profiles;
: 查看以前sql语句运行的时间
十、索引:
(1)添加普通索引: alter table table_name add index index_name(column)
(2)添加惟一索引:alter table table_name add unique index_name(column)
十一、增长字段:alter table table_name add field_name field_type;
十二、删除字段:alter table table_name drop column field_name;
1三、更改值:update user_info set user_sex = '-1' where user_id = 1;
1四、修改PG字段类型:
`ALTER TABLE device_data alter column wechat_register_status type varchar(4);`
1五、修改字段名称ALTER TABLE distributors RENAME COLUMN address TO city;
1六、修改默认值
https://blog.csdn.net/dynadot...
参考:https://www.jianshu.com/p/4af...
一、链接远程mysql
mysql -h 127.0.0.1 -P 3306 -u root -p school
-p后面是数据库名字
二、查看当前会话隔离级别
select @@tx_isolation;
三、查看系统当前隔离级别
select @@global.tx_isolation;
四、设置当前会话隔离级别
set session transaction isolatin level repeatable read;
五、设置系统当前隔离级别set global transaction isolation level repeatable read;