-
SQL分类
SQL语言在功能上主要分为如下3大类
DDL(Data Definition Languages 数据定义语言),这些语句定义了不同的数据库,表,视图,索引等数据库对象,还可以用来创建,删除,修改数据库和数据表的结构.
主要关键词包括 CREATE,DROP,ALTER,RENAME,TRUNCATE
DML(Data Manipulation Language 数据操作语言),用于添加, 删除,更新查询数据库记录,并检查数据库完整性.
主要关键词包括:INSERT,DELETE,UPDATE,SELECT
DCL(Data Control Language,数据控制语言),用于定义数据库,表,字段,用户的访问权限和安全级别.
主要关键词包括:COMMIT,ROLLBACK,SAVEPOINT,GRANT,REVOKE -
SQL的基本规则(必须遵守)
SQL可以写在一行或者多行.为了提高可读性,各个句子分行写,必要时使用缩进.
每条命令以 ; 或者 \g ,\G结束.
关键字不能被缩写也不能分行.
关于标点符号:
(1) 必须保证所有的括号,单引号,双引号都是成对结束的.
(2) 必须使用英文下的半角输入方式.
(3)字符串型和日期时间类型的数据可以使用单引号表示.
(4)列的别名,尽量使用双引号,而且不建议省略as(as 是取别名的关键词,可以省略但是不建议省略). -
SQL的大小写规范(建议遵循)
MySQL在Windows环境下大小写是不敏感的.但是在Linux环境下,数据库名,表名,表的别名,变量名都是严格区分大小写的.而关键字,函数名,列名(字段名),列的别名,是忽略大小写的
因此推荐采用统一书写规范:
数据库名,表名,表别名,字段名,字段别名都小写,SQL关键字,函数名,绑定变量都大写.
注释的使用:
单行注释: # 注释文字(MySQL特有的方式)
单行注释 : – 注释文字(-- 后面必须包含一个空格, SQL通用)
多行注释: /* 注释文字*/ -
SELECT
SELECT 字段1, 字段2,… FROM 表名
SELECT * FROM 表名 (* 代表该表中的所有字段)
SELECT 字段名 AS 别名 , 字段名2 AS 别名2 FROM 表名 (查找两个字段并起别名)
其中 AS 可以省略.但是不建议省略 , 如果起的别名中有空格 需要用双引号引起来 如 test 01,“test 01”.
SELECT DISTINCT 字段名 FROM 表名; 去除所有重复情况并查询.
SELECT 字段名1 (+,-,*,/ ) n FROM 表名 (将字段的值参与运算,如果值为NULL则运算结果也为NULL)
SELECT 字段 FROM 表名 (在表名或者字段上使用着重号 ``,这样如果表名和字段与关键字相同也不会冲突)
SELECT 常数/字符串 字段名 FROM 表名(查询出的所有结果前面会多一个常数或字符串)DESCRIBE(可简写为DESC) 表名 (查看表中的字段的详细信息,显示表结构)
SELECT 字段名 FROM 表名 WHERE 条件判断 (对查询到的结果,通过条件进行过滤[条件成立表示返回结果为1],必须紧挨着FROM)(WHERE NOT 条件判断,表示查询条件相反的结果) -
算术运算符(以下数包括整数和浮点数)
基本的 + - * / %
如果数与数之间则之间进行运算,
如果其中有一个或者多个字符串,如果字符串的含义是一个数,会将该字符串转化为数来算,如果含有字母,则该字符串为0,如果有一个为NULL,则结果之间为NULL,NULL参与运算,结果为NULL(一个数除以零结果也为NULL)
在进行模运算的时候, 如 A%B 最终的结果的符合,以A为准(-A %B = -C , A%-B = C , -A %-B = -C) -
比较运算符(以下数包括整数和浮点数)
= , <> , != , < , <= , > , >=
等于 = 不等于 != ,<> 大于 > 小于 < …
当两边成立的时候结果为 1 不成立结果为 0 (若有一边或者都为NULL则结果为NULL)
当两边有一个为字符串类型另一个为数的时候,会存在隐式转换(将字符串转化为数)
当两边都为字符串类型,会按照字符串进行比较
<=>
安全等于<=>
在等于的判断中,因为如果等式有一方为NULL,返回结果就是NULL,所以出现了<=>
安全等与,当等式有一边为NULL时返回结果为 0 当等式两边都为NULL时,返回结果为1.
IS NULL 为空 \ IS NOT NULL 不为空 \ISNULL 为空(函数形式)
SELECT 字段名 FROM 表名 WHERE 值…IS NULL(查询条件为某某为空的)
SELECT 字段名 FROM 表名 WHERE ISNULL(值…)(查询条件为某某为空的,等同于上个)
SELECT 字段名 FROM 表名 WHERE 值…IS NOT NULL(查询条件为某某不为空的)
LEAST() 最小 \ GREATEST()最大
SELECT LEAST(值1,值2,值3…) 得到最小值
SELECT GREATEST(值1,值2,值3…)得到最大值
BETWEEN … AND 在 … 到…之间
SELECT 字段名 FROM 表名 WHERE 字段名 BETWEEN 字段值A AND 字段值B.(查找值在A到B之间所有符合的结果,闭区间,包含A和B)
IN() 含有,NOT IN() 不含有
SELECT 字段名 FROM 表名 WHERE 值… IN(值A,值B,值C…) (括号里的值可以为一个或多个,多个的话,直接的关系是用 OR 连接的 如该例为查询 包含值A或B或C中所有的结果)(NOT IN 是IN 取反)
LIKE模糊查询
% 代表不确定个数的字符(>=0)
SELECT 字段名FROM 表名 WHERE 字段名 LIKE ‘%a%’ 查找字段的值中含有a的所有结果
_ 代表一个字符
SELECT 字段名 FROM 表名 WHERE 字段名 LIKE ‘a’ 查找字段名的值中第二个字母为a的所有结果
/ 转义字符
SELECT 字段名 FROM 表名 WHERE 字段名 LIKE '_ /_ '查找字段名的值中第二个字母为_的所有结果(将/ 后的 特殊字符转义成普通字符)
ESCAPE ‘字符’ 将该字符变为转义字符
SELECT 字段名 FROM 表名 WHERE 字段名 LIKE '_ $ _’ ESCAPE '$'查找字段名的值中第二个字母为_的所有结果(将 $ 后的 特殊字符转义成普通字符)
REGEXP 正则运算符
… … … … 略… … … …
7. 逻辑运算符
OR 或 AND 且 XOR 异或
… 略 …(AND 的优先级高于 OR)
Mysql复习笔记(day02 SQL)
于 2022-02-18 22:17:36 首次发布