MySQL语法使用(三)
单关系数据查询
单关系数据查询结构
数据查询是数据库中最常用的操作。SQL提供SELECT
语句,用户通过查询操作可得到所需的信息
关系表的SELECT
语句一般语法如下1
2
3
4
5
6SELECT [ALL|DISTINCT] <字段名> [AS 别名] [{,<字段名> [AS 别名]}]
FROM <表名或视图名> [[AS] 表别名]
[WHERE <检索条件>]
[GROUP BY <字段名> [HAVING <条件表达式>]]
[ORDER BY <字段名> [ASC|DESC]]
[LIMIT子句]SELECT
子句从列的角度进行投影操作,指定要在查询结果中显示的字段名。用户也可以用关键字AS
为字段名指定别名
关键字ALL
表示所有元组,关键字DISTINCT
表示消除查询结果中的重复元组FROM
子句指定要查询的表明或视图名,如果有多个,应用逗号隔开WHERE
子句从行的角度进行选取操作,只有满足条件的元组才会出现在查询结果中GROUP BY
子句将查询结果按照其后的<字段名>
的值进行分组HAVING
子句不能单据存在,必须跟在GROUP BY
子句后面ORDER BY
子句用于对查询结果进行排序,ASC
为升序,DESC
为降序LIMIT
子句限制查询结果行数
无条件查询
无条件查询只包含SELECT……FROM……
语句
查询表中指定字段名
例:查询student表中学生姓名
SELECT sname AS 学生姓名
FROM student;
查询表中全部字段名
例:查询student表中全部字段名
SELECT *
FROM student;
条件查询
条件查询需要用到WHERE
子句指定查询条件
查询条件中,字段名与字段名之间,或字段名与常数之间,通常使用比较运算符连接
常用比较运算符如下
运算符 | 含义 |
---|---|
=、>、<、>=、<=、!=、<> | 比较大小 |
AND、OR、NOT | 多重条件 |
BETWEEN AND、NOT BETWEEN AND | 确定范围 |
IN、NOT IN | 确定集合 |
LIKE、NOT LIKE | 字符匹配 |
IS NULL、IS NOT NULL | 空值 |
比较大小中!=
和<>
表示不等于
多重条件中,AND
可表示为&&
,OR
可表示为||
,NOT
可表示为!
比较大小
例:查询student表中已成年学生
SELECT *
FROM student
WHERE age>=18;
多重条件
例:查询student表中已成年且性别为女的学生
SELECT *
FROM student
WHERE age>=18 AND sex=”女”;
确定范围
例:查询student表中年龄段在18-20的学生
SELECT *
FROM student
WHERE age EBETWEEN 18 AND 20;
确定集合
例:查询student表中所学专业为计算机的学生
SELECT *
FROM student
WHERE major=”计算机”;
字符匹配
利用通配符,可以进行模糊查询
常用通配符如下
通配符 | 功能 |
---|---|
% | 代表0个或多个字符 |
_ | 代表一个字符 |
[ ] | 表示在某一范围的字符 |
[^] | 表示不在某一范围的字符 |
例:查询student表中学号带有数字7的学生
SELECT *
FROM student
WHERE sno LIKE “%7%”;
空值
例:查询student表中未选定专业的学生
SELECT *
FROM student
WHERE major IS NULL;
聚合函数查询
SQL提供了许多使用的聚合函数,常用聚合函数如下
函数名称 | 功能 |
---|---|
AVG | 按列计算平均值 |
SUM | 按列计算值的总和 |
MAX | 求一列中的最大值 |
MIN | 求一列中的最小值 |
COUNT | 按列值统计个数 |
例:查询student表中年龄最小的学生
SELECT MIN(age)
FROM student;
分组查询
例:查询student表中已成年的学生,按性别分组
SELECT *
FROM student
WHERE age>=18
GROUP BY sex;
查询结果排序
例:查询student表中已成年的学生,按年龄大小降序排列
SELECT *
FROM student
WHERE age>=18
ORDER BY age DESC;
限制查询结果数量
例:查询student表中已成年的学生,按年龄大小降序排列,只显示前三人
SELECT *
FROM student
WHERE age>=18
ORDER BY age DESC
LIMIT 3;