1.Where 后逻辑运算的优先级:
() not and or
特殊条件:
(1)、空值判断: is null
Select * from emp where comm is null;
(2)、between and (在 之间的值)
Select * from emp where sal between 1500 and 3000; 大于等于 小于等于
(3)、In(a,b, c)取值满足abc任一个的条件
Select * from emp where sal in (5000,3000,1500);
(4)、like 模糊查询
Select * from emp where ename like ‘M%’;
查询 EMP 表中 Ename 列中有 M 的值,M 为要查询内容中的模糊信息。
2.ORDER BY 多列的时候,先按照第一个column name排序,在按照第二个column name排序;
3.通配符: % 替代一个或多个字符
_ 仅替代一个字符
[charlist] 字符列中的任何单一字符(MySQL用REGEXP关键字)
[^charlist]或者[!charlist] 不在字符列中的任何单一字符(MySQL用REGEXP关键字)
解释:LIKE’[CK]ars[eo]n’ 将搜索下列字符串:Carsen、Karsen、Carson 和 Karson(如 Carson)。
LIKE’[M-Z]inger’ 将搜索以字符串 inger 结尾、以从 M 到 Z 的任何单个字母开头的所有名称(如
Ringer)。
LIKE’M[^c]%’ 将搜索以字母 M 开头,并且第二个字母不是 c 的所有名称(如MacFeather)。
4.连接joint:左连接与右连接的左右指的是以两张表中的哪一张为基准,它们都是外连接。
外连接就好像是为非基准表添加了一行全为空值的万能行,用来与基准表中找不到匹配的行进行匹配。假设两个没有
空值的表进行左连接,左表是基准表,左表的所有行都出现在结果中,右表则可能因为无法与基准表匹配而出现是空值的字段。
参考:https://www.cnblogs.com/reaptomorrow-flydream/p/8145610.html
使用 left jion 时,on 和 where 条件的区别如下:
(1)、 on 条件是在生成临时表时使用的条件,它不管 on 中的条件是否为真,都会返回左边表中的记录。
(2)、where 条件是在临时表生成好后,再对临时表进行过滤的条件。这时已经没有 left join 的含义(必须返回左边表
的记录)了,条件不为真的就全部过滤掉。https://www.runoob.com/w3cnote/sql-join-the-different-of-on-and-where.html
5.UNION 结果集中的列名总是等于 UNION 中第一个 SELECT 语句中的列名。
例如:SELECT country, name FROM Websites WHERE country=‘CN’ UNION ALL SELECT country, app_name FROM apps WHERE country=‘CN’
得到的结果中,只有名为country和name两列(app_name结果显示在name列中)
6.SQL约束:在 SQL中有如下约束:(MySQL中一般在所有列后单独限制约束,SQL Server / Oracle / MS Access一般在每列后紧跟约束)
NOT NULL - 指示某列不能存储 NULL 值。
UNIQUE - 保证某列的每行必须有唯一的值。
PRIMARY KEY - NOT NULL 和 UNIQUE 的结合。确保某列(或两个列多个列的结合)有唯一标识,有助于更容易更快速地找到表中的一个特定的记录。
FOREIGN KEY - 保证一个表中的数据匹配另一个表中的值的参照完整性。
CHECK - 保证列中的值符合指定的条件。
DEFAULT - 规定没有给列赋值时的默认值。
7.主键与外键:
(1).主键是能确定一条记录的唯一标识,比如,一条记录包括身份正号,姓名,年龄。身份证号是唯一能确定你这个人 的,其他都可能有重复,所以,身份证号是主键。
(2).外键用于与另一张表的关联。是能确定另一张表记录的字段,用于保持数据的一致性。
比如,A表中的一个字段,是B表的主键,那他就可以是A表的外键。
8.TRUNCATE只删除表中数据,DROP会删除整个表
9.无法使用比较运算符来测试 NULL 值,比如 =、< 或 <>。
我们必须使用 IS NULL 和 IS NOT NULL 操作符。
SQL语句中,通过ISNULL()、NVL()、IFNULL() 和 COALESCE() 函数对NULL值进行处理。例如SELECT ProductName,UnitPrice*(UnitsInStock+IFNULL(UnitsOnOrder,0))
FROM Products
10.视图:视图总是显示最新的数据!每当用户查询视图时,数据库引擎通过使用视图的 SQL 语句重建数据。
视图的作用:
(1)、视图隐藏了底层的表结构,简化了数据访问操作,客户端不再需要知道底层表的结构及其之间的关系。
(2)、视图提供了一个统一访问数据的接口。(即可以允许用户通过视图访问数据的安全机制,而不授予用户直接访问底层表的权限)
(3)、从而加强了安全性,使用户只能看到视图所显示的数据。
(4)、视图还可以被嵌套,一个视图中可以嵌套另一个视图。
11.SQL函数:SQL Aggregate 函数
Aggregate 函数计算从列中取得的值,返回一个单一的值。
AVG() - 返回平均值(以下函数空值均被忽略)
COUNT() - 返回行数
FIRST() - 返回第一个记录的值(只有 MS Access 支持 FIRST() 函数。MySQL用LIMIT 1代替)
LAST() - 返回最后一个记录的值(同FIRST()函数)
MAX() - 返回最大值
MIN() - 返回最小值
SUM() - 返回总和
Scalar 函数基于输入值,返回一个单一的值。
UCASE() - 将选择结果中指定行字段转换为大写
LCASE() - …小写
MID() - 从某个文本字段提取字符,MySql 中使用
SubString(字段,1,end) - 从某个文本字段提取字符
LEN() - 返回某个文本字段的长度
ROUND() - 对某个数值字段进行指定小数位数的四舍五入
NOW() - 返回当前的系统日期和时间
FORMAT() - 格式化某个字段的显示方式
12.GROUP BY()函数对最后的结果进行排序,而HAVING()函数可以对排序后的结果进行筛选。
SQL 中增加 HAVING 子句原因是,WHERE 关键字无法与聚合函数一起使用。HAVING 子句可以让我们筛选分组后的各组数据。