SQL--DML最常用的SQL语句就是SELECT语句了。
1、SELECT语句的用途是从一个或多个表中检索信息。
- SELECT 列名
这是SELECT最基本的用法,检索单个列。
如果没有明确排序查询结果,则返回的数据的顺序没有特殊意义。返回数据的顺序可能是数据被添加到表中的顺序,也可能不是。只要返回相同数目的行,就是正常的。
- SELECT 列名1,列名2,...列名n
从一个表中检索多个列,列名之间用逗号分隔,最后一列后面不加逗号。
SQL语句一般返回原始的,无格式的数据。数据的格式化是一个表示问题,而不是一个检索问题。因此表示一般在显示该数据的应用程序中规定,一般很少使用实际检索出来的数据。
- SELECT *
检索所有列。星号是通配符,表示所有列。
一般,除非确实需要表中的每个列,否则最好别使用*通配符。检索不需要的列通常会降低检索和应用程序的性能。
使用通配符有一个优点,由于不明确指定列名,所以能检索出名字未知的列。
- SELECT后面可以指定ALL或者不给参数(因为ALL是默认行为)
SELECT后面可以指定DISTINCT参数,表示只包含不同的值。
2、SELECT子句及其顺序
从上往下依次是子句从前往后的顺序:
子句 | 说明 | 是否必须使用 |
SELECT | 要返回的列或表达式 | 是 |
FROM | 从中检索数据的表 | 仅在从表选择数据时使用 |
WHERE | 行级过滤 | 否 |
GROUP BY | 分组说明 | 仅在按组计算聚集时使用 |
HAVING | 组级过滤 | 否 |
ORDER BY | 输出排序顺序 | 否 |
3、聚集(组)函数:运行在行组上,计算和返回单个值的函数。
- AVG()
例:返回所有产品的平均值
- SELECT AVG(prod_price) AS avg_price
- FROM Products;
AVG()也可以用来确定特定行或列的平均值。一般加上 WHERE语句进行过滤。
例:
- SELECT AVG(prod_price) AS avg_price
- FROM Products
- WHERE vend_id = 'DLL01';
- COUNT()
- 使用COUNT(*)对表中行的数目进行计数,不管表列中包含的是空值 (NULL)还是非空值;
- 使用COUNT(column)对特定列中具有值的行进行计数,忽略NULL值。
- SELECT COUNT(*) AS num_cust
- FROM Customers;
在这个例子里,对所有行计数,不管行中各列有什么值。
例:
- SELECT COUNT(cust_email) AS num_cust
- FROM Customers;
这个例子只对具有电子邮件地址的客户计数。
- MAX()
对于数值数据,返回最大值,对于非数值数据,如果按相应的列排序,则返回最后一行。
忽略NULL值。
- MIN()
对于数值数据,返回最小值,对于非数值数据,如果按相应的列排序,则返回最前面一行。
忽略 NULL值。
- SUM()
忽略NULL值。
4、使用数据处理函数UPPER(),SOUNDEX(),ABS()等
与几乎所有DBMS都等同地支持SQL语句 (如SELECT)不同,每一个DBMS都有特定的函数。事实上,只有少数几个函数被所有主要的DBMS等同地支持。可见,与SQL语句不同,SQL函数不是可移植的。
如果决定使用函数,应该保证做好代码注释,以便以后可以确切地知道所编写SQL代码的含义。
大多数SQL实现支持以下类型的函数:
- 文本处理函数
其余常见的文本处理函数如下:
函数 | 说明 |
LEFT()或使用子字符串函数 | 返回串左边的字符 |
LENGTH()也使用DATALENGTH()或LEN() | 返回串的长度 |
LOWER() | 将串转换为小写 |
LTRIM() | 去掉串左边的空格 |
RIGHT() | 返回串右边的字符 |
RTRIM() | 去掉串右边的空格 |
SOUNDEX() | 返回串SOUNDEX值 |
UPPER() | 将串转换为大写 |
SOUNDEX()是一个将任何文本串转换为描述其语音表示的字母数字模式的算法。SOUNDEX考虑了类似的发音字符和音节,使得能对串进行发音比较而不是字母比较。
例如:表中有一个顾客Michelle Green。但是如果这是输入错误的名字,实际应该是Michael Green,应该的处理方式如下:
- SELECT cust_name,cust_contact
- FROM Customers
- WHERE SOUNDEX(cust_contact) = SOUNDEX('Michael Green');
- 日期和时间处理函数
- 数值处理函数
函数 | 说明 |
ABS() | 返回一个数的绝对值 |
COS() | 返回一个角度的余弦 |
EXP() | 返回一个数的指数值 |
PI() | 返回圆周率 |
SIN() | 返回一个角度的正弦 |
SQRT() | 返回一个数的平方根 |
TAN() | 返回一个数的正切值 |