数据库SQL归纳(三)
数据查询功能
单表查询
选择若干列
1. 指定列
SELECT 列名称 FROM 表名称
2. 全部列
SELECT * FROM 表名称
3. 经过计算的列
SELECT Sname, 2019-Sage FROM Student
经过计算的列、常量列显示结果都没有列名(显示为 '无列名'),可以通过其别名的方法改变查询结果显示的列名。
列名 | 表达式 [AS] 列别名
SELECT Sname 姓名, 2019-Sage 出生年份 FROM Student
选择若干元组
1. 消除取值相同的行
关键字:DISTINCT
SELECT DISTINCT 列名称 FROM 表名称
2. 满足条件的元组
SELECT 列名称 FROM 表名称 WHERE 列 运算符 值
查 询 条 件 | 运 算 符 |
---|---|
比较 | =,>,>=,<,<=,<>,!= |
确定范围 | BETWEEN…AND,NOT BETWEEN…AND |
确定集合 | IN,NOT IN |
字符匹配 | LIKE,NOT LIKE |
空值 | IS NULL,IS NOT NULL |
多重条件 | AND,OR |
Sage BETWEEN 20 AND 30 相等于 Sage >= 20 AND Sage <= 23
对结果排序
ORDER BY <列名> [ASC|DESC]
默认是升序 ASC, 降序 DESC
使用聚合函数
表中元组总数: SELECT COUNT(*) FROM 表名
列均值: SELECT AVG(列名) FROM 表名
列个数: SELECT COUNT([DISTINCT] 列名) FROM 表名
最大值: SELECT MAX(列名) FROM 表名
最小值: SELECT MIN(列名) FROM 表名
列和值: SELECT SUM(列名) FROM 表名
分组统计
SELECT 分组依据列名, 聚合函数 FROM 表名 WHERE 列名 运算符 值
GROUP BY 列名
[ HAVING 聚合函数 运算符 值 ]
使用TOP限制结果
SQL Server 的语法:
SELECT TOP number [ percent ] [WITH TIES] 列名 FROM 表名
MySQL 语法
SELECT 列名 FROM 表名 LIMIT number
Oracle 语法
SELECT 列名 FROM 表名 WHERE ROWNUM <= number
多表链接
FROM table1 INNER|LEFT|RIGHT JOIN table2 ON <连接条件> INNER|LEFT|RIGHTJOIN table3 ON <连接条件> ...
数据更改功能
插入数据
单行插入
INSERT INTO 表名 VALUES (值1, 值2,....)
我们也可以指定所要插入数据的列:
INSERT INTO 表名 (列1, 列2,...) VALUES (值1, 值2,....)
多行插入
INSERT INTO 表名 [(列1, 列2,...)] SELECT语句
更新数据
UPDATE 表名 SET 列名 = 新值 WHERE 列名 = 某值
删除数据
DELETE FROM 表名 WHERE 列名 = 值