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=’女’;

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,529评论 5 475
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,015评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,409评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,385评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,387评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,466评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,880评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,528评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,727评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,528评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,602评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,302评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,873评论 3 306
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,890评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,132评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,777评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,310评论 2 342

推荐阅读更多精彩内容

  • 1).创建数据库 create database学生选课数据库 2).创建四张表 Create table Stu...
    blvftigd阅读 1,563评论 0 0
  • 最近打算采用关系型数据库来理一下公司的运营数据,先拿点东西练手找感觉。下面是几个关于学生课业的表,需要建立一个数据...
    九天朱雀阅读 966评论 0 3
  • 一、已知有如下表,请用sql语句在mysql里建立相应的表 表1 学生表(student) 表2 课程表(cou...
    HavenYoung阅读 1,324评论 0 0
  • 1.学生表(student) create table student(sno varchar(3),sname ...
    晓晓的忍儿阅读 456评论 0 1
  • 产品创新在不同的时代获胜的关键 产品创新在不同的时代获胜的关键: 第一个阶段:也就是80、90年代,各种产品都稀缺...
    赵海民阅读 183评论 0 0