SQL必知必会(第五版)

请教一下,SQL必知必会(第五版)
最新回答
飞花逐水流

2024-11-27 09:58:22

去重 :使用DISTINCT关键字,它必须直接放在列名的前面。

检索前5行数据:

LIMIT 5 OFFSET 5指示MySQL等DBMS返回从第5行起的5行数据。第一个数字是检索的行数,第二个数字是指从哪儿开始。

2.1 排序数据

注意: ORDER BY 子句的位置在指定一条ORDER BY子句时,应该保证它是 SELECT语句中最后一条子句 。如果它不是最后的子句,将会出错。

ORDER BY 2, 3表示先按prod_price,再按prod_name进行排序。
好处在于不用重新输入列名。
缺点。首先,不明确给出列名有可能造成错用列名排序。其次,在对SELECT清单进行更改时容易错误地对数据进行排序(忘记对ORDER BY子句做相应的改动)。最后,如果进行排序的列不在SELECT清单中,显然不能使用这项技术。

DESC 是DESCENDING的缩写,这两个关键字都可以使用。与DESC相对的是 ASC (或ASCENDING),在升序(A→Z)排序时可以指定它。但实际上,ASC没有多大用处,因为升序是默认的(如果既不指定ASC也不指定DESC,则假定为ASC)。

DESC关键字只应用到直接位于其前面的列名。如果想在多个列上进行降序排序,必须对每一列指定DESC关键字。

在SELECT语句中,数据根据WHERE子句中指定的搜索条件进行过滤。WHERE子句在表名(FROM子句)之后给出。

在同时使用ORDER BY和WHERE子句时,应该让ORDER BY位于WHERE之后,否则将会产生错误。

提示: 单引号用来限定字符串。如果将值与字符串类型的列进行比较,就需要限定引号。用来与数值列进行比较的值不用引号。

操作符(operator) 用来联结或改变WHERE子句中的子句的关键字,也称为逻辑操作符(logicaloperator)。

AND 用在WHERE子句中的关键字,用来指示检索满足所有给定条件的行。
一个AND子句,只有两个过滤条件。可以增加多个过滤条件,每个条件间都要使用AND关键字。
ORDER BY子句,放在WHERE子句之后。

OR: WHERE子句中使用的关键字,用来表示检索匹配任一给定条件的行。

SQL(像多数语言一样)在处理OR操作符前,优先处理AND操作符。

圆括号具有比AND或OR操作符更高的优先级。
任何时候使用具有AND和OR操作符的WHERE子句,都应该使用圆括号明确地分组操作符。

IN:WHERE子句中用来指定要匹配值的清单的关键字,功能与OR相当。
IN操作符一般比一组OR操作符执行得更快。
IN的最大优点是可以包含其他SELECT语句,能够更动态地建立WHERE子句。

NOT: WHERE子句中用来否定其后条件的关键字。

通配符(wildcard) 用来匹配值的一部分的特殊字符。
搜索模式(search pattern) 由字面值、通配符或两者组合构成的搜索条件。

说明:区分大小写根据DBMS的不同及其配置,搜索可以是区分大小写的。如果区分大小写,则’fish%’与Fish bean bag toy就不匹配。

除了能匹配一个或多个字符外,%还能匹配0个字符。%代表搜索模式中给定位置的0个、1个或多个字符。
'%’不会匹配名称为NULL的行。

下划线的用途与%一样,但它只匹配单个字符,而不是多个字符。

与%能匹配多个字符不同,_总是刚好匹配一个字符,不能多也不能少。

此语句的WHERE子句中的模式为’[JM]%'。这一搜索模式使用了两个不同的通配符。[JM]匹配方括号中任意一个字符,它也只能匹配单个字符。因此,任何多于一个字符的名字都不匹配。[JM]之后的%通配符匹配第一个字符之后的任意数目的字符,返回所需结果。

也可以使用NOT操作符得出类似的结果。^的唯一优点是在使用多个WHERE子句时可以简化语法:

例如:

拼接(concatenate)
将值联结到一起(将一个值附加到另一个值)构成单个值。
操作符可用加号(+)或两个竖杠(||)表示。
说明:是+还是||?SQL Server使用+号。DB2、Oracle、PostgreSQL和SQLite使用||。在MySQL和MariaDB中,必须使用特殊的函数。

说明: TRIM函数 大多数DBMS都支持 RTRIM() (去掉字符串右边的空格)、 LTRIM() (去掉字符串左边的空格)以及 TRIM() (去掉字符串左右两边的空格)。

SQL支持列别名。 别名(alias) 是一个字段或值的替换名。别名用 AS 关键字赋予。

AS关键字可选,最好用它。

提示:如何测试计算
SELECT语句为测试、检验函数和计算提供了很好的方法。虽然SELECT通常用于从表中检索数据,但是省略了FROM子句后就是简单地访问和处理表达式,例如SELECT 3*2;将返回6,SELECT Trim(' abc ');将返回abc,SELECT Curdate();使用Curdate()函数返回当前日期和时间。

UPPER()函数: 将文本转换为大写。

SQL函数不区分大小写,因此upper(), UPPER(), Upper()都可以,substr(), SUBSTR(), SubStr()也都行。