mysql学习网址
一、数据查询
语法:
SELECT
< ALL | DISTINCT > 字段1、字段2、字段n >
FROM
< 表名 >
WHERE
< 条件表达式 >
GROUP BY
< 列名 >
HAVING
< 条件表达式 >
ORDER BY
< 列名 > < ASC | DESC >
1.查询指定列、多个列、所有列、不同行及限制查询行数
SELECT 字段1 FROM tb_name
SELECT 字段1..字段n FROM tb_name
SELECT * FROM tb_name
#查询字段值不重复
SELECT DISTINCT 字段1 FROM tb_name
#限制查询条数、并只查询前5条记录
SELECT * FROM tb_name LIMIT 5
#从第二条开始查询,并且只查询5条记录
#从第二条开始查询,并且只查询5条记录
SELECT * FROM tb_name LIMIT 1,5 或
SELECT * FROM tb_name LIMIT 5 OFFSET 1
2.将查询出来的数据进行排序
#查询所有数据并从大到小排序
SELECT * FROM tb_name ORDER BY 字段1 DESC
#查询所有数据并从大到小排序,并获取最大值
SELECT * FROM tb_name ORDER BY 字段1 DESC LIMIT 1
#按多列进行排序,如果字段1的值不重复,字段2排序才有效
SELECT * FROM tb_name ORDER BY 字段1 字段2 DESC
3.查询满足条件的数据
数据库表一般包含大量的数据,很少需要查询表的所有行,通常只需要根据特定条件查询所需数据即可!
查询条件 | 谓词 |
比较 | =, >, <,>=,<=,!=,<>,!>,!< |
确定范围 | BETWEEN AND, NOT BETWEEN AND |
确定集合 | IN ,NOT IN |
字符匹配 | LIKE ,NOT LIKE |
空值 | IS NULL ,IS NOT NULL |
多重条件 | AND,OR,NOT |
确定范围的用法
01.查询年龄在20-23岁(包括20岁和23岁)之间同学的姓名、系别、和年龄
SELECT Sname,Sdept,Sage FROM Student WHERE Sage BETWEEN 20 AND 23
02.查询年龄不在20-23岁(包括20岁和23岁)之间同学的姓名、系别、和年龄
SELECT Sname,Sdept,Sage FROM Student WHERE Sage NOT BETWEEN 20 AND 23
确定集合的用法
01.查询计算机科学系(CS),数学系(MA)和信息系(IS)学生的姓名和性别
SELECT Sname,Ssex FROM Student WHERE Sdept IN ('CS','MA','IS')
字符匹配的用法
一般语法格式如下:
SELECT 字段1, 字段2,...字段n
FROM table_name
WHERE 字段1 LIKE <'匹配字符'> [AND | OR] 字段n = 'value'
%(百分号)通配符:表示任意长度的字符。
_ (下划线)通配符: 表示任意单个字符。
01.查询所有姓王的学生姓名、学号、性别
SELECT Sname,Sno,Ssex FROM Student WHERE Sname LIKE '王%'
02.查询所有姓“欧阳”且全名为三个汉子的学生的姓名
SELECT Sname FROM Student WHERE Sname LIKE '欧阳_'
03.查询第二个 字为“阳”的学生的姓名和学号
SELECT Sname ,Sno FROM Student WHERE Sname LIKE '_阳%'
4.聚合函数的使用
为了方便用户,增强查询功能,SQL提供了许多聚集函数
函数 | 说明 |
COUNT(*) | 统计行数 |
COUNT([ DISTINCT | ALL ] <列名>) | 统计一列中值得个数 |
SUM([ DISTINCT | ALL ] <列名>) | 计算一列值得总和 |
AVG([ DISTINCT | ALL ] <列名>) | 计算一列值得平均值 |
MAX([ DISTINCT | ALL ] <列名>) | 计算一列值得最大值 |
MIN([ DISTINCT | ALL ] <列名>) | 计算一列值得最小值 |
注意: WHERE字句是不能用聚合函数作为条件表达式的。聚合函数只能用于SELECT字句和GROUP BY中的HAVING字句。
5.GROUP BY字句使用
一般GROUP BY配合聚合函数及HAVING字句一起使用
01.查询平均成绩大于等于90分的学生学号和平均成绩。
SELECT
Sno,
AVG(Grade)
FROM
GROUP BY
Sno
HAVING
AVG(Grade) >= 90