数据库SQL归纳(三)

时间:2022-11-03 16:42:28

数据查询功能

单表查询

选择若干列

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 列名 = 值