重庆企业网站排名优化方法,百度录入网站,聊城网站建设:推广聊城博达,Wordpress慢加内存还是带宽文章目录 day03_mysql_课后练习mysql练习题第1题第2题第3题第4题第5题 day03_mysql_课后练习
mysql练习题
第1题
案例#xff1a;
1、创建一个数据库#xff1a;day03_test01_school
2、创建如下表格
表1 Department表的定义
字段名字段描述数据类型主键外键非空唯一D… 文章目录 day03_mysql_课后练习mysql练习题第1题第2题第3题第4题第5题 day03_mysql_课后练习
mysql练习题
第1题
案例
1、创建一个数据库day03_test01_school
2、创建如下表格
表1 Department表的定义
字段名字段描述数据类型主键外键非空唯一DepNo部门号int(10)是否是是DepName部门名称varchar(20)否否是否DepNote部门备注Varchar(50)否否否否
表2 Teacher表的定义
字段名字段描述数据类型主键外键非空唯一Number教工号int是否是是Name姓名varchar(30)否否是否Sex性别varchar(4)否否否否Birth出生日期date否否否否DepNo部门号int否是否否Salary工资float否否否否Address家庭住址varchar(100)否否否否
3、添加记录
DepNoDepNameDepNote601软件技术系软件技术等专业602网络技术系多媒体技术等专业603艺术设计系广告艺术设计等专业604管理工程系连锁经营管理等专业
NumberNameSexBirthDepNoSalaryAddress2001Tom女1970-01-106024500四川省绵阳市2002Lucy男1983-12-186012500北京市昌平区2003Mike男1990-06-016041500重庆市渝中区2004James女1980-10-206023500四川省成都市2005Jack男1975-05-306031200重庆市南岸区
4、用SELECT语句查询Teacher表的所有记录。
5、找出所有其家庭地址中含有“北京”的教师的教工号及部门名称要求显示结果中各列标题用中文别名表示。
6、获得Teacher表中工资最高的教工号和姓名。
7、找出所有收入在25004000之间的教工号。
8、查找在网络技术系工作的教师的姓名、性别和工资。
#创建一个数据库day03_test01_school
CREATE DATABASE day03_test01_school;#使用数据库
USE day03_test01_school;#创建表格
-- 部门信息表Department
CREATE TABLE Department(DepNo INT(10) PRIMARY KEY,DepName VARCHAR(20) NOT NULL,DepNote VARCHAR(50)
);
-- 创建数据表Teacher
CREATE TABLE Teacher(Number INT PRIMARY KEY,Name VARCHAR(30) UNIQUE,Sex VARCHAR(4),Birth DATE,DepNo INT,Salary FLOAT,Address VARCHAR(100),FOREIGN KEY (DepNo) REFERENCES Department(DepNo)
);
-- 将表4的内容插入Department表中
INSERT INTO Department VALUES (601,软件技术系,软件技术等专业);
INSERT INTO Department VALUES (602,网络技术系,多媒体技术等专业);
INSERT INTO Department VALUES (603,艺术设计系,广告艺术设计等专业);
INSERT INTO Department VALUES (604,管理工程系,连锁经营管理等专业);
-- 将表3的内容插入Teacher表中。
INSERT INTO Teacher VALUES(2001,Tom,女,1970-01-10,602,4500,四川省绵阳市);
INSERT INTO Teacher VALUES(2002,Lucy,男,1983-12-18,601,2500,北京市昌平区);
INSERT INTO Teacher VALUES(2003,Mike,男,1990-06-01,604,1500,重庆市渝中区);
INSERT INTO Teacher VALUES(2004,James,女,1980-10-20,602,3500,四川省成都市);
INSERT INTO Teacher VALUES(2005,Jack,男,1975-05-30,603,1200,重庆市南岸区);#用SELECT语句查询Teacher表的所有记录。
SELECT * FROM teacher;#找出所有其家庭地址中含有“北京”的教师的教工号及部门名称要求显示结果中各列标题用中文表示。
SELECT number AS 教工号,Teacher.depno AS 部门名称
FROM Teacher INNER JOIN Department
ON Teacher.DepNo Department.DepNo
WHERE address LIKE %北京%;#获得Teacher表中工资最高的教工号和姓名。
SELECT number,name FROM teacher WHERE salary (SELECT MAX(salary) FROM teacher);
SELECT number,name FROM teacher ORDER BY salary DESC LIMIT 0,1;#找出所有收入在25004000之间的教工号。
SELECT number FROM teacher WHERE salary BETWEEN 2500 AND 4000;#查找在网络技术系工作的教师的姓名、性别和工资。
SELECT name,sex,salary FROM teacher
WHERE depno(SELECT depno FROM department WHERE depname网络技术系);SELECT name,sex,salary
FROM teacher INNER JOIN department
ON teacher.depno department.depno
WHERE depname 网络技术系;第2题
案例
1、建立数据库day03_test02_student
2、建立以下三张表并插入记录
Table:Classes
专业班级姓名姓别座位计算机网络1班张三男8软件工程2班李四男12计算机维护1班王五男9计算机网络2班LILY女15软件工程1班小强男20计算机维护1班CoCo女18
Table:Score
姓名英语数学语文张三657598李四874586王五988565LILY758687小强856058CoCo968770
Table: Records
姓名记录小强迟到小强事假李四旷课李四旷课李四迟到CoCo病假LILY事假
要求3写出将张三的语文成绩修改为88的SQL语句。
要求4搜索出计算机维护1班各门课程的平均成绩。
要求5搜索科目有不及格的人的名单。
要求6查询记录2次以上的学生的姓名和各科成绩。
#建立数据库day03_test02_student
CREATE DATABASE day03_test02_student;#使用数据库
USE day03_test02_student;#创建表格并添加记录
CREATE TABLE Classes(Pro_name VARCHAR(20) NOT NULL,Grade VARCHAR(10) NOT NULL,name VARCHAR(10) NOT NULL,sex VARCHAR(4) NOT NULL,seat INT(10) NOT NULL UNIQUE
);
CREATE TABLE Score(name VARCHAR(10) NOT NULL,En_score INT(10) NOT NULL,Ma_score INT(10) NOT NULL,Ch_score INT(10) NOT NULL
);
CREATE TABLE Records(name VARCHAR(10) NOT NULL,record VARCHAR(10)
);-- 向classes中添加数据
INSERT INTO classes VALUES(计算机网络,1班,张三,男,8);
INSERT INTO classes VALUES(软件工程,2班,李四,男,12);
INSERT INTO classes VALUES(计算机维护,1班,王五,男,9);
INSERT INTO classes VALUES(计算机网络,2班,LILY,女,15);
INSERT INTO classes VALUES(软件工程,1班,小强,男,20);
INSERT INTO classes VALUES(计算机维护,1班,CoCo,女,18);-- 向score中添加数据
INSERT INTO Score VALUES(张三,65,75,98);
INSERT INTO Score VALUES(李四,87,45,86);
INSERT INTO Score VALUES(王五,98,85,65);
INSERT INTO Score VALUES(LILY,75,86,87);
INSERT INTO Score VALUES(小强,85,60,58);
INSERT INTO Score VALUES(CoCo,96,87,70);-- 向records中添加数据
INSERT INTO records VALUES(小强,迟到);
INSERT INTO records VALUES(小强,事假);
INSERT INTO records VALUES(李四,旷课);
INSERT INTO records VALUES(李四,旷课);
INSERT INTO records VALUES(李四,迟到);
INSERT INTO records VALUES(CoCo,病假);
INSERT INTO records VALUES(LILY,事假);#要求3写出将张三的语文成绩修改为88的SQL语句。
UPDATE score SET ch_score88 WHERE name张三;#要求4搜索出计算机维护1班各门课程的平均成绩。
SELECT AVG(en_score),AVG(ma_score),AVG(ch_score) FROM score
WHERE name IN (SELECT name FROM classes WHERE Pro_name计算机维护 AND grade1班);#要求5搜索科目有不及格的人的名单。
SELECT name FROM score WHERE en_score60 OR ma_score60 OR ch_score60;#要求6查询记录2次以上的学生的姓名和各科成绩。
SELECT *
FROM score INNER JOIN
(SELECT name,COUNT(*) FROM Records GROUP BY name HAVING COUNT(*)2) temp
ON score.name temp.name;第3题
案例
1、建立数据库day03_test03_xuankedb
2、建立如下三张表
学生表Student由学号(Sno)、姓名(Sname)、性别(Ssex)、年龄(Sage)、所在系(Sdept)五个字段Sno 为关键字。
课程表Course由课程号(Cno)、课程名(Cname)、选修课号(Cpno)、学分(Ccredit)四个字段Cno为关键字。
成绩表SG由学号(Sno)、课程号(Cno)、成绩(Grade)三个字段(SNO, CNO)为关键字。
3、向Student表增加“入学时间(Scome)”列其数据类型为日期型。
4、查询选修了3号课程的学生的学号及其成绩查询结果按分数的降序排列。
5、查询学习1号课程的学生最高分数、平均成绩。
6、查询与“李洋”在同一个系学习的学生。
7、将计算机系全体学生的成绩置零。
8、删除学生表中学号为05019的学生记录。
9、删除计算机系所有学生的成绩记录。
-- 创建一个数据库day03_test03_xuankedb
CREATE DATABASE day03_test03_xuankedb;-- 使用数据库
USE day03_test03_xuankedb;-- 创建学生表
CREATE TABLE student(sno INT(10) PRIMARY KEY,sname VARCHAR(10),ssex VARCHAR(10),sage INT(10),sdept VARCHAR(40)
);-- 创建课程表
CREATE TABLE course(cno INT(10) PRIMARY KEY,cname VARCHAR(20),cpno VARCHAR(40),ccredit INT(20)
);-- 创建成绩表
CREATE TABLE sg(sno INT(10),cno INT(10),grade INT(3),PRIMARY KEY(sno,cno),CONSTRAINT stu_s_sno_fk FOREIGN KEY (sno) REFERENCES student(sno),CONSTRAINT cou_s_sno_fk FOREIGN KEY (cno) REFERENCES course(cno)
);#3.向Student表增加“入学时间(Scome)”列其数据类型为日期型。
ALTER TABLE student ADD COLUMN scome DATE;#4.查询选修了3号课程的学生的学号及其成绩查询结果按分数的降序排列。
SELECT sno,grade FROM sg WHERE cno3 ORDER BY grade DESC;#5.查询学习1号课程的学生最高分数、平均成绩。
SELECT MAX(grade),AVG(grade) FROM sg WHERE cno1;#6.查询与“李洋”在同一个系学习的学生。
SELECT * FROM student WHERE sdept(SELECT sdept FROM student WHERE sname李洋);#7.将计算机系全体学生的成绩置零。
UPDATE sg SET grade0 WHERE sno IN (SELECT sno FROM student WHERE sdept计算机系)#8.删除学生表中学号为05019的学生记录。
DELETE FROM student WHERE sno05019;#9.删除计算机系所有学生的成绩记录。
DELETE FROM sg WHERE sno IN (SELECT sno FROM student WHERE sdept计算机系);第4题
案例
1、建立数据库day03_test04_library
2、建立如下三个表 表一press 出版社 属性编号pressid(int)、名称pressname(varchar)、地址address(varchar)
表二sort 种类 属性编号sortno(int)、数量scount(int)
表二book图书 属性编号bid(int)、名称 bname(varchar)、种类bsortno(int)、出版社编号pressid(int)
3、给sort表中添加一列属性描述describes(varchar)
4、向三个表中各插入几条数据 5、查询出版社id为100的书的全部信息
6、查询出版社为外研社的书的全部信息
7、查询图书数量scount大于100的种类
8、查询图书种类最多的出版社信息
-- 建立数据库day03_test04_library
CREATE DATABASE day03_test04_library;-- 使用数据库
USE day03_test04_library;-- 创建出版社表
CREATE TABLE press(pressid INT(10) PRIMARY KEY,pressname VARCHAR(30),address VARCHAR(50)
);-- 创建一个种类表
CREATE TABLE sort(sortno INT(10) PRIMARY KEY,scount INT(10)
);-- 创建图书表
CREATE TABLE book(bid INT(10) PRIMARY KEY,bname VARCHAR(40),bsortno INT(10),pressid INT(10),CONSTRAINT p_b_pid_fk FOREIGN KEY (pressid) REFERENCES press(pressid),CONSTRAINT s_b_sno_fk FOREIGN KEY (bsortno) REFERENCES sort(sortno)
);-- 添加一列属性
ALTER TABLE sort ADD COLUMN describes VARCHAR(30);-- 添加数据
INSERT INTO press VALUES(100,外研社,上海);
INSERT INTO press VALUES(101,北大出版社,北京);
INSERT INTO press VALUES(102,教育出版社,北京);-- 添加数据
INSERT INTO sort(sortno,scount,describes)VALUES(11,50,小说);
INSERT INTO sort(sortno,scount,describes)VALUES(12,300,科幻);
INSERT INTO sort(sortno,scount,describes)VALUES(13,100,神话);-- 添加数据
INSERT INTO book VALUES(1,红与黑,11,100);
INSERT INTO book VALUES(2,幻城,12,102);
INSERT INTO book VALUES(3,希腊神话,13,102);
INSERT INTO book VALUES(4,一千零一夜,13,102);#5.查询出版社id为100的书的全部信息
SELECT * FROM book WHERE pressid100;#6.查询出版社为外研社的书的全部信息
SELECT * FROM book WHERE pressid(SELECT pressid FROM press WHERE pressname外研社);#7.查询图书数量scount大于100的种类
SELECT * FROM sort WHERE scount100;#8.查询图书种类最多的出版社信息
SELECT * FROM press WHERE pressid(SELECT temp.pressid FROM (SELECT pressid,MAX(t.c) FROM (SELECT pressid,COUNT(*) AS c FROM book GROUP BY pressid ORDER BY c DESC ) AS t) AS temp);SELECT * FROM press WHERE pressid(
SELECT pressid
FROM (SELECT pressid,bsortno FROM book GROUP BY pressid,bsortno) temp
GROUP BY pressid
ORDER BY COUNT(*) DESC
LIMIT 0,1)第5题
案例
1、建立数据库day03_test05_tour
2、建立如下两个表
agency旅行社表
列名英文名列名中文名数据类型允许空值说明Id旅行社编号intno主键Name旅行社名varcharnoAddress旅行社地址varcharnoAreaid所属区域IdIntyes
travel旅行线路表
列名英文名列名中文名数据类型允许空值说明Tid旅行线路编号intno主键Time所需时间varcharnoPosition目的地varcharnoMoney花费FloatyesAid所属旅行社idIntno外键Count报名人数Intyes
3、添加记录 4、查出旅行线路最多的旅社
5、查出最热门的旅行线路(也就是查询出报名人数最多的线路)
6、查询花费少于5000的旅行线路
7、找到一次旅行花费最昂贵的旅行社名
8、查出青年旅社所有的旅行线路都玩一遍需要多少时间。
#建立数据库day03_test05_tour
CREATE DATABASE day03_test05_tour;#使用数据库
USE day03_test05_tour;CREATE TABLE agency(id INT PRIMARY KEY NOT NULL,NAME VARCHAR(20) NOT NULL,address VARCHAR(100) NOT NULL,areaid INT
);CREATE TABLE trval(tid INT PRIMARY KEY NOT NULL,TIME VARCHAR(50) NOT NULL,POSITION VARCHAR(100) NOT NULL,money FLOAT,aid INT NOT NULL,rcount INT,CONSTRAINT bk_aid FOREIGN KEY trval(aid) REFERENCES agency(id)
);INSERT INTO agency(id,NAME,address) VALUES (101,青年旅行社,北京海淀);
INSERT INTO agency(id,NAME,address) VALUES (102,天天旅行社,天津海院);INSERT INTO trval(tid,TIME,POSITION,money,aid,rcount) VALUES (1,5天,八达岭,3000,101,10);
INSERT INTO trval(tid,TIME,POSITION,money,aid,rcount) VALUES (2,7天,水长城,5000,101,14);
INSERT INTO trval(tid,TIME,POSITION,money,aid,rcount) VALUES (3,8天,水长城,6000,102,11);SELECT * FROM agency;
SELECT * FROM trval;#4.查出旅行线路最多的旅社
SELECT *
FROM agency INNER JOIN
(SELECT t.aid,MAX(t.c) FROM (SELECT aid,COUNT(*) AS c FROM trval GROUP BY aid) AS t)temp
ON agency.id temp.aid#5.查出最热门的旅行线路(也就是查询出报名人数最多的线路)
SELECT * FROM trval WHERE rcount(SELECT MAX(rcount) FROM trval);#6.查询花费少于5000的旅行线路
SELECT * FROM trval WHERE money5000;#7.找到一次旅行花费最昂贵的旅行社名
SELECT NAME FROM agency WHERE id
(SELECT aid FROM trval WHERE money (SELECT MAX(money) FROM trval ));#8.查出青年旅社所有的旅行线路都玩一遍需要多少时间。
SELECT SUM(TIME) FROM trval WHERE aid(SELECT id FROM agency WHERE NAME青年旅行社);