SQL必知必会

一列(或一组列),其值能够唯一标识表中每一行。

主键列不允许NULL值
主键列中的值不允许修改或更新
主键值不能重用(如果某行从表中删除,它的主键不能赋给以后的新行)

SQL语句不区分大小写,因此SELECT与select是相同的

作为子查询的SELECT语句只能查询单个列。企图检索多个列将返回错误。

限制结果: 各种数据库中的这一SQL实现并不相同,
在SQL Server和Access中使用SELECT时,可以使用TOP关键字来限制最多返回多少行
SELECT TOP 5 prod_name FROM Products;

使用MySQL、MariaDB、PostgreSQL或者SQLite,需要使用LIMIT 子句,像这样:
SELECT prod_name FROM Products LIMIT 5;

返回从第5行起的5行数据:
SELECT prod_name FROM Products LIMIT 5 OFFSET 5;

任何时候使用具有AND和OR操作符的WHERE子句,都应该使用圆括号明确地分组操作符任何时候使用具有AND和OR操作符的WHERE子句,都应该使用圆括号明确地分组操作符

IN操作符后跟由逗号分隔的合法值,这些值必须括在圆括号中。

SELECT prod_name FROM Products WHERE NOT vend_id = 'DLL01'

%代表搜索模式中给定位置的0个、1个或多个字符。

大多数DBMS都支持RTRIM()(正如刚才所见,它去掉字符串右边的空格)、LTRIM()(去掉字符串左边的空格)以及TRIM()(去掉字符串 左右两边的空格)。

SQL算术操作符: + — * /

SQL函数:ABS SUM AVG COUNT MAX MIN


MySQL和MariaDB支持简化版的LIMIT 4 OFFSET 3语句,即LIMIT 3,4。

在指定一条ORDER BY子句时,应该保证它是SELECT语句中最后一条子句

ORDER BY子句中使用的列将是为显示而选择的列。但是,实际上并不一定要这样,用非检索的列排序数据是完全合法的。

如果想在多个列上进行降序排序,必须对每一列指定DESC关键字。

确定值是否为NULL,不能简单地检查是否= NULL。
SELECT prod_name FROM Products WHERE prod_price IS NULL;


除聚集计算语句外,SELECT语句中的每一列都必须在GROUP BY子句中给出。
GROUP BY子句必须出现在WHERE子句之后,ORDER BY子句之前
联结条件用特定的ON子句而不是WHERE子句给出。传递给ON的实际条件与传递给WHERE的相同

如果想返回所有的匹配行,可使用UNION ALL而不是UNION。

在用UNION组合查询时,只能使用一条ORDER BY子句

只有不允许NULL值的列可作为主键

posted on 2022-05-17 11:08  我和你并没有不同  阅读(68)  评论(0编辑  收藏  举报