建表語句
CREATE TABLE students
(sno VARCHAR(3) NOT NULL,
sname VARCHAR(4) NOT NULL,
ssex VARCHAR(2) NOT NULL,
sbirthday DATETIME,
class VARCHAR(5));
CREATE TABLE courses
(cno VARCHAR(5) NOT NULL,
cname VARCHAR(10) NOT NULL,
tno VARCHAR(10) NOT NULL);
CREATE TABLE scores
(sno VARCHAR(3) NOT NULL,
cno VARCHAR(5) NOT NULL,
degree NUMERIC(10, 1) NOT NULL);
CREATE TABLE teachers
(tno VARCHAR(3) NOT NULL,
tname VARCHAR(4) NOT NULL, tsex VARCHAR(2) NOT NULL,
tbirthday DATETIME NOT NULL, prof VARCHAR(6),
depart VARCHAR(10) NOT NULL);
插入數(shù)據(jù)
INSERT INTO students (SNO,SNAME,SSEX,SBIRTHDAY,CLASS) VALUES (108 ,'曾華' ,'男' ,'1977-09-01',95033);
INSERT INTO students (SNO,SNAME,SSEX,SBIRTHDAY,CLASS) VALUES (105 ,'匡明' ,'男' ,'1975-10-02',95031);
INSERT INTO students (SNO,SNAME,SSEX,SBIRTHDAY,CLASS) VALUES (107 ,'王麗' ,'女' ,'1976-01-23',95033);
INSERT INTO students (SNO,SNAME,SSEX,SBIRTHDAY,CLASS) VALUES (101 ,'李軍' ,'男' ,'1976-02-20',95033);
INSERT INTO students (SNO,SNAME,SSEX,SBIRTHDAY,CLASS) VALUES (109 ,'王芳' ,'女' ,'1975-02-10',95031);
INSERT INTO students (SNO,SNAME,SSEX,SBIRTHDAY,CLASS) VALUES (103 ,'陸君' ,'男' ,'1974-06-03',95031);
INSERT INTO courses(CNO,CNAME,TNO)VALUES ('3-105' ,'計算機導(dǎo)論',825);
INSERT INTO courses(CNO,CNAME,TNO)VALUES ('3-245' ,'操作系統(tǒng)' ,804);
INSERT INTO courses(CNO,CNAME,TNO)VALUES ('6-166' ,'數(shù)據(jù)電路' ,856);
INSERT INTO courses(CNO,CNAME,TNO)VALUES ('9-888' ,'高等數(shù)學(xué)' ,100);
INSERT INTO scores(SNO,CNO,DEGREE)VALUES (103,'3-245',86);
INSERT INTO scores(SNO,CNO,DEGREE)VALUES (105,'3-245',75);
INSERT INTO scores(SNO,CNO,DEGREE)VALUES (109,'3-245',68);
INSERT INTO scores(SNO,CNO,DEGREE)VALUES (103,'3-105',92);
INSERT INTO scores(SNO,CNO,DEGREE)VALUES (105,'3-105',88);
INSERT INTO scores(SNO,CNO,DEGREE)VALUES (109,'3-105',76);
INSERT INTO scores(SNO,CNO,DEGREE)VALUES (101,'3-105',64);
INSERT INTO scores(SNO,CNO,DEGREE)VALUES (107,'3-105',91);
INSERT INTO scores(SNO,CNO,DEGREE)VALUES (108,'3-105',78);
INSERT INTO scores(SNO,CNO,DEGREE)VALUES (101,'6-166',85);
INSERT INTO scores(SNO,CNO,DEGREE)VALUES (107,'6-106',79);
INSERT INTO scores(SNO,CNO,DEGREE)VALUES (108,'6-166',81);
INSERT INTO teachers(TNO,TNAME,TSEX,TBIRTHDAY,PROF,DEPART) VALUES (804,'李誠','男','1958-12-02','副教授','計算機系');
INSERT INTO teachers(TNO,TNAME,TSEX,TBIRTHDAY,PROF,DEPART) VALUES (856,'張旭','男','1969-03-12','講師','電子工程系');
INSERT INTO teachers(TNO,TNAME,TSEX,TBIRTHDAY,PROF,DEPART) VALUES (825,'王萍','女','1972-05-05','助教','計算機系');
INSERT INTO teachers(TNO,TNAME,TSEX,TBIRTHDAY,PROF,DEPART) VALUES (831,'劉冰','女','1977-08-14','助教','電子工程系');
題目
1、 查詢Student表中的所有記錄的Sname泣矛、Ssex和Class列短蜕。
2、 查詢教師所有的單位即不重復(fù)的Depart列河胎。
3、 查詢Student表的所有記錄。
4姆怪、 查詢Score表中成績在60到80之間的所有記錄也物。
5宫屠、 查詢Score表中成績?yōu)?5,86或88的記錄滑蚯。
6浪蹂、 查詢Student表中“95031”班或性別為“女”的同學(xué)記錄。
7告材、 以Class降序查詢Student表的所有記錄坤次。
8、 以Cno升序斥赋、Degree降序查詢Score表的所有記錄缰猴。
9、 查詢“95031”班的學(xué)生人數(shù)疤剑。
10滑绒、查詢Score表中的最高分的學(xué)生學(xué)號和課程號。
11隘膘、查詢‘3-105’號課程的平均分疑故。
12、查詢Score表中至少有5名學(xué)生選修的并以3開頭的課程的平均分數(shù)弯菊。
13纵势、查詢最低分大于70,最高分小于90的Sno列。
14钦铁、查詢所有學(xué)生的Sname软舌、Cno和Degree列。
15牛曹、查詢所有學(xué)生的Sno乙嘀、Cname和Degree列池户。
16撑毛、查詢所有學(xué)生的Sname恋腕、Cname和Degree列。
17焰手、查詢“95033”班所選課程的平均分糟描。
18、假設(shè)使用如下命令建立了一個grade表:
create table grade(low? number(3,0),upp? number(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');
commit;
現(xiàn)查詢所有同學(xué)的Sno书妻、Cno和rank列船响。
19、查詢選修“3-105”課程的成績高于“109”號同學(xué)成績的所有同學(xué)的記錄躲履。
20见间、查詢score中選學(xué)一門以上課程的同學(xué)中分數(shù)為非最高分成績的記錄。
21工猜、查詢成績高于學(xué)號為“109”米诉、課程號為“3-105”的成績的所有記錄。
22篷帅、查詢和學(xué)號為108的同學(xué)同年出生的所有學(xué)生的Sno史侣、Sname和Sbirthday列。
23魏身、查詢“張旭“教師任課的學(xué)生成績惊橱。
24、查詢選修某課程的同學(xué)人數(shù)多于5人的教師姓名箭昵。
25税朴、查詢95033班和95031班全體學(xué)生的記錄。
26家制、查詢存在有85分以上成績的課程Cno.
27正林、查詢出“計算機系“教師所教課程的成績表。
28颤殴、查詢“計算機系”與“電子工程系“不同職稱的教師的Tname和Prof觅廓。
29、查詢選修編號為“3-105“課程且成績至少高于選修編號為“3-245”的同學(xué)的Cno诅病、Sno和Degree,并按Degree從高到低次序排序哪亿。
30、查詢選修編號為“3-105”且成績高于選修編號為“3-245”課程的同學(xué)的Cno贤笆、Sno和Degree.
31蝇棉、查詢所有教師和同學(xué)的name、sex和birthday.
32芥永、查詢所有“女”教師和“女”同學(xué)的name篡殷、sex和birthday.
33、查詢成績比該課程平均成績低的同學(xué)的成績表埋涧。
34板辽、查詢所有任課教師的Tname和Depart.
35? 查詢所有未講課的教師的Tname和Depart.
36、查詢至少有2名男生的班號棘催。
37劲弦、查詢Student表中不姓“王”的同學(xué)記錄。
38醇坝、查詢Student表中每個學(xué)生的姓名和年齡邑跪。
39、查詢Student表中最大和最小的Sbirthday日期值呼猪。
40画畅、以班號和年齡從大到小的順序查詢Student表中的全部記錄。
41宋距、查詢“男”教師及其所上的課程轴踱。
42、查詢最高分同學(xué)的Sno谚赎、Cno和Degree列淫僻。
43、查詢和“李軍”同性別的所有同學(xué)的Sname.
44沸版、查詢和“李軍”同性別并同班的同學(xué)Sname.
45嘁傀、查詢所有選修“計算機導(dǎo)論”課程的“男”同學(xué)的成績表
1.查詢Student表中的所有記錄的Sname、Ssex和Class列视粮。
SELECT Sname,Ssex,Class
FROM Student;
2.查詢教師所有的單位即不重復(fù)的Depart列细办。
SELECT DISTINCT Depart
FROM teachers;
3.查詢Student表的所有記錄。
SELECT *
FROM students;
4.查詢Score表中成績在60到80之間的所有記錄蕾殴。
SELECT *
FROM scores
WHERE Degree BETWEEN 60 AND 80;
5.查詢Score表中成績?yōu)?5笑撞,86或88的記錄。
SELECT *
FROM scores
WHERE Degree IN (85,86,88);
6.查詢Student表中“95031”班或性別為“女”的同學(xué)記錄钓觉。
SELECT *
FROM students
WHERE Class='95031' OR Ssex='女';
7.以Class降序查詢Student表的所有記錄茴肥。
SELECT *
FROM students
ORDER BY Class DESC;
8.以Cno升序、Degree降序查詢Score表的所有記錄荡灾。
SELECT *
FROM scores
ORDER BY Cno,Degree DESC;
9.查詢“95031”班的學(xué)生人數(shù)瓤狐。
SELECT COUNT(1) AS StuNum
FROM students
WHERE Class='95031';
10.查詢Score表中的最高分的學(xué)生學(xué)號和課程號瞬铸。
SELECT Sno,Cno
FROM scores
ORDER BY Degree DESC
LIMIT 1;
11.查詢‘3-105’號課程的平均分。
SELECT AVG(Degree)
FROM scores
WHERE Cno='3-105';
12.查詢Score表中至少有5名學(xué)生選修的并以3開頭的課程的平均分數(shù)础锐。
SELECT Cno,AVG(Degree)
FROM scores
WHERE Cno LIKE '3%'
GROUP BY Cno
HAVING COUNT(Sno) >= 5;
13.查詢最低分大于70嗓节,最高分小于90的Sno列。
SELECT Sno
FROM scores
GROUP BY Sno
HAVING MAX(Degree)<90 AND MIN(Degree)>70;
14.查詢所有學(xué)生的Sname皆警、Cno和Degree列拦宣。
SELECT Sname,Cno,Degree
FROM students INNER JOIN scores
ON(students.Sno=scores.Sno)
ORDER BY Sname;
15.查詢所有學(xué)生的Sno、Cname和Degree列信姓。
SELECT Sno,Cname,Degree
FROM scores INNER JOIN courses
ON(scores.Cno=courses.Cno)
ORDER BY Sno;
16.查詢所有學(xué)生的Sname鸵隧、Cname和Degree列。
SELECT Sname,Cname,Degree
FROM students INNER JOIN scores
ON(students.Sno=scores.Sno) INNER JOIN courses
ON(scores.Cno=courses.Cno)
ORDER BY Sname;
17.查詢“95033”班所選課程的平均分意推。
SELECT Cname,AVG(Degree)
FROM students INNER JOIN scores
ON(students.Sno=scores.Sno) INNER JOIN courses
ON(scores.Cno=courses.Cno)
WHERE Class='95033'
GROUP BY courses.Cno
ORDER BY Cname;
18.假設(shè)使用如下命令建立了一個grade表:
CREATE TABLE grade(low TINYINT,upp TINYINT,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)查詢所有同學(xué)的Sno豆瘫、Cno和rank列。
SELECT Sno,Cno,rank
FROM scores INNER JOIN grade
ON(scores.Degree>=grade.low AND scores.Degree<=grade.upp)
ORDER BY Sno;
19.查詢選修“3-105”課程的成績高于“109”號同學(xué)成績的所有同學(xué)的記錄菊值。
SELECT s1.Sno,s1.Degree
FROM scores AS s1 INNER JOIN scores AS s2
ON(s1.Cno=s2.Cno AND s1.Degree>s2.Degree)
WHERE s1.Cno='3-105' AND s2.Sno='109'
ORDER BY s1.Sno;
20.查詢score中選學(xué)一門以上課程的同學(xué)中分數(shù)為非最高分成績的記錄靡羡。
SELECT *
FROM scores
GROUP BY Sno
HAVING COUNT(cno)>1 AND Degree!=MAX(Degree);
21.查詢成績高于學(xué)號為“109”、課程號為“3-105”的成績的所有記錄俊性。
SELECT s1.Sno,s1.Degree
FROM scores AS s1 INNER JOIN scores AS s2
ON(s1.Cno=s2.Cno AND s1.Degree>s2.Degree)
WHERE s1.Cno='3-105' AND s2.Sno='109'
ORDER BY s1.Sno;
22.查詢和學(xué)號為108的同學(xué)同年出生的所有學(xué)生的Sno略步、Sname和Sbirthday列。
SELECT s1.Sno,s1.Sname,s1.Sbirthday
FROM students AS s1 INNER JOIN students AS s2
ON(YEAR(s1.Sbirthday)=YEAR(s2.Sbirthday))
WHERE s2.Sno='108';
23.查詢“張旭“教師任課的學(xué)生成績定页。
SELECT Sno,Degree
FROM scores INNER JOIN courses
ON(scores.Cno=courses.Cno) INNER JOIN teachers
ON(courses.Tno=teachers.Tno)
WHERE teachers.Tname='張旭';
24.查詢選修某課程的同學(xué)人數(shù)多于5人的教師姓名趟薄。
SELECT DISTINCT Tname
FROM scores INNER JOIN courses
ON(scores.Cno=courses.Cno) INNER JOIN teachers
ON(courses.Tno=teachers.Tno)
WHERE courses.Cno IN(SELECT Cno FROM scores GROUP BY(Cno) HAVING COUNT(Sno)>5);
25.查詢95033班和95031班全體學(xué)生的記錄。
SELECT *
FROM students
WHERE Class IN ('95033','95031')
ORDER BY Class;
26.查詢存在有85分以上成績的課程Cno.
SELECT DISTINCT Cno
FROM scores
WHERE Degree>85;
27.查詢出“計算機系“教師所教課程的成績表典徊。
SELECT Tname,Cname,SName,Degree
FROM teachers INNER JOIN courses
ON(teachers.Tno=courses.Tno) INNER JOIN scores
ON(courses.Cno=scores.Cno) INNER JOIN students
ON(scores.Sno=students.Sno)
WHERE teachers.Depart='計算機系'
ORDER BY Tname,Cname,Degree DESC;
28.查詢“計算機系”與“電子工程系“不同職稱的教師的Tname和Prof杭煎。
SELECT Tname,Prof
FROM teachers
WHERE Depart='計算機系' AND Prof NOT IN(
? ? SELECT DISTINCT Prof
? ? FROM teachers
? ? WHERE Depart='電子工程系');
29.查詢選修編號為“3-105“課程且成績至少高于任意選修編號為“3-245”的同學(xué)的成績的Cno、Sno和Degree,并按Degree從高到低次序排序卒落。
SELECT Cno,Sno,Degree
FROM scores
WHERE Cno='3-105' AND Degree > ANY(
? ? SELECT Degree
? ? FROM scores
? ? WHERE Cno='3-245')
ORDER BY Degree DESC;
30.查詢選修編號為“3-105”且成績高于所有選修編號為“3-245”課程的同學(xué)的Cno羡铲、Sno和Degree.
SELECT Cno,Sno,Degree
FROM scores
WHERE Cno='3-105' AND Degree > ALL(
? ? SELECT Degree
? ? FROM scores
? ? WHERE Cno='3-245')
ORDER BY Degree DESC;
31.查詢所有教師和同學(xué)的name、sex和birthday.
SELECT Sname,Ssex,Sbirthday
FROM students
UNION
SELECT Tname,Tsex,Tbirthday
FROM teachers;
32.查詢所有“女”教師和“女”同學(xué)的name儡毕、sex和birthday.
SELECT Sname,Ssex,Sbirthday
FROM students
WHERE Ssex='女'
UNION
SELECT Tname,Tsex,Tbirthday
FROM teachers
WHERE Tsex='女';
33.查詢成績比該課程平均成績低的同學(xué)的成績表也切。
SELECT s1.*
FROM scores AS s1 INNER JOIN (
? ? SELECT Cno,AVG(Degree) AS aDegree
? ? FROM scores
? ? GROUP BY Cno) s2
ON(s1.Cno=s2.Cno AND s1.Degree<s2.aDegree);
34.查詢所有任課教師的Tname和Depart.
SELECT Tname,Depart
FROM teachers
WHERE Tno IN(
? ? SELECT Tno
? ? FROM courses
);
35.查詢所有未講課的教師的Tname和Depart.
SELECT Tname,Depart
FROM teachers
WHERE Tno NOT IN(
? ? SELECT Tno
? ? FROM courses
);
36.查詢至少有2名男生的班號。
SELECT Class,COUNT(1) AS boyCount
FROM students
WHERE Ssex='男'
GROUP BY Class
HAVING boyCount>=2;
37.查詢Student表中不姓“王”的同學(xué)記錄腰湾。
SELECT *
FROM students
WHERE Sname NOT LIKE '王%';
38.查詢Student表中每個學(xué)生的姓名和年齡雷恃。
SELECT Sname,YEAR(NOW())-YEAR(Sbirthday) AS Sage
FROM students;
39.查詢Student表中最大和最小的Sbirthday日期值。
SELECT MIN(Sbirthday),MAX(Sbirthday)
FROM students;
40.以班號和年齡從大到小的順序查詢Student表中的全部記錄费坊。
SELECT *
FROM students
ORDER BY Class DESC,Sbirthday ASC;
41.查詢“男”教師及其所上的課程倒槐。
SELECT teachers.Tname,courses.Cname
FROM teachers INNER JOIN courses
ON(teachers.Tno=courses.Tno)
WHERE teachers.Tsex='男';
42.查詢最高分同學(xué)的Sno、Cno和Degree列附井。
SELECT *
FROM scores
GROUP BY Cno
HAVING Degree=Max(Degree);
43.查詢和“李軍”同性別的所有同學(xué)的Sname.
SELECT s1.Sname
FROM students AS s1 INNER JOIN students AS s2
ON(s1.Ssex=s2.Ssex)
WHERE s2.Sname='李軍';
44.查詢和“李軍”同性別并同班的同學(xué)Sname.
SELECT s1.Sname
FROM students AS s1 INNER JOIN students AS s2
ON(s1.Ssex=s2.Ssex AND s1.Class=s2.Class)
WHERE s2.Sname='李軍';
45.查詢所有選修“計算機導(dǎo)論”課程的“男”同學(xué)的成績表
SELECT *
FROM scores
WHERE Sno IN (
? ? SELECT Sno
? ? FROM students
? ? WHERE Ssex='男') AND
? ? Cno IN (
? ? SELECT Cno
? ? FROM courses
? ? WHERE Cname='計算機導(dǎo)論');