SQL单表查询(1)
- SELECT:指定要显示的属性列
- FROM:指定查询对象(基本表或视图)
- WHERE:指定查询条件
- GROUP BY:对查询结果按指定列的值分组,该属性列值相等的元组为一个组,通常会在每组中作用聚集函数
- HAVING:只有满足指定条件的组才给予输出
- ORDER BY:对查询结果按指定列值进行升序或降序
查询指定列
--查询全体学生的学号与姓名
SELECT Sno,Sname
FROM Studnet;
补充:如果要查询的列为全部列可使用SELECT *
虚列


消除取值重复的行
--利用DISTINCT关键词消除可能会出现的重复数据
SELECT DISTINCT Sno
FROM SC;
常用的查询条件

例子
--查询成绩不及格的学生的学号
SELECT DISTINCT Sno
FROM SC
WHERE Grade<60;
确定范围
谓词: BETWEEN...AND....
NOT BETWEEN...AND
--查询年龄在20~23(包含20,23)岁学生的姓名,系别和年龄
SELECT Sname,Sdept,Sage
FROM Student
WHERE Sage BETWEEN 20 AND 23;
谓词:IN<值表>,NOT IN<值表>
--查询计算机科学系(CS),数学系(MA),信息系(IS)学生的姓名和性别
SELECT Sname,Ssex
FROM Student
WHERE Sdept IN('CS','MA','IS');
谓词:LIKE
%(百分号) 代表任意长度(长度可以为0)的字符串 例如a%b代表以a开头,以b结尾的任意长度的字符串
_(下横线) 代表任意单个字符
例如a_b表示以a开头,以b结尾的长度为3的任意字符串
--查询学号为201215121的学生的信息
SELECT *
FROM Studnt
WHERE Sno LIKE '201215121';
--等价与
SELECT *
FROM Studnt
WHERE Sno='201215121';
--查询所有姓刘学生的姓名,学号,性别
SELECT Sname,Sno,Ssex
FROM Student
WHERE Sname LIKE'刘%';
--查询姓欧阳并且名字为3个字的学生的姓名
SELECT Sname
FROM Studnet
WHERE Sname LIKE'欧阳_';
--使用换码字符将通配符转义为普通字符
--查询DB_Design课程的课程号和学分
SELECT Cno,Ccredit
FROM Course
WHERE Cname LIKE 'DB\_Design'ESCAPE'\';


ORDER BY 子句
*可以按一个或多个属性列排序
*升序:ASC;降序:DESC;默认为升序
--查询选修3号课程的学生的学号以及成绩,并将结果按分数降序排序
SELECT Sno,Grade
FROM SC
WHERE Cno='3'
ORDER BY Grade DESC;

浙公网安备 33010602011771号