整理SQL语法及命令

语法

整理部分容易忘记,且比较经常使用的语法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)使用NULLNOT NULL的筛选,使用isweb

二、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;

相关文章
相关标签/搜索