书写规则
- 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 表示删除重复值,只检索不同的值。可以放在多列名前,此时是将多列组合为一条数据再判断是否重复。
指定查询条件--WHERE
where子句指定搜索条件对数据进行过滤
运算符
为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>,...)
查询空值 NULL和<=>
- 空值查询用 IS NULL,而=或<>不能用于判断null值(不报错,但显示N/A)。
- <=>是安全等于符号,既可以判断NULL值,也可以判断数值。
字符串模糊查询--LIKE
模糊查询时,需要使用LIKE 搭配通配符来检索字符串(通配符搜索只能用于字符串)。
- 通配符 % 代表任意多个字符(包含0个字符);
- 通配符 _ 代表任意单个字符(1个下划线表示1个字符);
注意:
当要找的字符串中本身就包含通配符'-'或'%'时,可进行以下2种方式转义:
【例】查询第2个字符为_的name
- 使用 反斜线符号,例:SELECT ...WHERE name LIKE '__%'
- 使用ESCAPE指定随意转义符号,例:WHERE name LIKE '_$_%' ESCAPE '$'
注释
使用注释可以为SQL语句增加解释,便于复查、工作交接。当写好的语句中包含了不想处理或执行的语句时,也可以使用注释来做跳过处理。
有3种方法来使用注释:
1.#单行注释
2.-- 单行注释(注意是2个短线加1个空格)
3. /*
多行
注释
*/
SQL语句常见错误(补充ing)
SQL语句使用换行或半角空格来分割单词(中文符号、两行之间空行都是错误的)
-----------------------------------------------------------
SQLZOO习题答案见:Daisy戴戴:SQLZOO答案(更新ing)