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;
posted @ 2020-10-21 09:26  一个经常掉线的人  阅读(166)  评论(0)    收藏  举报