《SQL命令精心整理》
- 1 SQL基础
- 2 关键字 select & distinct
- 3 排序检索 - order by & desc & asc
- 4 where 语句
- 5 操作符 -and & or & not & in
- 6 通配符
- 6.1 LIKE % 谓词 下划线 方括号
- 7 计算、拼接、别名
1 SQL基础
名词 | 概念 |
---|---|
数据库(database) | 定义:数据库指保存有组织的数据的容器。 说明:通常所说的数据库软件称为数据库管理系统(DBMS),数据库是通过DBMS创建和操纵的容器。 |
表(table) | 定义:某种特定类型数据的结构化清单。 说明:表名是唯一的。有些数据库使用拥有者的名字做为唯一名的一部分,即相同数据库不能使用两次相同的表名,但不同库可以使用相同的表名。 |
列(column) | 定义:表的字段,所有表都是由一个或多个列组成的。 |
数据类型(datatype) | 定义:所允许的数据类型。每个列都有相应数据类型,限制或允许该列存储的数据。 |
行(row) | 定义:表中的一个记录。又非专业称呼为数据库记录(record)。 |
主键(primary key) | 定义:一列(或一组列)的值能够唯一标识表的每一行。 说明:1-不是每个表都一定要定义主键。 |
SQL语句 | 定义:SQL是Structured Query Language(结构化查询语言)的缩写,专门与数据库沟通的语言。 |
子句(clause) | 定义:SQL语句由子句构成,通常由一个关键字加上所提供的数据组成。 说明:有些子句是必需的,有些则是可选的。 |
2 关键字 select & distinct
名词 | 概念 |
---|---|
SELECT | SELECT A.COLUMN1 AS Cname1 FROM SCHEMA.TABname WHERE 条件1 A FETCH FIRST 5 ROWS ONLY 说明:按条件1查询A表的COLUMN1列的前5行并重命名列名为Cname1 例1:SELECT * FROM EXD_changeinfo WHERE EXDEBT = ‘9444190000420120121231000010’ and changeno=‘0001’ |
DISTINCT | (唯一值、去重) 定义:DISTINCT告诉DBMS只返回不同的vend_id行。 例1:SELECT DISTINCT vend_id FROM Products |
2-4-限制数据 | 说明:SQL Server & Access 使用TOP关键字;db2 用 FETCH FIRST ;MySQL、MariaDB、PostgreSQL或者SQLite用LIMIT. 例1:SELECT TOP 5 prod_name FROM Products; 例2:SELECT prod_name FROM Products LIMIT 5; 例3:SELECT prod_name FROM Products LIMIT 5 OFFSET 6 ;—返回第6行起5行的数据。 例4:SELECT prod_name FROM Products FETCH FIRST 5 ROWS ONLY. |
3 排序检索 - order by & desc & asc
名词 | 概念 |
---|---|
ORDER BY | 说明:ORDER BY子句是用来排序的。 例句:SELECT prod_id,prod_price,prod_name FROM Products ORDER BY prod_price,prod_name 注释:例句中是多列排序,多列排序区分先后,先对prod_price进行排序,只有该列不唯一的时候才对prod_name进行排序。 |
DESC & ASC | 说明:DESC为DESCENDING的缩写,指倒序,即从大到小;ASC为ASCENDING的缩写,指升序,即从小到大。SQL语句中ORDER BY排序时默认为升序,所以ASC可以省略。 |
4 where 语句
名词 | 概念 |
---|---|
WHERE | 说明:WHERE字句用来指定搜索条件(search criteria)又称过滤条件(filter confition)。一般跟在from字句之后。 |
WHERE字句操作符 | |
例句 | 例1:SELECT prod_name,prod_price FROM Products WHERE prod_price < 10 例2:SELECT prod_name,prod_price FROM Products WHERE BETWEEN 5 AND 10 例3:SELECT prod_name,prod_price FROM Products WHERE prod_price IS NULL |
5 操作符 -and & or & not & in
名词 | 概念 |
---|---|
操作符 | 用来联结或改变WHERE字句中的字句的关键字,也称为逻辑操作符 |
AND&OR | 定义:AND操作符的优先顺序高于OR操作符。(以下示例中,例1和2的结果是不一样的。) 例1:SELECT prod_name,prod_price FROM Products WHERE vend_id=‘DLL01’ OR vend_id=‘BRS01’ AND prod_price>=10 例2:SELECT prod_name,prod_price FROM Products WHERE (vend_id=‘DLL01’ OR vend_id=‘BRS01’) AND prod_price>=10 |
NOT | 定义:否定其后跟的任何条件。 例1:SELECT prod_name FROM Products WHERE NOT vend_id=‘DLL01’ ORDER BY prod_name |
IN | 定义:IN操作符用来指定条件。 说明:IN操作符比OR操作符速度快。 |
例句 | SELECT cust_name,cust_state,(SELECT COUNT(*) FROM Orders WHERE Orders.cust_id = Customers.cust_id) AS orders FROM Customers ORDER BY cust_name |
6 通配符
6.1 LIKE % 谓词 下划线 方括号
名词 | 概念 |
---|---|
通配符(wildcard) | 定义:用来匹配值的一部分的特殊字符。 |
搜索模式(search pattern) | 定义:由字面值、通配符或两者组合构成的搜索条件。 |
谓词(predicate) | 说明:LIKE是谓词。 |
LIKE操作符 | 说明:LIKE操作符可进行通配搜索。 例1: SELECT prod_id,prod_name FROM Products WHERE prod_name LIKE ‘Fish%’ |
百分号(%)通配符 | 说明:%表示任何字符出现任意次数。 例1:LIKE ‘Fish%’ 例2:LIKE ‘%bean bag%’ 例3:LIKE ‘F%y’ |
下划线(_)通配符 | 说明:下划线和百分号一样,但只能匹配单个字符。DB2不支持下划线。 |
方括号([])通配符 | 定义:方括号([])通配符用来指定一个字符集,它必须匹配指定位置(通配符的位置)的一个字符。 举例:LIKE ‘[JM]%’ 说明:J或者M开头的被筛选出来。 特别:LIKE ‘[^JM]’ 说明:加上^表示J或者M之外开头的被筛选出来。 |
7 计算、拼接、别名
名词 | 概念 |
---|---|
拼接字段|| | 定义:字段(field)与列(column)含义相同;拼接(concatenate)将值联结在一起构成单个值。 说明:ACCESS和SQL Server 用+号;DB2、Oracle、PostgreSQL、SQLite和Open Office Base使用|| 举例:SELECT vend_name||‘(’||vend_country||‘)’ From Vendors ORDER BY vend_name |
TRIM函数 | 定义:TRIM()去掉字符串左右两边的空格;LTRIM()去掉字符串左边的空格;RTRIM()去掉字符串右边的空格。 举例:SELECT RTRIM(vend_name) || ‘(’ || RTRIM(vend_country) || ‘)’ FROM Vendors ORDER BY vend_name |
AS别名(alias) | 定义:别名是一个字段或值的替换名。又称为导出列。 举例:SELECT RTRIM(vend_name) || ‘(’ || RTRIM(vend_country) || ‘)’ AS vend_title FROM Vendors ORDER BY vend_name |
算数计算 | 举例:SELECT quantity,item_price,quantity*item_price AS expanded_price FROM OrderItems WHERE order_num=2008 |