數(shù)據(jù)庫SQL語句練習題
一、
設有一數(shù)據(jù)庫,包括四個表:學生表(Student)、課程表(Course)、成績表(Score)以及教師信息表(Teacher)。四個表的結構分別如表1-1的表(一)~表(四)所示,數(shù)據(jù)如表1-2的表(一)~表(四)所示。用SQL語句創(chuàng)建四個表并完成相關題目。 表1-1數(shù)據(jù)庫的表結構
表(一)Student
屬性名 |
數(shù)據(jù)類型 |
可否為空 |
含 義 |
Sno |
Char(3) |
否 |
學號(主碼) |
Sname |
Char(8) |
否 |
學生姓名 |
Ssex |
Char(2) |
否 |
學生性別 |
Sbirthday |
datetime |
可 |
學生出生年月 |
Class |
Char(5) |
可 |
學生所在班級 |
創(chuàng)建表:Create table Student
(Sno Char(3),
Sname Char(8),
Ssex Char(2),
Sbirthday datetime,
Class Char(5))
表(二)Course
屬性名 |
數(shù)據(jù)類型 |
可否為空 |
含 義 |
Cno |
Char(5) |
否 |
課程號(主碼) |
Cname |
Varchar(10) |
否 |
課程名稱 |
Tno |
Char(3) |
否 |
教工編號(外碼) |
創(chuàng)建表:Create table Course
(Cno Char(5),
Cname Varchar(10),
Tno Char(3))
表(三)Score
屬性名 |
數(shù)據(jù)類型 |
可否為空 |
含 義 |
Sno |
Char(3) |
否 |
學號(外碼) |
Cno |
Char(5) |
否 |
課程號(外碼) |
Degree |
Decimal(4,1) |
可 |
成績 |
主碼:Sno+ Cno |
創(chuàng)建表:Create table Score
(Sno Char(3),
Cno Char(5),
Degree Decimal(4,1))
表(四)Teacher
屬性名 |
數(shù)據(jù)類型 |
可否為空 |
含 義 |
Tno |
Char(3) |
否 |
教工編號(主碼) |
Tname |
Char(4) |
否 |
教工姓名 |
Tsex |
Char(2) |
否 |
教工性別 |
Tbirthday |
datetime |
可 |
教工出生年月 |
Prof |
Char(6) |
可 |
職稱 |
Depart |
Varchar(10) |
否 |
教工所在部門 |
創(chuàng)建表:Create table Teacher
(Tno Char(3),
Tname Char(4),
Tsex Char(2),
Tbirthday datetime,
Prof Char(6),
Depart Varchar(10))
表1-2數(shù)據(jù)庫中的數(shù)據(jù)
表(一)Student
Sno |
Sname |
Ssex |
Sbirthday |
class |
108 |
曾華 |
男 |
1977-09-01 |
95033 |
105 |
匡明 |
男 |
1975-10-02 |
95031 |
107 |
王麗 |
女 |
1976-01-23 |
95033 |
101 |
李軍 |
男 |
1976-02-20 |
95033 |
109 |
王芳 |
女 |
1975-02-10 |
95031 |
103 |
陸君 |
男 |
1974-06-03 |
95031 |
插入行數(shù)據(jù):Insert into xx1 (Sno,Sname,Ssex,sbirthday,class)
values (108,'曾華','男',1977-09-01,95033),
(105,'匡明','男',1975-10-02,95031),
(107,'王麗','女',1976-01-23,95033),
(101,'李軍','男',1976-02-20,95033),
(109,'王芳','女',1975-02-10,95031),
(103,'陸君','男',1974-06-03,95031);
表(二)Course
Cno |
Cname |
Tno |
3-105 |
計算機導論 |
825 |
3-245 |
操作系統(tǒng) |
804 |
6-166 |
數(shù)字電路 |
856 |
9-888 |
高等數(shù)學 |
831 |
插入行數(shù)據(jù):Insert into Course (Cno,Cname,Tno)
values ('3-105','計算機導論',825),
('3-245','操作系統(tǒng)',804),
('6-166','數(shù)字電路',856),
('9-888','高等數(shù)學',831);
表(三)Score
Sno |
Cno |
Degree |
103 |
3-245 |
86 |
105 |
3-245 |
75 |
109 |
3-245 |
68 |
103 |
3-105 |
92 |
105 |
3-105 |
88 |
109 |
3-105 |
76 |
101 |
3-105 |
64 |
107 |
3-105 |
91 |
108 |
3-105 |
78 |
101 |
6-166 |
85 |
107 |
6-166 |
79 |
108 |
6-166 |
81 |
插入行數(shù)據(jù):Insert into Score (Sno,Cno,Degree)
values (103,'3-245',86),
(105,'3-245',75),
(109,'3-245',68),
(103,'3-105',92),
(105,'3-105',88),
(109,'3-105',76),
(101,'3-105',64),
(107,'3-105',91),
(108,'3-105',78),
(101,'6-166',85),
(107,'6-166',79),
(108,'6-166',81);
表(四)Teacher
Tno |
Tname |
Tsex |
Tbirthday |
Prof |
Depart |
804 |
李誠 |
男 |
1958-12-02 |
副教授 |
計算機系 |
856 |
張旭 |
男 |
1969-03-12 |
講師 |
電子工程系 |
825 |
王萍 |
女 |
1972-05-05 |
助教 |
計算機系 |
831 |
劉冰 |
女 |
1977-08-14 |
助教 |
電子工程系 |
插入行數(shù)據(jù):Insert into Teacher (Tno,Tname,Tsex,Tbirthday,Prof,Depart)
values
(804,'李誠','男',1958-12-02,'副教授','計算機系'),
(856,'張旭','男',1969-03-12,'講師','電子工程系'),
(825,'王萍','女',1972-05-05,'助教','計算機系'),
(831,'劉冰','女',1977-08-14,'助教','電子工程系');
==================================================
1、 查詢Student表中的所有記錄的Sname、Ssex和Class列。
2、 查詢教師所有的單位即不重復的Depart列。
3、 查詢Student表的所有記錄。
4、 查詢Score表中成績在60到80之間的所有記錄。
5、 查詢Score表中成績?yōu)?5,86或88的記錄。
6、 查詢Student表中“95031”班或性別為“女”的同學記錄。
7、 以Class降序查詢Student表的所有記錄。
8、 以Cno升序、Degree降序查詢Score表的所有記錄。
==================================================
9、 查詢“95031”班的學生人數(shù)。
10、查詢Score表中的最高分的學生學號和課程號。
11、 查詢每門課的平均成績
12、查詢‘3-105’號課程的平均分。
13、查詢Score表中至少有5名學生選修的并以3開頭的課程的平均分數(shù)。
13、查詢分數(shù)大于70,最小于90的Sno列。
==============================================================
14、查詢所有學生的Sname、Cno和Degree列。
15、查詢所有學生的Sno、Cname和Degree列。
16、查詢所有學生的Sname、Cname和Degree列。
17、查詢“95033”班所選課程的平均分。
18、 假設使用如下命令建立了一個grade表:
create table grade(low int(3),upp int(3),rank char(1))
insert into grade values(90,100,’A’)
insert into grade values(80,89,’B’)
insert into grade values(70,79,’C’)
insert into grade values(60,69,’D’)
insert into grade values(0,59,’E’)
現(xiàn)查詢所有同學的Sno、Cno和rank列。
19、查詢選修“3-105”課程的成績高于“109”號同學成績的所有同學的記錄。
20、查詢score中選學多門課程的同學中分數(shù)為非最高分成績的記錄。
21、查詢成績高于學號為“109”、課程號為“3-105”的成績的所有記錄。
22、查詢和學號為108的同學同年出生的所有學生的Sno、Sname和Sbirthday列。
23、查詢“張旭“教師任課的學生成績。
24、查詢選修某課程的同學人數(shù)多于5人的教師姓名。
25、查詢95033班和95031班全體學生的記錄。
26、查詢存在有85分以上成績的課程Cno.
27、查詢出“計算機系“教師所教課程的成績表。
28、查詢“計算機系”與“電子工程系“不同職稱的教師的Tname和Prof。
29、查詢選修編號為“3-105“課程且成績至少高于選修編號為“3-245”的同學的Cno、Sno和Degree,并按Degree從高到低次序排序。
30、查詢選修編號為“3-105”且成績高于選修編號為“3-245”課程的同學的Cno、Sno和Degree.
31、查詢所有教師和同學的name、sex和birthday.
32、查詢所有“女”教師和“女”同學的name、sex和birthday.
33、查詢成績比該課程平均成績低的同學的成績表。
34、查詢所有任課教師的Tname和Depart.
35 查詢所有未講課的教師的Tname和Depart.
36、查詢至少有2名男生的班號。
37、查詢Student表中不姓“王”的同學記錄。
38、查詢Student表中每個學生的姓名和年齡。
39、查詢Student表中最大和最小的Sbirthday日期值。
40、以班號和年齡從大到小的順序查詢Student表中的全部記錄。
41、查詢“男”教師及其所上的課程。
42、查詢最高分同學的Sno、Cno和Degree列。
43、查詢和“李軍”同性別的所有同學的Sname.
44、查詢和“李軍”同性別并同班的同學Sname.
45、查詢所有選修“計算機導論”課程的“男”同學的成績表。