我自己常常忘记的一些关键信息
去重:DISTINCT
SELECT DISTINCT < >(AS)< >
FROM < >;
AND 运算符优先于 OR 运算符(SQL语句中可以使用括号调整语句执行的顺序)
SELECT有的时候可以理解为print(可以这么说吗?)
ORDER BY(排序) 默认为升序排列,降序排列为DESC
在MySQL中,NULL 值被认为比任何 非NULL 值低
最常用的五个聚合函数
1.COUNT:计算表中的记录数(行数)
COUNT函数的结果根据参数的不同而不同。COUNT(*)会得到包含NULL的数据行数,而COUNT(<列名>)会得到NULL之外的数据行数。
2.SUM:计算表中数值列中数据的合计值
3.AVG:计算表中数值列中数据的平均值
4.MAX:求出表中任意列中数据的最大值
5.MIN:求出表中任意列中数据的最小值
MAX/MIN函数几乎适用于所有数据类型的列。SUM/AVG函数只适用于数值类型的列。
想要计算值的种类时,可以在COUNT函数的参数中使用DISTINCT。即在聚合函数的参数中使用DISTINCT,可以删除重复数据。
分组
SELECT - (FROM) - (WHERE)- GROUP BY <聚合键> - HAVING
group by 基于前三者;having相当于group by的where
视图的定义
视图并不是数据库真实存储的数据表,它可以看作是一个窗口,通过这个窗口我们可以看到数据库表中真实存在的数据。
使用视图的优点:
1.通过定义视图可以将频繁使用的SELECT语句保存以提高效率。
2.通过定义视图可以使用户看到的数据更加清晰。
3.通过定义视图可以不对外公开数据表全部字段,增强数据的保密性。
4.通过定义视图可以降低数据的冗余。
CREATE VIEW <视图名称> ( <列名1> , <列名2> ,...) AS <SELECT语句>;
视图的注意事项
图名在数据库中需要是唯一的,不能与其他视图和表重名。
虽然在视图上继续创建视图的语法没有错误,但是我们还是应该尽量避免这种操作。这是因为对多数 DBMS 来说, 多重视图会降低 SQL 的性能。
在一般的DBMS中定义视图时不能使用ORDER BY语句。原因:视图和表一样,数据行都是没有顺序的。
可以在视图的基础上进行查询,把它当成一个TABLE就好。同样地,其他的ALTER, DROP等操作
对原表的操作会同步到视图里,对视图进行直接操作(非直接修改数据的过程性操作如GROUP BY, SUM, COUNT, ORDER BY等除外)也会更新原表的数据。虽然但是,在创建视图时也尽量使用限制不允许通过视图来修改表。