SQL語句練習

一、已知有如下表,請用sql語句在mysql里建立相應的表

表1 學生表(student)

列名 意義 類型 約束
sno 學號 varchar(3) 主鍵
sname 姓名 varchar(10) 非空
ssex 性別 varchar(3)
sbirthday 生日 datetime
class 班級編號 varchar(5) 非空

表2 課程表(course)

列名 意義 類型 約束
cno 課程號 varchar(10) 主鍵
cname 課程名 varchar(30) 非空
tno 教師編號 varchar(10) 非空

表3 成績表(grade)

列名 意義 類型 約束
sno 學號 varchar(3) 主鍵
cno 課程號 varchar(5) 主鍵
degree 分數 tinyint 非空

表4 教師表(teacher)

列名 意義 類型 約束
tno 教師編號 varchar(5) 主鍵
tname 教師姓名 varchar(20) 非空
tsex 性別 varchar(2)
tbirthday 生日 datetime
prof 職稱 varchar(20) 非空
depart varchar(30) 非空

表5 等級表(rank)

列名 意義 類型 約束
down 分數下屆 tinyint 非空
up 分數上界 tinyint 非空
rank 級別 varchar(2) 主鍵

SQL語句:

CREATE TABLE `student` (
  `sno` varchar(3) NOT NULL,
  `sname` varchar(10) NOT NULL,
  `ssex` varchar(3) NOT NULL,
  `sbirthday` datetime NOT NULL,
  `class` varchar(5) NOT NULL,
  PRIMARY KEY (`sno`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8

CREATE TABLE `course` (
  `cno` varchar(10) NOT NULL,
  `cname` varchar(30) NOT NULL,
  `tno` varchar(10) NOT NULL,
  PRIMARY KEY (`cno`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8


CREATE TABLE `grade` (
  `sno` varchar(3) NOT NULL,
  `cno` varchar(5) NOT NULL,
  `degree` tinyint(4) NOT NULL,
  PRIMARY KEY (`sno`,`cno`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8

CREATE TABLE `teacher` (
  `tno` varchar(5) NOT NULL,
  `tname` varchar(20) NOT NULL,
  `tsex` varchar(2) NOT NULL,
  `tbirthday` datetime NOT NULL,
  `prof` varchar(20) NOT NULL,
  `depart` varchar(30) NOT NULL,
  PRIMARY KEY (`tno`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8

CREATE TABLE `rank` (
  `down` tinyint(4) NOT NULL,
  `up` tinyint(4) NOT NULL,
  `rank` varchar(2) NOT NULL,
  PRIMARY KEY (`rank`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8

二、將如下數據插入到表里

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 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' ,'高等數學' , '100');

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

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 rank(down,up,rank) values(90,100,'A');
insert into rank(down,up,rank) values(80,89,'B');
insert into rank(down,up,rank) values(70,79,'C');
insert into rank(down,up,rank) values(60,69,'D');
insert into rank(down,up,rank) values(0,59,'E');

三、sql語句練習
1、 查詢Student表中的所有記錄的Sname、Ssex和Class列。
select sname,ssex,class from student
2、查詢“張旭“教師任課的學生成績。
select g.degree from grade as g join course as c on g.cno=c.cno join teacher as t on c.tno=t.tno where t.tname='張旭';
3、查詢選修某課程的同學人數多于5人的教師姓名。
select tname from teacher where tno in (select tno from course where cno in (select cno from grade group by cno having count(cno)>5));
4、查詢95033班和95031班全體學生的記錄。
Select * from student where class in (‘95033’, ‘95031’)
5、查詢存在有85分以上成績的課程Cno.
Select distinct cno from grade where degree>85;
6、查詢出“計算機系“教師所教課程的成績表。
select degree from grade where cno in (select cno from course where tno in (select tno from teacher where depart='計算機系'));
7、查詢選修編號為“3-105“課程且成績至少高于選修編號為“3-245”的同學最低分的Cno、Sno和Degree,并按Degree從高到低次序排序。
select sno,cno,degree from grade where cno='3-105' and degree>(select min(degree) from grade where cno='3-245') order by degree desc;
8、查詢同時選修編號為“3-105”和“3-245”并且“3-105”成績高于“3-245”成績的同學的Cno、Sno和Degree.
select g1.sno from grade as g1 join grade as g2 on g1.sno=g2.sno where g1.cno='3-105' and g2.cno='3-245' and g1.degree > g2.degree;
9、查詢所有教師和同學的name、sex和birthday.
select sname,ssex,sbirthday from student union select tname,tsex,tbirthday from teacher;
10、查詢所有“女”教師和“女”同學的name、sex和birthday.
select sname,ssex,sbirthday from student where ssex=’女’ union select tname,tsex,tbirthday from teacher where tsex=’女’;

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 1).創建數據庫 create database學生選課數據庫 2).創建四張表 Create table Stu...
    blvftigd閱讀 1,608評論 0 0
  • 最近打算采用關系型數據庫來理一下公司的運營數據,先拿點東西練手找感覺。下面是幾個關于學生課業的表,需要建立一個數據...
    九天朱雀閱讀 1,000評論 0 3
  • 一、已知有如下表,請用sql語句在mysql里建立相應的表 表1 學生表(student) 表2 課程表(cou...
    HavenYoung閱讀 1,353評論 0 0
  • 1.學生表(student) create table student(sno varchar(3),sname ...
    曉曉的忍兒閱讀 492評論 0 1
  • 產品創新在不同的時代獲勝的關鍵 產品創新在不同的時代獲勝的關鍵: 第一個階段:也就是80、90年代,各種產品都稀缺...
    趙海民閱讀 189評論 0 0