资讯专栏INFORMATION COLUMN

整理SQL语法

XFLY / 1793人阅读

摘要:整理部分容易忘记,且比较常用的语法关于,这里之所以先说,因为在开发中遇到不少坑。在右表中没有匹配的行,则右表的所有字段显示为。同理,因此不做累述内连接等值连接只返回两个表中联结字段相等的行。

整理部分容易忘记,且比较常用的语法

1、关于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的筛选,使用is

2、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同理,因此不做累述

3、inner join on 内连接、等值连接
(1)只返回两个表中联结字段相等的行。也就是说,比如两张表中都有满足连接条件的值,才能够被筛选出来,如果其中某一行在另外一张表找不到不匹配的行,那么这一行就不会显示出来。

4、on duplicate key update:
(1)解释:

查看 UNIQUE索引或PRIMARY KEY 对应的行是否存在,存在则更新(执行on duplicate key update后面的语句),不存在则插入新行。

(2)实例:

INSERT INTO table (a,b,c) VALUES (1,2,3) ON DUPLICATE KEY UPDATE c=c+1;
// 这里a是主键,查看a=1的行是否存在,存在则更新,否则插入

5、desc倒序、asc正序(默认)

6、limit m,n
(1)解释:从m+1开始,取n条记录

(2)使用场景:分页

7、where、group by、having执行次序:
(1)where是对FROM指定的数据对象(基本表或者视图)进行过滤,选择满足条件的元组。如果后面接着group,则对where筛选出来的数据进行分组,having则是对分组以后的分组进行过滤。

8、存储过程:
(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();

9、查看运行时间:
(1)select @@profiling; :查看是否开启
(2)set profiling=1; : 开启
(3)show profiles; : 查看之前sql语句运行的时间

10、索引:
(1)添加普通索引: alter table table_name add index index_name(column)
(2)添加唯一索引:alter table table_name add unique index_name(column)

11、增加字段:
alter table table_name add field_name field_type;

12、删除字段:
alter table table_name drop column field_name;

13、更改值:
update user_info set user_sex = "-1" where user_id = 1;

参考:
https://www.cnblogs.com/Turin...

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/32200.html

相关文章

  • MySQL入门教程系列-1.2 数据库技术构成

    摘要:数据库管理系统数据库管理系统,用户管理数据库的软件。为数据库管理系统提供的功能语言是一种数据库查询和程序设计语言,其主要用于存取数据,查询数据,更新数据和管理数据库系统。是面向关系型数据库的。 数据库技术构成 showImg(https://segmentfault.com/img/remote/1460000007005414); showImg(https://segmentfau...

    Atom 评论0 收藏0
  • MySQL入门教程系列-1.2 数据库技术构成

    摘要:数据库管理系统数据库管理系统,用户管理数据库的软件。为数据库管理系统提供的功能语言是一种数据库查询和程序设计语言,其主要用于存取数据,查询数据,更新数据和管理数据库系统。是面向关系型数据库的。 数据库技术构成 showImg(https://segmentfault.com/img/remote/1460000007005414); showImg(https://segmentfau...

    CollinPeng 评论0 收藏0
  • MySQL入门教程系列-1.2 数据库技术构成

    摘要:数据库管理系统数据库管理系统,用户管理数据库的软件。为数据库管理系统提供的功能语言是一种数据库查询和程序设计语言,其主要用于存取数据,查询数据,更新数据和管理数据库系统。是面向关系型数据库的。 数据库技术构成 showImg(https://segmentfault.com/img/remote/1460000007005414); showImg(https://segmentfau...

    lscho 评论0 收藏0
  • MyBatis知识点整理

    摘要:得到用户信息,将用户信息存储到一级缓存中。如果中间去执行操作执行插入更新删除,则会清空中的一级缓存,这样做的目的为了让缓存中存储的是最新的信息,避免脏读。 基础: 1、 概念:Java当中的一个持久层框架。2、 特点、优势:(1)把java代码和SQL代码做了一个完全分离。(2)良好支持复杂对象的映射(输入映射、输出映射)(3)使用动态SQL,可以预防SQL注入。3、 ...

    zhangqh 评论0 收藏0
  • Mysql中的常用sql语句汇总

    摘要:如果在子句中嵌套了分组,数据将在最后指定的分组上进行汇总。子句中列出的每一列都必须是检索列或有效的表达式但不能是聚集函数。在用组合查询时,只能使用一条子句,它必须位于最后一条语句之后。 如果你对NodeJs系列感兴趣,欢迎关注微信公众号:前端神盾局或 github NodeJs系列文章本文整理自MySQL Tutorial和SQL必知必会 表(Table) 创建表 MySQL CRE...

    zlyBear 评论0 收藏0

发表评论

0条评论

XFLY

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<