![ec2f34cefe9135f2d6b988e9b5daacad.png](https://i-blog.csdnimg.cn/blog_migrate/9544dbbfcde39b52a68b5021cbfc3689.jpeg)
![fab19f2622898e975384e19c77a0adf4.png](https://i-blog.csdnimg.cn/blog_migrate/1543c850d3311d3677c162218d1aad31.png)
书写规则
- SQL语句不区分关键字、表名、列名的大小写(插入的值是区分大小写的)
- SQL语句以英文分号(;)结尾
- 列名不能加单引号(列名命名时不能有空格)
- 符号输入只能使用英文符号
SQL语句书写顺序
SELECT
SQL语句执行顺序
SQL语句的书写顺序和运行顺序不一样
- FROM
- JOIN
- ON
- WHERE
- GROUP BY
- HAVING
- SELECT
- ORDER BY
- LIMIT
基本的查询语句--SELECT
select语句是最基本也是最常用的语句,从一个或多个表中检索信息,格式如下:
SELECT <列名1>,<列名2>,... ...
FROM <表名>;
*表示查询出全部列
AS 为列设定别名(AS起别名时注意当别名中含有空格、通配符、关键字时,可将别名使用双引号或单引号标注)
DISTINCT 表示删除重复值,只检索不同的值。可以放在多列名前,此时是将多列组合为一条数据再判断是否重复。
![c346a62fb9a991681f0ee2fa5c460d24.png](https://i-blog.csdnimg.cn/blog_migrate/dac9d6f1fd89b61b6be68953c69d44d8.png)
![62b3cf295e4ac483fa9a5923ee4e08cd.png](https://i-blog.csdnimg.cn/blog_migrate/8b55405af41db95ce72894fa80eb6c52.png)
![94573b6baa5534a8f518bbafd4928a8f.png](https://i-blog.csdnimg.cn/blog_migrate/516660212f6e4f0f6dc9170e45b98e92.png)
指定查询条件--WHERE
where子句指定搜索条件对数据进行过滤
![ef9b71a44039290c9e768ed0fcd125a7.png](https://i-blog.csdnimg.cn/blog_migrate/a602d7612305c4fe9a1c72a082e18f14.png)
运算符
为SQL指定复杂的搜索条件,有3类运算符:算术运算符、比较运算符、逻辑运算符。
算术运算符
+(加)、 - (减)、*(乘)、 /(除)
注意+号的作用:
- 当表达式中有一个字符型时(SELECT '123'+90)运算规则是先将字符转换成数值型,转换成功后进行加法运算。
- 当转换失败(SELECT 'JOHN'+90),则将字符型数值转换成0再进行运算。
- 当表达式中只要有一个为nul时(SELECT NULL+10),运算结果都是NULL。
比较运算符
=(相等)、<>(不等于)、>(大于)、>=(大于等于)、<(小于)、<=(小于等于)
注意:
字符串类型安装字典顺序排序,所以字符串比较是按照字典顺序比较,例'10'<'2'(因为10是以1开头的字符串,1比2小)
逻辑运算符
NOT(否定某一条件)、AND(并且)、BETWEEN(范围查询)、OR(或者)、IN(OR的简单写法)
注意:
- BETWEEN 查询范围包括开始值和结束值。BETWEEN a AND b 作用等价于 >=a AND <=b,所以a,b的大小值不能换位置(即a<b)。
- 在WHERE子句中同时含有AND,OR时,需要用()明确分组。求值顺序:()> AND >OR
- IN 的作用等于多个OR ,注意IN后括号列表里的值类型必须一致或兼容,且不能含有通配符。格式:WHERE ...IN (<值1>,<值2>,...)
![f17912986e76cc9545c075aca6cc4103.png](https://i-blog.csdnimg.cn/blog_migrate/292bdacf29a940e2da86f1af36f81e3c.png)
![c6cd194f207007768ad495bd55298345.png](https://i-blog.csdnimg.cn/blog_migrate/eda408aa9f49b4b6328297318a616332.png)
![3fe440c8521fefb1b77d0f5173bb7a87.png](https://i-blog.csdnimg.cn/blog_migrate/d46e1a52f70e0eeffe7b80009523187b.png)
查询空值 NULL和<=>
- 空值查询用 IS NULL,而=或<>不能用于判断null值(不报错,但显示N/A)。
- <=>是安全等于符号,既可以判断NULL值,也可以判断数值。
![41d809e4b495fed485885716d377ca29.png](https://i-blog.csdnimg.cn/blog_migrate/ab92510580e84c55f0867d759ebf9296.png)
![254fcc69f3d1ca0e67a4fc3aa90d6235.png](https://i-blog.csdnimg.cn/blog_migrate/803263c3411ee7130317e67fe7d36ac1.png)
![dbada8b323fa90ba347b1336195af6bd.png](https://i-blog.csdnimg.cn/blog_migrate/d61d6f1226bf159b792c54ef1edf77af.png)
字符串模糊查询--LIKE
模糊查询时,需要使用LIKE 搭配通配符来检索字符串(通配符搜索只能用于字符串)。
- 通配符 % 代表任意多个字符(包含0个字符);
- 通配符 _ 代表任意单个字符(1个下划线表示1个字符);
![ceff27c939472f322a7cdbeb0efa2d95.png](https://i-blog.csdnimg.cn/blog_migrate/70563c3fa701ae30d4c93f1bd2ff4065.png)
注意:
当要找的字符串中本身就包含通配符'-'或'%'时,可进行以下2种方式转义:
【例】查询第2个字符为_的name
- 使用 反斜线符号,例:SELECT ...WHERE name LIKE '__%'
- 使用ESCAPE指定随意转义符号,例:WHERE name LIKE '_$_%' ESCAPE '$'
注释
使用注释可以为SQL语句增加解释,便于复查、工作交接。当写好的语句中包含了不想处理或执行的语句时,也可以使用注释来做跳过处理。
有3种方法来使用注释:
1.#单行注释
2.-- 单行注释(注意是2个短线加1个空格)
3. /*
多行
注释
*/
![080fe1b4722fbeea6e8affbb6024da36.png](https://i-blog.csdnimg.cn/blog_migrate/dff18007a0cb1fa56213efd394a4b8f2.png)
SQL语句常见错误(补充ing)
SQL语句使用换行或半角空格来分割单词(中文符号、两行之间空行都是错误的)
-----------------------------------------------------------
SQLZOO习题答案见:Daisy戴戴:SQLZOO答案(更新ing)