五十个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;

  • 3
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
Student(S#,Sname,Sage,Ssex) 学生表 Course(C#,Cname,T#) 课程表 SC(S#,C#,score) 成绩表 Teacher(T#,Tname) 教师表 问题: 1、查询“001”课程比“002”课程成绩高的所有学生的学号; select a.S# from (select s#,score from SC where C#='001') a,(select s#,score from SC where C#='002') b where a.score>b.score and a.s#=b.s#; 2、查询平均成绩大于60分的同学的学号和平均成绩; select S#,avg(score) from sc group by S# having avg(score) >60; 3、查询所有同学的学号、姓名、选课数、总成绩; select Student.S#,Student.Sname,count(SC.C#),sum(score) from Student left Outer join SC on Student.S#=SC.S# group by Student.S#,Sname 4、查询姓“李”的老师的个数; select count(distinct(Tname)) from Teacher where Tname like '李%'; 5、查询没学过“叶平”老师课的同学的学号、姓名; select Student.S#,Student.Sname from Student where S# not in (select distinct( SC.S#) from SC,Course,Teacher where SC.C#=Course.C# and Teacher.T#=Course.T# and Teacher.Tname='叶平'); 6、查询学过“001”并且也学过编号“002”课程的同学的学号、姓名; select Student.S#,Student.Sname from Student,SC where Student.S#=SC.S# and SC.C#='001'and exists( Select * from SC as SC_2 where SC_2.S#=SC.S# and SC_2.C#='002'); 7、查询学过“叶平”老师所教的所有课的同学的学号、姓名; select S#,Sname from Student where S# in (select S# from SC ,Course ,Teacher where SC.C#=Course.C# and Teacher.T#=Course.T# and Teacher.Tname='叶平' group by S# having count(SC.C#)=(select count(C#) from Course,Teacher where Teacher.T#=Course.T# and Tname='叶平')); 8、查询课程编号“002”的成绩比课程编号“001”课程低的所有同学的学号、姓名; Select S#,Sname from (select Student.S#,Student.Sname,score ,(select score from SC SC_2 where SC_2.S#=Student.S# and SC_2.C#='002') score2 from Student,SC where Student.S#=SC.S# and C#='001') S_2 where score2 60); 10、查询没有学全所有课的同学的学号、姓名; select Student.S#,Student.Sname from Student,SC where Student.S#=SC.S# group by Student.S#,Student.Sname having count(C#) <(select count(C#) from Course); 11、查询至

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

战士小小白

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值