1. 程式人生 > >MySQL練習1

MySQL練習1

來源網路,整理後分享

上面是表結構,teacher是老師表,student是學生表,course是課程表,其中TNO欄位是任課老師的編號,SCORE是成績表,其中SNO欄位為學生編號,CNO欄位為課程編號,grade為分數評判表,如90~100分為A,80~89分為B


匯入SQL語句:

DROP DATABASE IF EXISTS test;
CREATE DATABASE test;
use test;

CREATE TABLE STUDENT
(SNO VARCHAR(3) NOT NULL primary key,
SNAME VARCHAR(4) NOT NULL,
SSEX VARCHAR(2) NOT NULL,
SBIRTHDAY DATETIME,
CLASS VARCHAR(5)) default charset=utf8;

CREATE TABLE TEACHER
(TNO VARCHAR(3) NOT NULL primary key,
TNAME VARCHAR(4) NOT NULL, TSEX VARCHAR(2) NOT NULL,
TBIRTHDAY DATETIME NOT NULL, PROF VARCHAR(6),
DEPART VARCHAR(10) NOT NULL) default charset=utf8;

CREATE TABLE COURSE
(CNO VARCHAR(5) NOT NULL primary key,
CNAME VARCHAR(10) NOT NULL,
TNO VARCHAR(3) NOT NULL,
foreign key(TNO) references TEACHER(TNO)) default charset=utf8;

CREATE TABLE SCORE
(SNO VARCHAR(3) NOT NULL,
CNO VARCHAR(5) NOT NULL,
DEGREE NUMERIC(10, 1) NOT NULL,
primary key(sno, cno),
foreign key(SNO) references STUDENT(SNO),
foreign key(CNO) references COURSE(CNO)
) default charset=utf8;


create table grade(
    low int(3),
    upp int(3),
    rank char(1));



INSERT INTO STUDENT (SNO,SNAME,SSEX,SBIRTHDAY,CLASS) VALUES ('108' ,'曾華'
,'男' ,'1977-09-01','95033');
INSERT INTO STUDENT (SNO,SNAME,SSEX,SBIRTHDAY,CLASS) VALUES ('105' ,'匡明'
,'男' ,'1975-10-02','95031');
INSERT INTO STUDENT (SNO,SNAME,SSEX,SBIRTHDAY,CLASS) VALUES ('107' ,'王麗'
,'女' ,'1976-01-23','95033');
INSERT INTO STUDENT (SNO,SNAME,SSEX,SBIRTHDAY,CLASS) VALUES ('101' ,'李軍'
,'男' ,'1976-02-20','95033');
INSERT INTO STUDENT (SNO,SNAME,SSEX,SBIRTHDAY,CLASS) VALUES ('109' ,'王芳'
,'女' ,'1975-02-10','95031');
INSERT INTO STUDENT (SNO,SNAME,SSEX,SBIRTHDAY,CLASS) VALUES ('103' ,'陸君'
,'男' ,'1974-06-03','95031');

INSERT INTO TEACHER(TNO,TNAME,TSEX,TBIRTHDAY,PROF,DEPART)
VALUES ('804','李誠','男','1958-12-02','副教授','計算機系');
INSERT INTO TEACHER(TNO,TNAME,TSEX,TBIRTHDAY,PROF,DEPART)
VALUES ('856','張旭','男','1969-03-12','講師','電子工程系');
INSERT INTO TEACHER(TNO,TNAME,TSEX,TBIRTHDAY,PROF,DEPART)
VALUES ('825','王萍','女','1972-05-05','助教','計算機系');
INSERT INTO TEACHER(TNO,TNAME,TSEX,TBIRTHDAY,PROF,DEPART)
VALUES ('831','劉冰','女','1977-08-14','助教','電子工程系');

INSERT INTO COURSE(CNO,CNAME,TNO)VALUES ('3-105' ,'計算機導論','825');
INSERT INTO COURSE(CNO,CNAME,TNO)VALUES ('3-245' ,'作業系統' ,'804');
INSERT INTO COURSE(CNO,CNAME,TNO)VALUES ('6-166' ,'資料電路' ,'856');
INSERT INTO COURSE(CNO,CNAME,TNO)VALUES ('9-888' ,'高等數學' ,'825');

INSERT INTO SCORE(SNO,CNO,DEGREE)VALUES ('103','3-245',86);
INSERT INTO SCORE(SNO,CNO,DEGREE)VALUES ('105','3-245',75);
INSERT INTO SCORE(SNO,CNO,DEGREE)VALUES ('109','3-245',68);
INSERT INTO SCORE(SNO,CNO,DEGREE)VALUES ('103','3-105',92);
INSERT INTO SCORE(SNO,CNO,DEGREE)VALUES ('105','3-105',88);
INSERT INTO SCORE(SNO,CNO,DEGREE)VALUES ('109','3-105',76);
INSERT INTO SCORE(SNO,CNO,DEGREE)VALUES ('101','3-105',64);
INSERT INTO SCORE(SNO,CNO,DEGREE)VALUES ('107','3-105',91);
INSERT INTO SCORE(SNO,CNO,DEGREE)VALUES ('108','3-105',78);
INSERT INTO SCORE(SNO,CNO,DEGREE)VALUES ('101','6-166',85);
INSERT INTO SCORE(SNO,CNO,DEGREE)VALUES ('107','6-166',79);
INSERT INTO SCORE(SNO,CNO,DEGREE)VALUES ('108','6-166',81);

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');

練習題目:

1、 查詢Student表中的所有記錄的Sname、Ssex和Class列。
2、 查詢教師所有的單位即不重複的Depart列。
3、 查詢Student表的所有記錄。
4、 查詢Score表中成績在60到80之間的所有記錄。
5、 查詢Score表中成績為85,86或88的記錄。
6、 查詢Student表中“95031”班或性別為“女”的同學記錄。
7、 以Class降序查詢Student表的所有記錄。
8、 以Cno升序、Degree降序查詢Score表的所有記錄。
9、 查詢“95031”班的學生人數。
10、查詢Score表中的最高分的學生學號和課程號。
11、查詢‘3-105’號課程的平均分。
12、查詢Score表中至少有5名學生選修的並以3開頭的課程的Cno和該課程平均分數。
13、查詢最低分大於70,最高分小於90的Sno列。
14、查詢所有學生的Sname、Cno和Degree列。
15、查詢所有學生的Sno、Cname和Degree列。
16、查詢所有學生的Sname、Cname和Degree列。
17、查詢“95033”班所選課程的平均分。
18、查詢所有同學的Sno、Cno和rank列。    
19、查詢選修“3-105”課程的成績高於“109”號同學該課程成績的所有同學的sno。
20、查詢score中選學一門以上課程的同學中分數為不是該課程中最高分成績的sno, cno,
degree。
21、查詢成績高於學號為“109”、課程號為“3-105”的成績的sno, cno, degree。
22、查詢和學號為108的同學同年出生的所有學生的Sno、Sname和Sbirthday列。
23、查詢“張旭“教師任課的學生sno,課程cno,成績degree。
24、查詢選修某課程的同學人數多於5人的教師姓名。
25、查詢95033班和95031班全體學生的記錄。
26、查詢存在有85分以上成績的課程Cno.
27、查詢出“計算機系“教師所教課程的成績表。
28、查詢“計算機系”的教師中與“電子工程系“教師不同職稱的Tname和Prof。
29、查詢所有教師和同學的name、sex和birthday.
30、查詢所有“女”教師和“女”同學的name、sex和birthday.
31、查詢成績比該課程平均成績低的同學的成績表。
32、查詢所有任課教師的Tname和Depart.
33  查詢所有未講課的教師的Tname和Depart.
34、查詢至少有2名男生的班號。
35、查詢Student表中不姓“王”的同學記錄。
36、查詢Student表中每個學生的姓名和年齡。
37、查詢Student表中最大和最小的Sbirthday的學生sname, sbirthday。
38、以班號從大到小和年齡從大到小的順序查詢Student表中的sname, class, 年齡。
39、查詢“男”教師及其所上的課程。
40、查詢最高分同學的Sno、Cno和Degree列。
41、查詢和“李軍”同性別的所有同學的Sname.
42、查詢和“李軍”同性別並同班的同學Sname.
43、查詢所有選修“計算機導論”課程的“男”同學的成績表

參考答案下載:https://download.csdn.net/download/hielw/10368639