一、简单查询
1.查询所有字段
SELECT * FROM 表名
--查询所有学生的信息
SELECT * FROM student
- 查询指定字段(可视为投影运算)
SELECT 字段列表(逗号隔开) FROM 表名
--查询班级、姓名、学号信息
SELECT sclass,snumb,sname FROM student
- 去除重复信息
SELECT DISTINCT 字段名 FROM 表名
关键字DISTINCT用于去重
--查询有哪些班级
SELECT DISTINCT sclass FROM student
- 根据现有值计算新值
设有数据表book,有6个字段bnumb,bname,author,press,pdate,price
--查询图书打9折后的价格
SELECT bnumb,bname,author,press,pdate,price*0.9 FROM book
也可以用关键字AS为字段重命名
SELECT bnumb,bname,author,press,pdate,price*0.9 AS discount
FROM book
也可以用关键字INTO将查询结果插入新表,INTO后面为新表名
SELECT bnumb AS '书号',bname AS '书名',author AS '作者',press AS '出版社',pdate AS '出版日期',price*0.9 AS discount
INTO discount
FROM book
二、按条件查询
--一般格式
SELECT <列名列表>
FROM <表名>
WHERE <条件>
条件:关系运算符、逻辑运算符连接起来的表达式;关系运算符可以连接数值、字符串、日期等类型的数据或表达式。
--查询航天班的学生信息
SELECT * FROM student
WHERE sclass = '航天'
--查询年龄在20到22岁之间的学生信息
SELECT * FROM student
WHERE sage<=22 AND sage>=20
--查询年龄不在20到22岁之间的学生信息
SELECT * FROM student
WHERE NOT (sage<=22 AND sage>=20)
SELECT * FROM student
WHERE sage NOT BETWEEN 18 AND 20
--查询航天班年龄在20到22岁之间的学生信息
SELECT * FROM student
WHERE sclass = '航天' AND sage<=22 AND sage>=20
三、使用特殊关系运算符查询
IN 在集合中
NOT IN 不在集合中
--查询籍贯是陕西、河南的学生
SELECT * FROM student
WHERE province IN('陕西','河南')
IS NULL 是空
IS NOT NULL 非空
--查询没填电话号码的学生
SELECT * FROM student
WHERE stel IS NULL
BETWEEN 起始值 AND 终止值 :在两值之间
NOT BETWEEN 起始值 AND 终止值:不在两值之间
注:
① 区间是闭区间
② 两值的类型可以是数值、字符串或日期型
③ 日期做终止值时,不包括终止值那一天
--查询年龄在20到22岁之间的学生信息
SELECT * FROM student
WHERE sage BETWEEN 18 AND 20
LIKE 字符串
NOT LIKE 字符串
利用通配符实现模糊匹配
% :匹配0个或多个任意字符
_ :匹配一个任意字符
[] :匹配集合中的任意一个字符
[^] :不匹配集合中任一个字符
--查询姓"陈"的同学的信息
SELECT * FROM student
WHERE sname LIKE '陈%'
--查询名字中含有”雨“字同学的信息
SELECT * FROM student
WHERE sname LIKE '%雨%'
--查询姓“郑”的,且名字为两个字的同学的信息
SELECT * FROM student
WHERE sname LIKE '郑_'
--查询姓“赵、钱、孙、李的同学的信息
SELECT * FROM student
WHERE sname LIKE '[赵钱孙李]%'
--查询不是姓“赵、钱、孙、李的同学的信息
SELECT * FROM student
WHERE sname LIKE '[^赵钱孙李]%'
四、对查询结果进行排序
使用ORDER BY子句
--一般格式
SELECT <列名列表> FROM <表名>
[WHERE 条件]
ORDER BY <字段名1> [ASC|DESC], <字段名2> [ASC|DESC] ...
ASC表示按字段值升序排列(ascend),默认升序
DESC表示按字段值降序排列(descend)
--查询航天班的学生的姓名、年龄、按年龄从小到大排序(升序)
SELECT sanme,sage FROM student
WHERE sclass = '航天'
ORDER BY sage
--查询航天班的学生信息按年龄从大到小排序,年龄相同按学号升序排序
SELECT * FROM student
WHERE sclass = '航天'
ORDER BY sage DESC, snumb ASC