五十个SQL基本语句,来看看你的SQL语言过关了吗?

时间: 2023-07-11 admin 互联网

五十个SQL基本语句,来看看你的SQL语言过关了吗?

五十个SQL基本语句,来看看你的SQL语言过关了吗?

目录

#建立一个学生表Student

#建立一个课程表Course

#建立学生选课表

#向Student表增加“入学时间”列,其数据类型为日期型 

#将年龄的数据类型由字符型(假设原来的数据类型是字符型)改为整数 

#增加课程名称必须取唯一值的约束条件 

#删除Student表 

#Student表按学号升序建唯一索引 

#Course表按课程号升序建唯一索引 

#SC表按学号升序和课程号降序建唯一索引 

#将SC表的SCno索引名改为SCSno 

 #删除Student表的Stusname索引

#查询全体学生的学号与姓名 

#查询全体学生的姓名、学号、所在系 

#查询全体学生的详细记录 

#查询全体学生的姓名及其出生年份 

#查询全体学生的姓名、出生年份和所在院系,要求用小写字母表示系名 

#查询选修了课程的学生学号(相同的学号只允许出现一次) 

#查询计算机科学系全体学生的名单 

#查询所有年龄在20岁以下的学生姓名及其年龄 

#查询考试成绩不及格的学生的学号 

 #查询年龄在20~23岁之间的学生姓名、系别和年龄

#查询年龄不在20~23岁之间的学生姓名、系别和年龄 

#查询计算机科学系(CS)、数学系(MA)和信息系(IS)学生的姓名和性别 

#查询既不是计算机科学系、数学系,也不是信息系的学生的姓名和性别 

#查询学号为20215121的学生的详细情况 

#查询所有姓刘的学生的姓名、学号和性别 

#查询姓“欧阳”且全名为三个汉字的学生的姓名 

#查询名字中第二个字为“阳”的学生的姓名、学号和性别 

#查询所有不姓刘的学生的姓名、学号和性别 

#查询DB_Design课程的课程号和学分 

#查询以"DB_"开头,且倒数第三个字符为i的课程的详细情况 

#某些学生选修课程后没有参加考试,所以有选课记录,但没有考试成绩,查询缺少成绩的学生的学号和相应的课程号 

#查询所有有成绩的学生学号和课程号 

#查询计算机科学系年龄在20岁以下的学生姓名 

#查询选修了3号课程的学生的学号及其成绩,查询结果按分数的降序排列 

#查询学生总数 

#查询选修了课程的学生人数 

#计算选修1号课程的学生平均成绩 

#查询选修1号课程的学生最高分数 

#查询学生20125012选修课程的总学分数 

#求各个课程号及相应的选课人数 

#查询选修了三门以上课程的学生学号 

#查询平均成绩大于等于90分的学生学号和平均成绩 

#查询每个学生及其选修课程的情况 

#查询每个学生及其选修课程的情况(用自然连接) 

#查询选修2号课程且成绩在90分以上的所有学生的学号和姓名 


#建立一个学生表Student

#建立一个学生表Student
CREATE TABLE Student
(Sno CHAR(9) PRIMARY KEY,
Sname CHAR(20) UNIQUE,
Ssex CHAR(2),
Sage SMALLINT,
Sdept CHAR(20)
);

#建立一个课程表Course

#建立一个课程表Course
CREATE TABLE Course
(Cno CHAR(4) PRIMARY KEY,
Cname CHAR(40) NOT NULL,
Cpno CHAR(4),
Ccredit SMALLINT,
FOREIGN KEY(Cpno) REFERENCES Course(Cno)
);

#建立学生选课表

#建立学生选课表
CREATE TABLE SC
(Sno CHAR(9),
Cno CHAR(4),
Grade SMALLINT,
PRIMARY KEY(Sno,Cno),
FOREIGN KEY(Sno) REFERENCES Student(Sno),
FOREIGN KEY(Cno) REFERENCES Course(Cno)
);

#向Student表增加“入学时间”列,其数据类型为日期型 

#向Student表增加“入学时间”列,其数据类型为日期型
ALTER TABLE Student ADD S_entrance DATE;

#将年龄的数据类型由字符型(假设原来的数据类型是字符型)改为整数 

#将年龄的数据类型由字符型(假设原来的数据类型是字符型)改为整数
ALTER TABLE Student ALTER COLUMN Sage INT;

#增加课程名称必须取唯一值的约束条件 

#增加课程名称必须取唯一值的约束条件
ALTER TABLE Course ADD UNIQUE(Cname);

#删除Student表 

#删除Student表
DROP TABLE Student CASCADE;

#Student表按学号升序建唯一索引 

#Student表按学号升序建唯一索引
CREATE UNIQUE INDEX Stusno ON Student(Sno);

#Course表按课程号升序建唯一索引 

#Course表按课程号升序建唯一索引
CREATE UNIQUE INDEX Coucno ON Course(Cno);

#SC表按学号升序和课程号降序建唯一索引 

#SC表按学号升序和课程号降序建唯一索引
CREATE UNIQUE INDEX SCno ON SC(Sno ASC,Cno DESC);

#将SC表的SCno索引名改为SCSno 

#将SC表的SCno索引名改为SCSno
ALTER INDEX SCno RENAME TO SCSno;

 #删除Student表的Stusname索引

#删除Student表的Stusname索引
DROP INDEX Stusname;

#查询全体学生的学号与姓名 

#查询全体学生的学号与姓名
SELECT Sno,Sname FROM Student;

#查询全体学生的姓名、学号、所在系 

#查询全体学生的姓名、学号、所在系
SELECT Sname,Sno,Sdept FROM Student;

#查询全体学生的详细记录 

#查询全体学生的详细记录
SELECT * FROM Student;

#查询全体学生的姓名及其出生年份 

#查询全体学生的姓名及其出生年份
SELECT Sname,2014-Sage FROM Student;

#查询全体学生的姓名、出生年份和所在院系,要求用小写字母表示系名 

#查询全体学生的姓名、出生年份和所在院系,要求用小写字母表示系名
SELECT Sname,'Year of Birth:',2014-Sage,LOWER(Sdept) FROM Student;

#查询选修了课程的学生学号(相同的学号只允许出现一次) 

#查询选修了课程的学生学号(相同的学号只允许出现一次)
SELECT DISTINCT Sno FROM SC;

#查询计算机科学系全体学生的名单 

#查询计算机科学系全体学生的名单
SELECT Sname FROM Student WHERE Sdept='CS';

#查询所有年龄在20岁以下的学生姓名及其年龄 

#查询所有年龄在20岁以下的学生姓名及其年龄
SELECT Sname,Sage FROM Student WHERE Sage<20;

#查询考试成绩不及格的学生的学号 

#查询考试成绩不及格的学生的学号
SELECT DISTINCT Sno FROM SC WHERE Grade<60;

 #查询年龄在20~23岁之间的学生姓名、系别和年龄

#查询年龄在20~23岁之间的学生姓名、系别和年龄
SELECT Sname,Sdept,Sage FROM Student where Sage BETWEEN 20 AND 23;

#查询年龄不在20~23岁之间的学生姓名、系别和年龄 

#查询年龄不在20~23岁之间的学生姓名、系别和年龄
SELECT Sname,Sdept,Sage FROM Student WHERE Sage NOT BETWEEN 20 AND 23;

#查询计算机科学系(CS)、数学系(MA)和信息系(IS)学生的姓名和性别 

#查询计算机科学系(CS)、数学系(MA)和信息系(IS)学生的姓名和性别
SELECT Sname,Ssex FROM Student WHERE Sdept IN ('CS','MA','IS');

#查询既不是计算机科学系、数学系,也不是信息系的学生的姓名和性别 

#查询既不是计算机科学系、数学系,也不是信息系的学生的姓名和性别
SELECT Sname,Ssex FROM Student WHERE Sdept NOT IN('CS','MA','IS');

#查询学号为20215121的学生的详细情况 

#查询学号为20215121的学生的详细情况
SELECT * FROM Student WHERE Sno LIKE '20215121';

#查询所有姓刘的学生的姓名、学号和性别 

#查询所有姓刘的学生的姓名、学号和性别
SELECT Sname,Sno,Ssex FROM Student LIKE'刘%';

#查询姓“欧阳”且全名为三个汉字的学生的姓名 

#查询姓“欧阳”且全名为三个汉字的学生的姓名
SELECT Sname FROM Student WHERE Sname LIKE'欧阳__';

#查询名字中第二个字为“阳”的学生的姓名、学号和性别 

#查询名字中第二个字为“阳”的学生的姓名、学号和性别
SELECT Sname,Sno,Ssex FROM Student WHERE Sname LIKE'__阳%';

#查询所有不姓刘的学生的姓名、学号和性别 

#查询所有不姓刘的学生的姓名、学号和性别
SELECT Sname,Sno,Ssex FROM Student WHERE Sname NOT LIKE'刘%';

#查询DB_Design课程的课程号和学分 

#查询DB_Design课程的课程号和学分
SELECT Cno,Ccredit FROM Course WHERE Cname LIKE 'DB\_Design' ESCAPE'\';

#查询以"DB_"开头,且倒数第三个字符为i的课程的详细情况 

#查询以"DB_"开头,且倒数第三个字符为i的课程的详细情况
select * FROM Course WHERE Cname LIKE 'DB\_%i__'ESCAPE'\';

#某些学生选修课程后没有参加考试,所以有选课记录,但没有考试成绩,查询缺少成绩的学生的学号和相应的课程号 

#某些学生选修课程后没有参加考试,所以有选课记录,但没有考试成绩,
#查询缺少成绩的学生的学号和相应的课程号
SELECT Sno,Cno FROM SC WHERE Grade IS NULL;

#查询所有有成绩的学生学号和课程号 

#查询所有有成绩的学生学号和课程号
SELECT Sno,Cno FROM SC WHERE Grade IS NOT NULL;

#查询计算机科学系年龄在20岁以下的学生姓名 

#查询计算机科学系年龄在20岁以下的学生姓名
SELECT Sname FROM Student WHERE Sdept = 'CS' AND Sage<20;

#查询选修了3号课程的学生的学号及其成绩,查询结果按分数的降序排列 

#查询选修了3号课程的学生的学号及其成绩,查询结果按分数的降序排列
SELECT Sno,Score FROM SC WHERE Cno='3' ORDER BY Grade DESC;

#查询学生总数 

#查询学生总数
SELECT COUNT(*) FROM Student;

#查询选修了课程的学生人数 

#查询选修了课程的学生人数
SELECT COUNT(DISTINCT Sno) FROM SC;

#计算选修1号课程的学生平均成绩 

#计算选修1号课程的学生平均成绩
SELECT AVG(Grade) FROM SC WHERE Cno='1';

#查询选修1号课程的学生最高分数 

#查询选修1号课程的学生最高分数
SELECT MAX(Grade) FROM SC WHERE Cno='1';

#查询学生20125012选修课程的总学分数 

#查询学生20125012选修课程的总学分数
SELECT SUM(Ccredit) FROM SC,Course WHERE Sno='20125012' AND SC.Cno=Course.Cno;

#求各个课程号及相应的选课人数 

#求各个课程号及相应的选课人数
SELECT Cno,COUNT(Sno) FROM SC GROUP BY Cno;

#查询选修了三门以上课程的学生学号 

#查询选修了三门以上课程的学生学号
SELECT Sno FROM SC GROUP BY Sno HAVING COUNT(*)>3;

#查询平均成绩大于等于90分的学生学号和平均成绩 

#查询平均成绩大于等于90分的学生学号和平均成绩
SELECT Sno,AVG(Grade) FROM SC GROUP BY Sno HAVING AVG(Grade)>90;

#查询每个学生及其选修课程的情况 

#查询每个学生及其选修课程的情况
SELECT Student.*,SC.* FROM Student,SC WHERE Student.Sno=SC.Sno;

#查询每个学生及其选修课程的情况(用自然连接) 

#查询每个学生及其选修课程的情况(用自然连接)
SELECT Student.Sno,Sname,Ssex,Sage,Sdept,Cno,Grade FROM Student,SC WHERE Student.Sno=SC.Sno;

#查询选修2号课程且成绩在90分以上的所有学生的学号和姓名 

#查询选修2号课程且成绩在90分以上的所有学生的学号和姓名
SELECT Student.Sno,Sname FROM Student,SC WHERE Student.Sno=SC.Sno AND SC.Cno='2' AND SC.Grade>90;