数据库SQL语句的练习

练习数据库操作

  1 1.查询学生选课表中的全部数据1
  2 select * from SC
  3 2.查询计算机系的学生的姓名、年龄。
  4 select Sname, Sage from Student
  5 where Sdept = '计算机系'
  6 3.查询成绩在70~80分之间的学生的学号、课程号和成绩。
  7 select Sno, Cno, Grade from SC
  8 where 70<= Grade and Grade<= 80
  9 4.查询计算机系年龄在18~20之间且性别为“男”的学生的姓名、年龄。
 10 select Sname, Sage, Ssex from Student
 11 where Sdept = '计算机系' and Sage between 18 and 20 and Ssex = '男'
 12 5.查询课程号为“c001”的课程的最高的分数
 13 select top 1 Grade from SC
 14 where Cno = 'c001'
 15 6.查询计算机系学生的最大年龄和最小年龄。
 16 select max(Sage) 最大年龄, min(Sage) 最小年龄 from Student
 17 where Sdept = '计算机系'
 18 7.统计每个系的学生人数。
 19 select Sdept, count(Sno) 学生人数 from Student
 20 group by Sdept
 21 8.统计每门课程的选课人数和考试最高分。
 22 select Cno,count(Sno) 选课人数, max(Grade) 考试最高分 from SC
 23 group by Cno
 24 9.统计每个学生的选课门数和考试总成绩,并按选课门数升序显示结果。
 25 select Sno, count(*) 选课门数, sum(Grade) 考试总成绩 from SC
 26 group by Sno
 27 order by count(*)
 28 10.查询总成绩超过200分的学生,要求列出学号、总成绩。
 29 select Sno, sum(Grade) 总成绩 from SC
 30 group by Sno
 31 having sum(Grade)> 200
 32 11.查询选修了“c002”号课程的学生的姓名和所在系。
 33 select Sname, Sdept from Student
 34 join SC on Student.Sno = SC.Sno
 35 where Cno = 'c002'
 36 12.查询成绩80分以上的学生的姓名、课程号和成绩,并按成绩降序排列结果。
 37 select Sname, Cno, Grade from SC
 38 join Student S on S.Sno = SC.Sno
 39 where Grade>= 80
 40 order by Grade desc
 41 13.查询哪些学生没有选课,要求列出学号、姓名和所在系。
 42 select S.Sno, Sname, Sdept from Student S
 43 left join SC on S.Sno = SC.Sno
 44 where SC.Sno is NULL
 45 14.查询与Java在同一学期开设的课程的课程名和开课学期。
 46 select distinct C1.Cname, C1.Semester from Course C1
 47 join Course C2 on C1.Semester = C2.Semester
 48 where C2.Semester = 3
 49 15.查询与李勇年龄相同的学生的姓名、所在系和年龄。
 50 子查询
 51 select Sname, Sdept, Sage from Student
 52 where Sage in(
 53     select Sage from Student
 54     where Sname = '李勇')
 55     and Sname != '李勇'
 56 自连接
 57 select S1.Sname, S1.Sdept, S1.Sage from Student S1
 58 join Student S2 on S1.Sage = S2.Sage
 59 where S2.Sname = '李勇' and S1.Sname != '李勇'
 60 16.用子查询实现如下查询:
 61 (1)查询选修了“c001”号课程的学生的姓名和所在系。
 62 select Sname, Sdept from Student
 63 where Sno in(
 64     select Sno from SC
 65     where Cno = 'c001')
 66 (2)查询数学系成绩80分以上的学生的学号、姓名、课程号和成绩。
 67 select S.Sno, Sname, Cno, Grade from Student S
 68 join SC on S.Sno = SC.Sno
 69 where S.Sno in(
 70     select Sno from Student
 71     where Sdept = '数学系'and Grade>= 80)
 72 (3)查询计算机系考试成绩最高的学生的姓名。
 73 select Sname from Student S
 74 join SC on S.Sno = SC.Sno
 75 where Sdept = '计算机系'
 76 and Grade in(                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            
 77     select max(Grade) from SC
 78     where Sdept = '计算机系')
 79 
 80 (4)查询数据结构考试成绩最高的学生的姓名、所在系、性别和成绩。
 81 select Sname, Sdept, Ssex, Grade from Student S
 82 join SC on S.Sno = SC.Sno
 83 join Course C on SC.Cno = C.Cno
 84 where C.Cname = '数据结构'
 85 and Grade in(
 86     select max(Grade) from SC
 87     where Cname = '数据结构')
 88 17.查询没有选修Java课程的学生的姓名和所在系。
 89 select Sname, Sdept from Student
 90 where Sno not in(
 91     select Sno from SC
 92     join Course on SC.Cno = Course.Cno
 93     where Cname = 'Java')
 94 18.查询计算机系没有选课的学生的姓名和性别。
 95 select Sname, Ssex from Student S
 96 left join SC on S.Sno = SC.Sno
 97 where Sdept = '计算机系' and SC.Cno is NULL
 98 19.创建一个新表,表名为test_1,其结构为(COL1,COL2,COL3),其中:
 99     COL1:整型,允许空值。
100     COL2:字符型,长度为10,不允许空值。
101     COL3:字符型,长度为10,允许空值。
102     试写出按行插入如下数据的语句(空白处表示空值)。
103 Create table       test_1(                                                                                                                                                                                   
104 COL1    int,
105 COL2    char(10)    not null,
106 COL3    char(10),
107 )
108  
109 insert into test_1(COL2) values('B1')
110 insert into test_1 values(1, 'B2', 'C2')
111 insert into test_1 values(2, 'B3', NULL)
112 20.删除考试成绩低于50分的学生的选课记录。
113 delete from SC
114 where Grade< 50
115 还原数据
116 insert into SC values(1531101, 'c007', 45)
117 21.删除没有人选的课程记录。
118 delete from Course
119 where Cno not in(select Cno from SC)
120 还原数据
121 insert  into    Course values('c004','大学英语',6,2)
122 insert  into    Course values('c010','计算机网络',5,6)
123 22.删除计算机系Java成绩不及格学生的Java选课记录。
124 delete from SC
125 where Grade< 60 and Sno in(
126     select Sno from Student
127     where Sdept = '计算机系')
128     and Cno in(
129         select Cno from Course
130         where Cname = 'Java')
131 23.将第2学期开设的所有课程的学分增加2分。
132 update Course set Credit = Credit+ 2
133 where Semester in(
134     select Semester from Course
135     where Semester = '2')
136 还原数据
137 update Course set Credit = Credit- 2
138 where Semester = '2'
139 24.将Java课程的学分改为3分。
140 update Course set Credit = 3
141 where Cname = 'Java'
142 还原数据
143 update Course set Credit = 2
144 where Cname = 'Java'
145 25.将计算机系学生的年龄增加1岁。
146 update Student set Sage = Sage+ 1
147 where Sdept = '计算机系'
148 还原数据
149 update Student set Sage = Sage- 1
150 where Sdept = '计算机系'
151 26.将信息系学生的“计算机文化学”课程的考试成绩加5分。
152 子查询
153 update SC set Grade = Grade+ 5
154 where Sno in(
155     select Sno from Student
156     where Sdept = '信息系')
157     and Cno in(
158     select Cno from Course
159     where Cname = '计算机文化学')
160 多表连接
161 update SC set Grade = Grade+ 5
162 from SC join Student S on SC.Sno = S.Sno
163 join Course C on SC.Cno = C.Cno
164 where Sdept = '信息系' and Cname = '计算机文化学' 
165 还原数据
166 update SC set Grade = 82
167 where Sno = '1521102' and Cno = 'c001'
168 27.查询每个系年龄大于等于20的学生人数,并将结果保存到一个新永久表Dept_ Age中。
169 select Sdept, count(*) 学生人数 into Dept_Age from Student
170 where Sage>= 20
171 group by Sdept

 

posted @ 2023-05-24 21:27  旺旺大菠萝  阅读(588)  评论(0编辑  收藏  举报