北京动力节点MySQL课程34道SQL经典题

合集下载

mysql习题和答案

mysql习题和答案

mysql习题和答案MySQL习题和答案MySQL是一种开源的关系型数据库管理系统,广泛应用于各种Web应用程序和企业级应用中。

掌握MySQL的基本知识和技能对于数据库开发和管理人员来说至关重要。

本文将介绍一些常见的MySQL习题和答案,帮助读者更好地理解和掌握MySQL的使用。

一、基础知识篇1. 什么是数据库?答:数据库是一个有组织的数据集合,用于存储和管理数据。

2. 什么是关系型数据库?答:关系型数据库是一种基于关系模型的数据库,数据以表格的形式组织,表格由行和列组成。

3. 什么是SQL?答:SQL(Structured Query Language)是一种用于管理和操作关系型数据库的语言。

4. 什么是MySQL?答:MySQL是一种开源的关系型数据库管理系统,被广泛应用于各种Web应用程序和企业级应用中。

二、查询语句篇1. 如何查询表中的所有数据?答:使用SELECT语句,例如:SELECT * FROM table_name;2. 如何查询表中的特定列?答:使用SELECT语句,并指定需要查询的列,例如:SELECT column1,column2 FROM table_name;3. 如何使用WHERE子句进行条件查询?答:使用SELECT语句,并在WHERE子句中指定条件,例如:SELECT * FROM table_name WHERE condition;4. 如何对查询结果进行排序?答:使用SELECT语句,并在ORDER BY子句中指定排序的列和排序方式,例如:SELECT * FROM table_name ORDER BY column_name ASC(升序)/DESC(降序);三、数据操作篇1. 如何插入新数据?答:使用INSERT INTO语句,例如:INSERT INTO table_name (column1,column2) VALUES (value1, value2);2. 如何更新已有数据?答:使用UPDATE语句,例如:UPDATE table_name SET column1 = value1, column2 = value2 WHERE condition;3. 如何删除数据?答:使用DELETE FROM语句,例如:DELETE FROM table_name WHERE condition;四、表操作篇1. 如何创建新表?答:使用CREATE TABLE语句,例如:CREATE TABLE table_name (column1datatype, column2 datatype);2. 如何修改已有表的结构?答:使用ALTER TABLE语句,例如:ALTER TABLE table_name ADDcolumn_name datatype;3. 如何删除已有表?答:使用DROP TABLE语句,例如:DROP TABLE table_name;五、高级技巧篇1. 如何进行表的连接查询?答:使用JOIN语句,例如:SELECT * FROM table1 JOIN table2 ONtable1.column = table2.column;2. 如何进行数据的分组统计?答:使用GROUP BY语句,例如:SELECT column, COUNT(*) FROMtable_name GROUP BY column;3. 如何进行数据的多表排序和限制查询结果数量?答:使用ORDER BY和LIMIT语句,例如:SELECT * FROM table_name ORDER BY column_name LIMIT 10;六、总结通过以上习题和答案的学习,我们可以更好地掌握MySQL的使用。

sql练习题及答案

sql练习题及答案

sql练习题及答案SQL练习题及答案在学习SQL(Structured Query Language)时,练习题是非常重要的一部分。

通过练习题,我们可以巩固和应用所学的SQL知识,提高自己的实践能力。

本文将介绍几个常见的SQL练习题,并提供相应的答案,希望对大家的学习有所帮助。

1. 查询员工表中所有员工的姓名和薪水。

答案:```sqlSELECT 姓名, 薪水FROM 员工表;```2. 查询员工表中薪水大于5000的员工的姓名和薪水。

答案:```sqlSELECT 姓名, 薪水FROM 员工表WHERE 薪水 > 5000;```3. 查询员工表中职位为经理的员工的姓名和薪水。

答案:```sqlSELECT 姓名, 薪水FROM 员工表WHERE 职位 = '经理';```4. 查询员工表中薪水在4000到6000之间的员工的姓名和薪水。

答案:```sqlSELECT 姓名, 薪水FROM 员工表WHERE 薪水 BETWEEN 4000 AND 6000;```5. 查询员工表中薪水最高的员工的姓名和薪水。

答案:```sqlSELECT 姓名, 薪水FROM 员工表WHERE 薪水 = (SELECT MAX(薪水) FROM 员工表);```6. 查询员工表中没有分配部门的员工的姓名和薪水。

答案:```sqlSELECT 姓名, 薪水FROM 员工表WHERE 部门 IS NULL;```7. 查询员工表中按照薪水从高到低排列的前5名员工的姓名和薪水。

答案:```sqlSELECT 姓名, 薪水FROM 员工表ORDER BY 薪水 DESCLIMIT 5;```8. 查询员工表中每个部门的员工数量。

答案:```sqlSELECT 部门, COUNT(*) AS 员工数量FROM 员工表GROUP BY 部门;```9. 查询员工表中薪水排名在第3到第5位的员工的姓名和薪水。

SQL题库及参考答案word精品文档16页

SQL题库及参考答案word精品文档16页

SQL题库1.下列四项中,不属于数据库特点的是()。

A.数据共享(查询)B.数据完整性(实体,域,引用完整性,自定义完整性)C.数据冗余很高D.数据独立性高(关系型数据库,E-R,实体(table)和联系(表和表的关联关系))2.SQL Server安装程序创建4个系统数据库,下列哪个不是()系统数据库。

A.master (系统信息比如帐号密码)B.model(模型)C.pubD.msdb(调度作业等)tempdb(临时数据和存储过程)3.()是位于用户与操作系统之间的一层数据管理软件,它属于系统软件,它为用户或应用程序提供访问数据库的方法。

数据库在建立、使用和维护时由其统一管理、统一控制。

A.DBMS(数据库管理系统)B.DBC.DBS(System 系统:DB,DBMS,DBA,用户,软硬件)D.DBA(administrator 管理员)4.下列哪个不是sql 数据库文件的后缀( )。

A..mdf(主数据文件推荐扩展名)B..ldf(log日志日志文件推荐扩展名)C..tifD..ndf(次数据文件推荐扩展名)5.数据定义语言的缩写词为( )。

A.DDL(data definintion language:create)B.DCL(data control language :select语句)C.DML(data manipulation language:insert update delete truncate)D.DBL6.数据库管理系统的英文缩写是()。

A.DBMSB.DBSC.DBAD.DB7.用于获取系统日期的函数是()。

A.YEAR():select YEAR('2019-2-2')B.GETDATE():演示C.COUNT():聚合函数之统计函数D.SUM():聚合函数之求和函数8.SQL Server系统中的所有服务器级系统信息存储于哪个数据库()。

A. masterB. modelC. tempdbD. msdb9.以下关于外键和相应的主键之间的关系,正确的是( )。

mysql练习题目

mysql练习题目

mysql练习题目MySQL是一种常用的关系型数据库管理系统,被广泛应用于各种类型的软件开发项目中。

为了提高对MySQL的掌握程度,下面将介绍一些MySQL练习题目,帮助读者加深对MySQL的理解和应用。

1. 查询题目1.1 查询所有学生的信息```sqlSELECT * FROM students;```1.2 查询学生表中学生数量```sqlSELECT COUNT(*) FROM students;```1.3 查询学生表中年龄大于18岁的学生信息```sqlSELECT * FROM students WHERE age > 18;```2. 插入题目2.1 向学生表中插入一条新的学生记录```sqlINSERT INTO students (name, age, gender) VALUES ('张三', 20, '男');```2.2 向学生表中插入多条新的学生记录```sqlINSERT INTO students (name, age, gender) VALUES ('李四', 22, '男'), ('王五', 21, '女');```3. 更新题目3.1 将学生表中年龄小于20岁的学生的年龄更新为20岁```sqlUPDATE students SET age = 20 WHERE age < 20;```3.2 将学生表中所有学生的性别更新为女性```sqlUPDATE students SET gender = '女';```4. 删除题目4.1 删除学生表中姓名为“张三”的学生记录```sqlDELETE FROM students WHERE name = '张三';```4.2 删除学生表中所有学生的记录```sqlDELETE FROM students;```5. 排序题目5.1 按照学生表中的年龄升序排列学生信息```sqlSELECT * FROM students ORDER BY age ASC;```5.2 按照学生表中的姓名降序排列学生信息```sqlSELECT * FROM students ORDER BY name DESC;```6. 聚合函数题目6.1 计算学生表中学生的平均年龄```sqlSELECT AVG(age) FROM students;```6.2 计算学生表中学生的最大年龄```sqlSELECT MAX(age) FROM students;```以上是一些常见的MySQL练习题目,通过实践操作这些题目,读者可以加深对MySQL的理解和应用。

sql练习题及答案

sql练习题及答案

sql练习题及答案SQL练习题及答案SQL(Structured Query Language)是一种用于管理和操作关系型数据库的语言。

在数据库管理系统中,SQL被广泛应用于数据的查询、插入、更新和删除等操作。

掌握SQL语言对于数据库开发和数据分析非常重要。

在这篇文章中,我们将提供一些SQL练习题及其答案,帮助读者巩固和提升SQL的应用能力。

1. 查询员工表中所有员工的姓名和工资。

答案:```sqlSELECT 姓名, 工资 FROM 员工表;```2. 查询员工表中工资大于5000的员工的姓名和工资。

答案:```sqlSELECT 姓名, 工资 FROM 员工表 WHERE 工资 > 5000;```3. 查询员工表中工资在3000到5000之间的员工的姓名和工资。

答案:```sqlSELECT 姓名, 工资 FROM 员工表 WHERE 工资 BETWEEN 3000 AND 5000;```4. 查询员工表中姓"张"的员工的姓名和工资。

```sqlSELECT 姓名, 工资 FROM 员工表 WHERE 姓名 LIKE '张%';```5. 查询员工表中工资最高的员工的姓名和工资。

答案:```sqlSELECT 姓名, 工资 FROM 员工表 WHERE 工资 = (SELECT MAX(工资) FROM 员工表);```6. 查询员工表中每个部门的员工数量。

答案:```sqlSELECT 部门, COUNT(*) AS 员工数量 FROM 员工表 GROUP BY 部门;```7. 查询员工表中每个部门的平均工资。

答案:```sqlSELECT 部门, AVG(工资) AS 平均工资 FROM 员工表 GROUP BY 部门;```8. 查询员工表中工资高于部门平均工资的员工的姓名和工资。

答案:SELECT 姓名, 工资 FROM 员工表 WHERE 工资 > (SELECT AVG(工资) FROM 员工表 GROUP BY 部门);```9. 查询员工表中没有分配部门的员工的姓名和工资。

MySQL-50道经典sql题汇总

MySQL-50道经典sql题汇总

MySQL-50道经典sql题汇总题⽬是根据⾃⼰的理解做的,都能跑出来,但是肯定还有不⾜之处,欢迎⼤家提出问题,⼀起研究学习建表DROP TABLE IF EXISTS `course`;CREATE TABLE `course` (`CId` varchar(10) default NULL,`Cname` varchar(10) default NULL,`TId` varchar(10) default NULL) ENGINE=InnoDB DEFAULT CHARSET=utf8;-- ------------------------------ Table structure for sc-- ----------------------------DROP TABLE IF EXISTS `sc`;CREATE TABLE `sc` (`SId` varchar(10) default NULL,`CId` varchar(10) default NULL,`score` int(4) default NULL) ENGINE=InnoDB DEFAULT CHARSET=utf8;-- ------------------------------ Table structure for student-- ----------------------------DROP TABLE IF EXISTS `student`;CREATE TABLE `student` (`SId` varchar(10) default NULL,`Sname` varchar(20) default NULL,`Sage` date default NULL,`Ssex` varchar(10) default NULL) ENGINE=InnoDB DEFAULT CHARSET=utf8;-- ------------------------------ Table structure for teacher-- ----------------------------DROP TABLE IF EXISTS `teacher`;CREATE TABLE `teacher` (`TId` varchar(10) default NULL,`Tname` varchar(20) default NULL) ENGINE=InnoDB DEFAULT CHARSET=utf8;添加数据courseINSERT INTO `course` VALUES ('01', 'CHINESE', '02');INSERT INTO `course` VALUES ('02', 'MATH', '01');INSERT INTO `course` VALUES ('03', 'ENGLISH', '03');INSERT INTO `course` VALUES ('04', 'JAVA', '04');scINSERT INTO `sc` VALUES ('01', '01', 80);INSERT INTO `sc` VALUES ('01', '03', 99);INSERT INTO `sc` VALUES ('02', '04', 50);INSERT INTO `sc` VALUES ('02', '03', 80);INSERT INTO `sc` VALUES ('03', '01', 80);INSERT INTO `sc` VALUES ('03', '03', 80);INSERT INTO `sc` VALUES ('04', '01', 50);INSERT INTO `sc` VALUES ('04', '03', 20);INSERT INTO `sc` VALUES ('05', '01', 100);INSERT INTO `sc` VALUES ('06', '01', 31);INSERT INTO `sc` VALUES ('06', '03', 34);INSERT INTO `sc` VALUES ('07', '03', 98);INSERT INTO `sc` VALUES ('07', '04', 55);INSERT INTO `sc` VALUES ('01', '04', 50);INSERT INTO `sc` VALUES ('01', '02', 10);INSERT INTO `sc` VALUES ('02', '02', 70);INSERT INTO `sc` VALUES ('03', '02', 50);INSERT INTO `sc` VALUES ('04', '02', 80);INSERT INTO `sc` VALUES ('05', '02', 73);INSERT INTO `sc` VALUES ('06', '02', 99);INSERT INTO `sc` VALUES ('07', '02', 100);INSERT INTO `sc` VALUES ('08', '02', 59);INSERT INTO `sc` VALUES ('09', '02', 80);INSERT INTO `sc` VALUES ('08', '01', 40);INSERT INTO `sc` VALUES ('08', '03', 35);studentINSERT INTO `student` VALUES ('01', 'Zhao Lei', '1990-1-1', 'MAN'); INSERT INTO `student` VALUES ('02', 'Qian Dian', '1990-12-21', 'MAN'); INSERT INTO `student` VALUES ('03', 'Sun Feng', '1990-5-20', 'MAN'); INSERT INTO `student` VALUES ('04', 'Li Yun', '1990-8-6', 'MAN'); INSERT INTO `student` VALUES ('05', 'Zhou Mei', '1991-12-1', 'WOMAN'); INSERT INTO `student` VALUES ('06', 'Wu Lan', '1992-3-1', 'WOMAN'); INSERT INTO `student` VALUES ('07', 'Zheng Zhu', '1989-7-1', 'WOMAN'); INSERT INTO `student` VALUES ('08', 'Wang Ju', '1990-1-20', 'WOMAN'); INSERT INTO `student` VALUES ('09', 'Wang Ju', '2020-8-30', 'MAN');teacherINSERT INTO `teacher` VALUES ('01', 'Li Pengfei');INSERT INTO `teacher` VALUES ('02', 'Wang Wen');INSERT INTO `teacher` VALUES ('03', 'Zhang Zhichao');INSERT INTO `teacher` VALUES ('04', 'Ye Ping');题⽬01、查询'01'课程⽐'02'课程成绩⾼的所有学⽣的学号;SELECT a.SId FROM (select SId,score from `sc` where CId = '01')as aINNER JOIN(select SId,score from `sc` where CId = '02')as bON a.SId = b.SIdINNER JOIN student as c ON c.SId = a.SIdwhere a.score>b.score02、查询平均成绩⼤于60分的同学的学号和平均成绩;select SId,AVG(score) FROM sc GROUP BY SId HAVING AVG(score)>6003、查询所有同学的学号、姓名、选课数、总成绩;⼀SELECT t1.SId,t1.Sname,(SELECT COUNT(CId) FROM sc s1 where s1.SId=t1.SId) 数量,(SELECT SUM(score) FROM sc s2 where s2.SId = t1.SId) 总成绩from student t1⼆select stu.SId , stu.Sname,COUNT(s.CId),sum(s.score) from sc as s join student as stuon s.SId = stu.SIdGROUP BY stu.SId04、查询姓“李”的⽼师的个数;SELECT COUNT(Tid) FROM teacher where Tname LIKE 'Li%'05、查询没学过“叶平”⽼师课的同学的学号、姓名; 思路:查找所有学过yp⽼师可的学⽣,然后看哪个Sid没在⾥⾯SELECT SId,Sname from student WHERE SId NOT IN(SELECT SId from sc where CId IN(SELECT CId FROM course where TId IN(SELECT TId FROM teacher where Tname ='Ye Ping')))06、查询学过“01”并且也学过编号“02”课程的同学的学号、姓名;SELECT SId,Sname from student st where(select COUNT(*) FROM sc s1 where s1.SId=st.SId and CId='01')>0and (select COUNT(*) from sc s2 where s2.SId=st.SId and CId='02')>0SELECT DISTINCT stu.SId , stu.Sname from sc as s join student as stu on s.SId = stu.SId where01 in (SELECT CId from sc where stu.SId = SId) and 02 in (SELECT CId from sc where stu.SId = SId)07、查询学过“Li Pengfei”⽼师所教的所有课的同学的学号、姓名;select DISTINCT stu.SId ,stu.Sname from student as stujoin sc as s on stu.SId = s.SIdwhere (SELECT COUNT(1) from sc as ss join course as c on ss.CId = c.CIdJOIN teacher as t on c.TId = t.TIdwhere s.SId = ss.SId and t.Tname = "Li PengFei" )=(select COUNT(1) from course as cou join teacher as tea on cou.TId = tea.TIdwhere tea.Tname = "Li PengFei")08、查询课程编号“02”的成绩⽐课程编号“01”课程低的所有同学的学号、姓名;⼀ SELECT st.SId,st.Sname from (SELECT SId,score from sc where CId = '02') aINNER JOIN (SELECT SId,score from sc where CId = '01') bON a.SId = b.SIdINNER JOIN student st ON st.SId = b.SId where a.score<b.score⼆ SELECT SId,Sname from student where SId IN(SELECT s1.SId from sc s1 ,sc s2 wheres1.SId = s2.Sid and s2.CId = '02' and s1.CId = '01' and s1.score>s2.score)09、查询所有课程成绩⼩于80分的同学的学号、姓名;SELECT SId ,sname from student where SId NOT IN (select SId from sc where score >=80)SELECT stu.SId,stu.Sname from student as stuwhere (SELECT COUNT(1) from sc where stu.SId = SId) = (SELECT COUNT(1) from sc WHERE stu.SId = SId and score<80) 10、查询没有学全所有课的同学的学号、姓名;SELECT SId,Sname from student where SId IN(select SId from scgroup BY SId HAVING (SELECT COUNT(CId) from course)=COUNT(SId))SELECT DISTINCT stu.SId,stu.Sname from student as stuwhere (SELECT COUNT(1) from sc where stu.SId = SId) = (SELECT COUNT(1) from course )11、查询⾄少有⼀门课与学号为“01”的同学所学相同的同学的学号和姓名;SELECT SId ,Sname from student where SId IN(select SId from sc where CId IN(select CId from sc where SId = '01'))12、查询学过学号为“07”同学所有门课的其他同学学号和姓名;select SId ,Sname from student where SId IN(SELECT SId from sc WHERECId IN(SELECT CId from sc where SId = '07')GROUP BY CId HAVING COUNT(SId)>=(SELECT COUNT(SId) from sc where SId = '07'))13.丢了 知道的可以告诉我⼀下14、查询和“07”号的同学学习的课程完全相同的其他同学学号和姓名;select s.SId,stu.Sname from sc as s join student as stu on s.SId = stu.SId wheres.SId not in (select SId from sc where CId not in (select CId from sc where SId = 07)) and(SELECT COUNT(1) from sc where SId = 07) = (SELECT COUNT(1) from sc where SId = s.SId)GROUP BY s.SId,stu.Sname15、删除学习“Li Pengfei”⽼师课的SC表记录;DELETE from sc where CId IN (select CId from course where TId = (SELECT TId from teacher where Tname = 'Li Pengfei'))16、向SC表中插⼊⼀些记录,这些记录要求符合以下条件:没有上过编号“03”课程的同学学号,“02”,以及“02”课的平均成绩;INSERT INTO sc SELECT SId,'02',b.av from sc,(SELECT AVG(score) AS av from sc where CId = '02') bwhere SId NOT IN (SELECT SId from sc s2 where CId ='03')17、按平均成绩从⾼到低显⽰所有学⽣的“数据库”、“企业管理”、“英语”三门的课程成绩,按如下形式显⽰:select st.Sname,a.score as 'MATH',b.score as 'ENGLISH',c.score as 'CHINESE' from(SELECT SId,score from sc where CId = (select CId FROM course where Cname = 'MATH')) as aINNER JOIN (SELECT SId,score from sc where CId = (select CId FROM course where Cname = 'ENGLISH')) as b ON a.SId = b.SIdINNER JOIN(SELECT SId,score from sc where CId = (select CId FROM course where Cname = 'CHINESE')) as c ON b.SId = c.SIdINNER JOIN student as st ON c.SId = st.SIdGROUP BY st.Sname ORDER BY AVG(a.score+b.score+c.score)DESC18、查询各科成绩最⾼和最低的分:以如下形式显⽰:course_id,max,minSELECT CId as 'coures_id',MAX(score) as 'max',MIN(score) as 'min'from scGROUP BY CId19、按各科平均成绩从低到⾼和及格率的百分数从⾼到低顺序SELECT CId,AVG(score) as '平均成绩',sum(case when score>60 then 1 else 0 end)/count(*)*100 as '及格率'from scGROUP BY CIdORDER BY AVG(score) asc,sum(case when score>=60 then 1 else 0 end)/count(*) descSELECT s.CId,ame,AVG(s.score),(SELECT COUNT(1) from sc where CId = s.CId and score>60)/(SELECT COUNT(1) from sc WHERE CId = s.CId) as 及格率from sc as s JOIN course as cou on s.CId = cou.CIdGROUP BY CIdORDER BY AVG(s.score) ASC,及格率 DESC20、查询如下课程平均成绩和及格率的百分数(⽤"1⾏"显⽰): math(01),chinese(02),english(03)select AVG(a.score) as 'MATH',SUM(case when a.score>=60 then 1 else 0 end)/count(a.SId)*100 as 'MATH%',AVG(b.score) as 'ENGLISH',sum(case when b.score>=60 then 1 else 0 end)/count(b.SId)*100 as 'ENGLISH%',AVG(c.score) as 'CHINESE', sum(case when c.score>=60 then 1 else 0 end)/count(c.SId)*100 as 'CHINESE%'from(SELECT SId,score from sc where CId = (select CId FROM course where Cname = 'MATH')) as aINNER JOIN (SELECT SId,score from sc where CId = (select CId FROM course where Cname = 'ENGLISH')) as b INNER JOIN(SELECT SId,score from sc where CId = (select CId FROM course where Cname = 'CHINESE')) as cSELECT s.CId,ame,AVG(s.score),(SELECT COUNT(1) from sc where CId = s.CId and score>60)/(SELECT COUNT(1) from sc WHERE CId = s.CId) as 及格率from sc as s JOIN course as cou on s.CId = cou.CId where s.CId in (01,02,03)GROUP BY CId21、查询不同⽼师所教不同课程平均分从⾼到低显⽰SELECT tea.Tname,ame,AVG(s.score) as 平均分from sc as s JOIN course as cou on s.CId = cou.CIdJOIN teacher as tea on tea.TId = cou.TIdGROUP BY s.CIdORDER BY 平均分 desc22、查询如下课程成绩第 3 名到第 6 名的学⽣成绩单:math(01),chinese(02),english(03)——student_id,student_name,math,chinese,english,avg_score;⼀:select stu.SId,stu.Sname,(SELECT score from sc as s1 where CId = "02" and SId = stu.SId) as 数学,(SELECT score from sc as s2 where CId = "01" and SId = stu.SId) as 语⽂,(SELECT score from sc as s3 where CId = "03" and SId = stu.SId) as 英语,avg((SELECT score from sc as s1 where CId = "02" and SId = stu.SId)+(SELECT score from sc as s1 where CId = "01" and SId = stu.SId)+(SELECT score from sc as s1 where CId = "03" and SId = stu.SId))/3 as 平均成绩from student stuGROUP BY stu.SIdORDER BY 平均成绩 desc LIMIT 2,4⼆:select stu.SId,stu.Sname,ms.score as "数学",ys.score as "语⽂",es.score as "英语" ,avg(ms.score+ys.score+es.score)/3 as "平均成绩" from(SELECT SId,score from sc where CId = "02") as msINNER join (SELECT SId,score from sc where CId = "01" )as ys on ms.SId = ys.SIdINNER join (SELECT SId,score from sc where CId = "03")as es on ys.SId = es.SIdINNER join student stu on stu.SId = es.SIdGROUP BY stu.SId,stu.Sname,ms.score,ys.score,es.scoreORDER BY avg(ms.score+ys.score+es.score) DESC23、统计列印各科成绩,各分数段⼈数:课程ID,课程名称,[100-85],[85-70],[70-60],[-60]--分组求和 sum case when then else endSELECT cou.CId ,ame,SUM(CASE when s.score>=85 then 1 ELSE 0 END) as "[100-85]" ,SUM(CASE when s.score<85 and s.score >=70 then 1 ELSE 0 END) as "[85-70]" ,SUM(CASE when s.score<70 and s.score>=60 then 1 ELSE 0 END) as "[70-60]" ,SUM(CASe when s.score<60 then 1 ELSE 0 END) as "60以下"from sc as s join course as cou on cou.CId = s.CIdGROUP BY cou.CId ,ame24、查询学⽣平均成绩及其名次select SId,平均成绩,(SELECT COUNT(1) from(SELECT SId,AVG(score) as 平均成绩 from sc GROUP BY SId)as a where a.平均成绩>b.平均成绩)+1 as 排名 from(select SId,AVG(score) as 平均成绩 from sc GROUP BY SId) as bGROUP BY SIdORDER BY 平均成绩 DESCSELECT(SELECT COUNT(1) from (SELECT AVG(score) as pjcj,SId from sc GROUP BY SId) as b where b.pjcj>a.平均成绩)+1 as 排名,姓名,平均成绩from(SELECT stu.Sname as 姓名, AVG(s.score) as 平均成绩 from sc as s join student as stu on s.SId = stu.SId GROUP BY stu.Sname)as aORDER BY 排名25、查询各科成绩前三名的记录:(不考虑成绩并列情况)//有瑕疵SELECT ame,b.score,b.SId,(SELECT COUNT(1) from sc as c where c.score>b.score and c.CId = b.CId)+1 as 排名fromsc as b join course as cou on b.CId = cou.CId where (select COUNT(1) from sc as a WHERE a.CId = b.CId and a.score>b.score order BY a.CId)<3 GROUP By ame,b.SIdORDER BY ame,b.score descSELECT s.CId ,s.SId ,s.score from(SELECT CId,SId,score,(SELECT COUNT(1) from sc as s2 WHERE s2.score>s1.score and s2.CId = s1.CId)+1 as c1 from sc as s1HAVING c1<4)as sGROUP BY s.CId ,s.SIdORDER BY s.CId, s.score DESC26、查询每门课程被选修的学⽣数select ame,(SELECT count(*) from sc as a WHERE a.CId = b.CId),COUNT(b.SId)from sc as b JOIN course as cou on b.CId = cou.CidGROUP BY ame27、查询出只选修了2门课程的全部学⽣的学号和姓名select stu.SId,stu.Sname from student as stu join (SELECT SId,COUNT(SId) from scGROUP BY SId HAVING COUNT(SId) = 2) as a on stu.SId = a.SId28、查询男⽣、⼥⽣⼈数SELECT Ssex,count(Ssex) from studentGROUP BY Ssex29、查询姓“王”的学⽣名单select * from student WHERE Sname LIKE "Wang%"30、查询同名同性学⽣名单,并统计同名⼈数select a.Sname,(SELECT COUNT(1) from student as b where a.Sname = b.Sname)as c from student as a GROUP BY a.SnameHAVING c>131、1990年出⽣的学⽣名单(注:Student表中Sage列的类型是datetime)select * from student where YEAR(Sage)=199032、查询每门课程的平均成绩,结果按平均成绩升序排列,平均成绩相同时,按课程号降序排列SELECT s.CId,ame,AVG(s.score) from sc as s JOIN course as cou on s.CId = cou.CIdGROUP BY s.CIdORDER BY AVG(s.score) DESC ,s.CId ASC33、丢了 知道的告诉我⼀下34、查询课程名称为“MATH”,且分数低于60的学⽣姓名和分数SELECT stu.Sname,s.score from sc as s join student as stu on s.SId = stu.SIdwhere s.score<60 and s.CId = (SELECT CId from course where Cname = "MATH")35、查询所有学⽣的选课情况;⼀ select stu.SId,stu.Sname,s.CId,ame from sc as s join student as stu on s.SId = stu.SIdjoin course as cou on cou.CId = s.CIdGROUP BY stu.SId,s.CIdORDER BY s.SId asc⼆.合并SELECT stu.SId,stu.Sname,GROUP_CONCAT(ame SEPARATOR ' , ') as 选课 from sc as s join student as stu ON s.SId = stu.SId JOIN course as cou on cou.CId = s.CIdGROUP BY stu.SId36、查询每门课程成绩在70分以上的姓名、课程名称和分数;SELECT stu.Sname,ame,s.score from student as stu join sc as s on stu.SId = s.SId JOIN course as cou on cou.CId = s.CIdwhere s.score>=7037、查询不及格的课程,显⽰学号、姓名、课程号、成绩SELECT stu.SId,stu.Sname,s.CId,s.score from student as stu join sc as s on stu.SId = s.SIdwhere s.score <6038、查询课程编号为03且课程成绩在80分以上的学⽣的学号和姓名;SELECT stu.SId,stu.Sname from student as stu join sc as s on stu.SId = s.SIdwhere s.score >=80 and s.CId = 0339、求选了课程的学⽣⼈数去重SELECT COUNT(DISTINCT SId) as 选课⼈数 from sc40、查询选修“Li Pengfei”⽼师所授课程的学⽣中,成绩最⾼的学⽣姓名及其成绩select stu.Sname,s.score from student as stujoin sc as s on stu.SId = s.SIdwhere s.score = (SELECT MAX(score) from sc as s join course as cou on cou.CId = s.CIdjoin teacher as tea on tea.TId = cou.TId where tea.Tname = "Li Pengfei" )and s.CId = (SELECT DISTINCT s.CId from sc as s join course as cou on cou.CId = s.CIdjoin teacher as tea on tea.TId = cou.TId where tea.Tname = "Li Pengfei" )41、查询各个课程及相应的选修⼈数SELECT ame,count(1) from sc as s join course as cou on s.CId = cou.CIdGROUP BY ame42、查询不同课程成绩相同的学⽣的学号、课程号、学⽣成绩理解俩种意思:⼀:不同课程,不同学⽣,成绩相同SELECT stu.SId,stu.Sname,s.CId,s.score from student as stu join sc as s on stu.SId = s.SIdwhere s.score in (SELECT score from sc where SId!=s.SId)ORDER BY s.score DESC⼆:不同课程,相同学⽣,成绩相同(可以去重不⽤in)SELECT stu.SId,stu.Sname,s.CId,s.score from student as stu join sc as s on stu.SId = s.SIdwhere s.score in (SELECT score from sc where SId=s.SId and CId!=s.CId)ORDER BY s.score DESC43、查询每门课程成绩最好的前两名SELECT s.CId,stu.Sname,s.score from student as stu join sc as s on stu.SId = s.SIdwhere (SELECT COUNT(1) FROM sc where CId = S.CId and score>s.score)<2GROUP BY s.CId,stu.SnameORDER BY s.CId,s.score DESC44、统计每门课程的学⽣选修⼈数(超过5⼈的课程才统计)。

sql习题及答案

sql习题及答案

sql习题及答案SQL习题及答案SQL(Structured Query Language)是一种用于管理和操作关系型数据库的语言。

它是许多软件开发人员和数据分析师必备的技能之一。

在学习SQL的过程中,练习是非常重要的,因为它可以帮助我们更好地理解和掌握这门语言。

以下是一些常见的SQL习题及答案,供大家练习和参考:1. 查询所有学生的信息```sqlSELECT * FROM students;```2. 查询所有学生的姓名和年龄```sqlSELECT name, age FROM students;```3. 查询所有学生的姓名和年龄,并按年龄从小到大排序```sqlSELECT name, age FROM students ORDER BY age;```4. 查询所有学生的平均年龄```sqlSELECT AVG(age) FROM students;```5. 查询所有学生的姓名和其所在班级的名称```sqlSELECT , c.class_nameFROM students sJOIN classes c ON s.class_id = c.class_id;```6. 查询所有学生的姓名和其所在班级的名称,如果没有班级则显示“未分配班级”```sqlSELECT , COALESCE(c.class_name, '未分配班级')FROM students sLEFT JOIN classes c ON s.class_id = c.class_id;```7. 查询每个班级的学生数量```sqlSELECT class_id, COUNT(*) AS student_countFROM studentsGROUP BY class_id;```以上是一些常见的SQL习题及答案,希望能够帮助大家更好地理解和掌握SQL 语言。

通过不断的练习和实践,相信大家一定能够成为SQL的高手!。

sql语句经典题

sql语句经典题

sql语句经典题SQL语句经典题指的是一些经典的SQL语句题目,通常用于测试和评估数据库开发和管理人员对SQL语法的掌握程度和应用能力。

这些题目通常涵盖了数据库的基本操作、查询、插入、更新、删除等方面的知识点,具有一定的难度和实用性。

以下是一些示例的SQL语句经典题:1.假设有一个名为"Employees"的表,其中包含"EmployeeID"、"FirstName"、"LastName"、"Department"和"Salary"等列,要求查询所有部门的平均工资。

2.假设有两个表"Employees"和"Departments",其中"Employees"表包含员工的个人信息,而"Departments"表包含部门的信息。

要求将这两个表通过"DepartmentID"连接起来,查询每个部门的员工数量。

3.假设有一个名为"Products"的表,其中包含"ProductID"、"ProductName"、"Category"和"Price"等列,要求按照价格升序和类别分组查询出每个类别下的最低价格。

总结来说,SQL语句经典题是指一些具有代表性、实用性和难度系数的SQL语句题目,用于测试和评估数据库开发和管理人员对SQL语法的掌握程度和应用能力。

这些题目通常涵盖了数据库的基本操作、查询、插入、更新、删除等方面的知识点,并且具有一定的难度和复杂性。

MySQL数据库练习题_sql基础题40题

MySQL数据库练习题_sql基础题40题

1、创建数据库和数据表,并完成以下相关题目。

几个基础实体表可以存储学生、班级、课程、教师、系别相关信息写出相关数据表(包括未列出的关系表、其它表)创建语句(表详细属性可参照以下问题进行补全)假定以下所有问题相关表数据都存在2、当查找学生信息的同时,可以列出班主任信息3、查找学生姓名为xxx 的人4、查找学生分数大于80的人5、查找老师年龄小于30岁的人6、查找老师的姓名,年龄,e-mail其中年龄不为xx岁的老师7、查找学生分数80分或者90分8、查找学生分数为88分并且性别为男的学生9、查找出学生分数在90—100之间的所有学生10、查找出姓李的老师11、查找出老师使用的邮箱为lang的12、查找出老师的号码为159开头的13、查询老师年龄从高到低14、查询出每个学生的班主任老师,只列出学生的姓名,年龄,老师的姓名,电话15、查询出学生姓名,性别,e_mail 、老师姓名,年龄,e_mail16、将学生的年龄进行分组显示17、查找出学生中年龄是19岁的人,并且19岁人中找出一个叫汪雪的人18、查询出学生年龄19、列出老师中年龄最大的3个人20、查询所有数学系学生的信息21、查询李老师所教的课程号、课程名22、查询年龄大于20岁的女同学的学号和姓名23、查询学号为‘H0301’学生所选修的全部课程成绩24、查询平均成绩都在80分以上的学生学号及平均成绩25、查询至少有6人选修的课程号26、查询C02号课程得最高分的学生的学号27、查询学号为’J0101’的学生选修的课程号和课程名28、‘李小波’所选修的全部课程名称29、所有成绩都在70分以上的学生姓名及所在系30、英语成绩比数学成绩好的学生31、至少选修了两门课及以上的学生姓名和性别32、选修了李老师所讲课程的学生人数33、“数据结构”课程得最高分的学生的姓名、性别和所在系34、显示所有课程的选修情况35、取出没有选修“数据结构”课程的学生姓名和年龄36、没有选修李老师所讲课程的学生37、没有选修李老师和王老师所讲课程的学生38、检索至少选修课程“数据结构”和“C语言”的学生学号39、检索学习课程号为C02的学生学号、姓名和所在系40、检索选修课程号C01或C02的学生学号、姓名和所在系。

mysql大学考试题及答案

mysql大学考试题及答案

mysql大学考试题及答案# MySQL大学考试题及答案一、选择题1. MySQL数据库默认使用哪个端口号?- A. 3306- B. 3307- C. 3308- D. 3016答案:A2. 在MySQL中,以下哪个SQL语句用于创建新的数据库?- A. `CREATE TABLE`- B. `CREATE DATABASE`- C. `NEW DATABASE`- D. `ADD DATABASE`答案:B3. 如果想要在MySQL中删除一个已存在的表,应该使用哪个语句? - A. `DELETE TABLE`- B. `REMOVE TABLE`- C. `DROP TABLE`- D. `DESTROY TABLE`答案:C4. MySQL中的事务是什么?- A. 数据库中的一个文件- B. 一组不可分割的数据库操作- C. 数据库中的一个索引- D. 数据库中的一个视图答案:B5. 在MySQL中,使用哪个命令可以查看当前数据库的所有表?- A. `SHOW TABLES`- B. `LIST TABLES`- C. `SELECT * FROM tables`- D. `TABLE STATUS`答案:A二、填空题1. MySQL中的数据类型包括数值、________、时间日期和________四种。

答案:字符串、空间数据2. 在MySQL中,使用________语句可以给表添加新的列。

答案:ALTER TABLE3. MySQL中的存储过程是由________语句创建的。

- 答案:CREATE PROCEDURE4. 索引是用来________数据的,以加快数据检索速度。

答案:优化5. MySQL中的外键约束保证了数据的________和________。

答案:引用完整性、域完整性三、简答题1. 请简述MySQL中主键和唯一索引的区别。

答案:- 主键是一个表中用来唯一标识每个记录的字段或字段组合。

mysql-50道经典sql题

mysql-50道经典sql题

mysql-50道经典sql题English.Q1: Find all customers who have placed orders with a total value of over $1000.sql.SELECT customer_id, SUM(order_total) AS total_value.FROM orders.GROUP BY customer_id.HAVING total_value > 1000;Q2: Find all products that have been ordered more than 10 times.sql.SELECT product_id, COUNT() AS order_count.FROM order_items.GROUP BY product_id.HAVING order_count > 10;Q3: Find all employees who have worked on more than 5 projects.sql.SELECT employee_id, COUNT() AS project_count.FROM project_assignments.GROUP BY employee_id.HAVING project_count > 5;Q4: Find all orders that were shipped within 2 days of being placed.sql.SELECT order_id, DATEDIFF(ship_date, order_date) AS shipping_time.FROM orders.WHERE shipping_time <= 2;Q5: Find all customers who have placed at least one order in the last year.sql.SELECT customer_id.FROM orders.WHERE order_date >= DATE_SUB(CURDATE(), INTERVAL 1YEAR);Chinese.Q1: 找出所有总订单价值超过 1000 美元的客户。

mysql试题及答案

mysql试题及答案

mysql试题及答案MySQL作为一种常用的关系型数据库管理系统,在企业和个人应用中广泛使用。

通过进行MySQL试题的练习和答案的解析,可以帮助读者加深对MySQL的理解和熟练应用。

本文将提供一系列MySQL试题及答案,旨在帮助读者提高MySQL技能。

1. 试题一:MySQL基础1.1 MySQL是什么?它有哪些特点?MySQL是一种开源的关系型数据库管理系统,具有以下特点:- 开源免费:用户可以免费使用和修改MySQL,而且还能获得MySQL 的源代码。

- 跨平台:MySQL支持多种操作系统,如Windows、Linux、MacOS等。

- 高性能:MySQL具有高效的数据存储和检索能力,能够处理大量数据。

- 可扩展性:MySQL支持可扩展性,可以通过添加更多的硬件资源来提高系统性能。

- 安全性:MySQL提供了访问控制和数据加密等安全措施,保护数据的安全性。

1.2 如何在Windows系统上安装MySQL?在Windows系统上安装MySQL,可以按照以下步骤进行:1. 下载MySQL安装包,选择合适的版本和安装包类型。

2. 双击安装包,根据安装向导进行安装。

3. 配置MySQL安装参数,如设置root密码、端口号等。

4. 完成安装后,启动MySQL服务。

1.3 如何连接MySQL数据库?连接MySQL数据库,可以使用MySQL提供的命令行工具或者其他可视化管理工具。

- 命令行连接:打开命令行界面,输入`mysql -u 用户名 -p 密码`,即可连接到MySQL数据库。

- 可视化管理工具连接:根据所使用的工具类型和版本,在连接设置中填写相关信息,如主机名、端口号、用户名、密码等。

2. 试题二:MySQL查询语句2.1 如何查询表中的所有数据?要查询表中的所有数据,可以使用SELECT语句:```sqlSELECT * FROM 表名;```这条语句将返回指定表中的所有数据。

2.2 如何查询表中特定条件的数据?要查询表中特定条件的数据,可以使用WHERE子句来指定条件:```sqlSELECT * FROM 表名 WHERE 条件;```其中,条件可以是等于、大于、小于、不等于等比较运算符,也可以是逻辑运算符(AND、OR、NOT)的组合。

mysql之经典50道题

mysql之经典50道题

mysql之经典50道题MySQL是一种开源的关系型数据库管理系统,被广泛应用于各种Web应用程序和企业级应用中。

在使用MySQL的过程中,我们经常会遇到一些常见的问题和挑战。

下面是MySQL的经典50道题,希望对大家有所帮助。

1. 什么是MySQL?MySQL是一种开源的关系型数据库管理系统,它使用SQL语言进行数据管理。

2. MySQL的特点有哪些?MySQL具有高性能、可靠性、可扩展性和易用性等特点。

3. 如何安装MySQL?可以从MySQL官方网站下载MySQL的安装包,并按照安装向导进行安装。

4. 如何创建数据库?可以使用CREATE DATABASE语句来创建数据库,例如:CREATE DATABASE mydb;5. 如何创建表?可以使用CREATE TABLE语句来创建表,例如:CREATE TABLE mytable (id INT, name VARCHAR(20));6. 如何插入数据?可以使用INSERT INTO语句来插入数据,例如:INSERT INTO mytable (id, name) VALUES (1, 'John');7. 如何查询数据?可以使用SELECT语句来查询数据,例如:SELECT * FROM mytable;8. 如何更新数据?可以使用UPDATE语句来更新数据,例如:UPDATE mytable SET name = 'Tom' WHERE id = 1;9. 如何删除数据?可以使用DELETE FROM语句来删除数据,例如:DELETE FROM mytable WHERE id = 1;10. 如何备份数据库?可以使用mysqldump命令来备份数据库,例如:mysqldump -u username -p password mydb > backup.sql;11. 如何恢复数据库?可以使用mysql命令来恢复数据库,例如:mysql -u username -p password mydb < backup.sql;12. 如何优化查询性能?可以使用索引、合理设计表结构、避免全表扫描等方法来优化查询性能。

sql 试题

sql 试题

sql 试题在数据库管理中,SQL(结构化查询语言)是一种用于管理和操作关系型数据库的标准语言。

它的功能强大,灵活性高,在数据库系统和应用程序中得到广泛应用。

本文将探讨一些常见的SQL试题,测试读者对SQL知识的掌握程度和应用能力。

1. 查询语句SQL中最基本的操作是查询数据。

请写出一个查询语句,从名为“students”的表中检索所有学生的姓名和成绩。

答案:SELECT name, score FROM students;2. 操作符SQL中有各种操作符,用于在查询和更新数据时进行比较或者逻辑操作。

请写出一个查询语句,从名为“products”的表中寻找价格在100到200之间的商品。

答案:SELECT * FROM products WHERE price BETWEEN 100 AND 200;3. 聚合函数聚合函数用于对数据进行统计分析。

请写出一个查询语句,计算名为“orders”的表中所有订单的总金额。

答案:SELECT SUM(amount) FROM orders;4. 分组和排序有时候我们需要对数据进行分组和排序。

请写出一个查询语句,统计名为“employees”的表中每个部门员工的平均工资,并按照平均工资的降序排列。

答案:SELECT department, AVG(salary) AS avg_salary FROM employees GROUP BY department ORDER BY avg_salary DESC;5. 表连接表连接是SQL中非常重要的概念,用于在多个表之间建立关联关系。

请写出一个查询语句,从名为“orders”的表和名为“customers”的表中检索所有订单的顾客姓名。

答案:SELECT , orders.order_number FROM customers JOIN orders ON customers.customer_id = orders.customer_id;6. 子查询子查询是一种嵌套在其他查询语句中的查询语句。

Mysql----sql语句练习题(二)

Mysql----sql语句练习题(二)

Mysql----sql语句练习题(⼆)今天有时间,咱们继续把数据库的查询内容继续补充,上次sql语句练习⼀是单表查询,今天的练习⼆是多表查询,多表查询1.1内连接查询计算机系学⽣的选课情况,列出学⽣的名字、所选课程的课程号和考试成绩查询“信息管理系”选了“计算机⽂学”课程的学⽣信息,列出学⽣姓名、课程名和成绩查询所有选了"微机原理"课程的学⽣姓名和所在系统计每个系学⽣的考试平均成绩统计计算机系学⽣中每门课程的选课⼈数、平均成绩、最⾼成绩和最低成绩1.2⾃连接查询与李四在同⼀个系学习的学⽣姓名和所在系查询与“数据结构与算法”课程在同⼀个学期开设的课程的课程名和开课学期1.3外连接查询全体学⽣的选课情况,包括选了课的学⽣和没有选课的学⽣查询没有⼈选的课程的课程名查询计算机系没有选课的学⽣,列出学⽣的姓名和性别统计计算机系每个学⽣的选课门数,包括没有选课的学⽣查询信息管理系选课门数少于3门的学⽣的学号和选课门数,包括没选课的学⽣。

查询结果按选课门数递增排序2、top限制查询年龄最⼤的三个学⽣的姓名、年龄、所在系查询年龄最⼤的三个学⽣的姓名、年龄、所在系(包括年龄并列第3名)查询⼤学英语考试成绩最⾼的的前三名学⽣的姓名、所在系和⼤学英语考试成绩查询选课⼈数最少的两门课程(不包括没有⼈选的课程),列出课程号和选课⼈数查询计算机系选课门数超过两门的学⽣中,考试平均成绩最⾼的前两名(包括并列的情况)学⽣的序号、选课门数和平均成绩3、将查询结果保存到表中查询计算机系学⽣的学号、姓名、性别和年龄,并将查询结果保存到新表student_CS中查询计算机系学⽣的学号、姓名、性别和年龄,并将查询结果保存到临时表student_CS_Two中4、数据更改4.1插⼊数据将⼀个新⽣插⼊student表中,其学号为0821105,姓名为陈学冬,性别为男,年龄18岁,信息管理系学⽣4.2更新数据将所有学⽣的年龄+1将'0811103'号学⽣的年龄改为17岁将计算机系全体学⽣的成绩加5分4.3删除数据删除所有不及格学⽣的修课记录删除计算机系不及格学⽣的修课记录接下来,把所有的举例的多表查询的结果,放出来,供有需要的同学借鉴使⽤/*1.1内连接*/--查询计算机系学⽣的选课情况,列出学⽣的名字、所选课程的课程号和考试成绩SELECT Sname,Cno,Grade FROM student JOIN sc ON student.Sno = sc.Sno WHERE Sdept = '计算机系'SELECT Sname,Cno,Grade FROM student AS s JOIN sc ON s.Sno = sc.Sno WHERE Sdept = '计算机系'--查询“信息管理系”选了“计算机⽂学”课程的学⽣信息,列出学⽣姓名、课程名和成绩SELECT Sname,Cname,GradeFROM student AS s JOIN sc ON s.Sno = sc.SnoJOIN Course ON o = oWHERE sdept = '信息管理系' AND Cname = '计算机⽂化学'-- 查询所有选了"微机原理"课程的学⽣姓名和所在系SELECT Sname,Sdept,Cname FROM student sJOIN sc ON s.Sno=sc.SnoJOIN course ON o= oWHERE Cname = '微机原理'-- 统计每个系学⽣的考试平均成绩SELECT Sdept,AVG(Grade) AS 平均成绩 FROM student s JOIN sc ON s.Sno = sc.Sno GROUP BY Sdept-- 统计计算机系学⽣中每门课程的选课⼈数、平均成绩、最⾼成绩和最低成绩SELECT Cno,COUNT(*) AS 选课⼈数,AVG(Grade) AS 平均成绩,MAX(Grade) AS 最⾼成绩,MIN(Grade) AS 最低成绩FROM student s JOIN sc ON s.Sno = sc.Sno WHERE Sdept = '计算机系' GROUP BY Cno/*1.2⾃连接*/-- 查询与李四在同⼀个系学习的学⽣姓名和所在系SELECT s2.Sname,s2.SdeptFROM student s1 JOIN student s2 ON s1.Sdept = s2.SdeptWHERE s1.Sname = '李四'AND s2.Sname != '李四'-- 查询与“数据结构与算法”课程在同⼀个学期开设的课程的课程名和开课学期SELECT ame,c1.SemesterFROM course c1 JOIN course c2 ON c1.Semester = c2.SemesterWHERE ame = "数据结构与算法"/*1.3外连接*/-- 查询全体学⽣的选课情况,包括选了课的学⽣和没有选课的学⽣SELECT s.Sno,Sname,Cno,Grade FROM student s LEFT JOIN sc ON s.Sno = sc.Sno-- 查询没有⼈选的课程的课程名SELECT Cname FROM course c LEFT JOIN sc ON o = o WHERE o IS null-- 查询计算机系没有选课的学⽣,列出学⽣的姓名和性别SELECT Sname,Ssex FROM student s LEFT JOIN sc ON s.Sno = sc.Sno WHERE Sdept = '计算机系' AND sc.Sno IS null-- 统计计算机系每个学⽣的选课门数,包括没有选课的学⽣SELECT Sname,s.Sno,COUNT(*) AS 选课门数 FROM student s LEFT JOIN sc ON s.Sno = sc.Sno WHERE Sdept = '计算机系' GROUP BY s.Sno-- 查询信息管理系选课门数少于3门的学⽣的学号和选课门数,包括没选课的学⽣。

MYSQL练习题及标准答案

MYSQL练习题及标准答案

MYSQL练习题及标准答案题⽬⼀?问题描述:?为管理岗位业务培训信息,建⽴3个表:S (S#,SN,SD,SA) S#,SN,SD,SA 分别代表学号、学员姓名、所属单位、学员年龄? C (C#,CN)C#,CN 分别代表课程编号、课程名称?SC(S#,C#,G ) S#,C#,G 分别代表学号、所选修的课程编号、学习成绩?1.使⽤标准SQL嵌套语句查询选修课程名称为’税收基础’的学员学号和姓名?--实现代码:?SELECT SN,S# FROM S?WHERE [S#] IN(? SELECT [S#] FROM C,SC? WHERE C.[C#]=SC.[C#]AND CN=N\'税收基础\')2.使⽤标准SQL嵌套语句查询选修课程编号为’C2’的学员姓名和所属单位?--实现代码:SELECT S.SN,S.SD FROM S,SC?WHERES.[S#]=SC.[S#]? AND SC.[C#]=\'C2\'?3.使⽤标准SQL嵌套语句查询不选修课程编号为’C5’的学员姓名和所属单位?--实现代码:SELECT SN,SD FROM S?WHERE [S#] NOT IN(SELECT [S#] FROM SCWHERE [C#]=\'C5\')?4. 使⽤标准SQL嵌套语句查询选修全部课程的学员姓名和所属单位--实现代码:?SELECT SN,SD FROM S?WHERE [S#] IN(SELECT [S#] FROM SCRIGHT JOIN ?C ON SC.[C#]=C.[C#] GROUP BY [S#]HAVING COUNT(*)=COUNT([S#]))5. 查询选修了课程的学员⼈数?--实现代码:SELECT 学员⼈数=COUNT(DISTINCT [S#]) FROM SC?6. 查询选修课程超过5门的学员学号和所属单位?--实现代码:? SELECT SN,SDFROM SWHERE [S#] IN(SELECT [S#] FROM SC ? GROUP BY [S#]HAVINGCOUNT(DISTINCT [C#])>5)题⽬⼆?问题描述:本题⽤到下⾯三个关系表:?CARD借书卡。

sql数据库练习题

sql数据库练习题

sql数据库练习题SQL数据库练习题在现代信息技术的发展中,数据库技术扮演着至关重要的角色。

SQL (Structured Query Language)作为一种用于管理和操作关系型数据库的语言,被广泛应用于各行各业。

为了提高我们的SQL技能,下面将给出一些SQL数据库练习题,帮助读者巩固和深化对SQL的理解。

1. 创建数据库和表格首先,我们需要创建一个数据库和一些表格。

假设我们要创建一个学生信息管理系统,其中包含两个表格:学生表格和课程表格。

学生表格包括学生ID、姓名、性别和年龄等字段,课程表格包括课程ID、课程名称和教师ID等字段。

请使用SQL语句创建这两个表格。

2. 插入数据接下来,我们需要向表格中插入一些数据。

假设我们有以下学生和课程信息:学生表格:学生ID 姓名性别年龄1 张三男 202 李四女 223 王五男 21课程表格:课程ID 课程名称教师ID1 数学 10012 英语 10023 物理 1003请使用SQL语句将以上数据插入到对应的表格中。

3. 查询数据现在,我们已经成功插入了数据,接下来可以使用SQL语句查询这些数据。

请使用SQL语句完成以下查询:a) 查询所有学生的姓名和年龄。

b) 查询所有课程的名称和对应的教师姓名。

c) 查询年龄大于20岁的学生的姓名和性别。

d) 查询教师ID为1001的课程名称。

4. 更新数据有时候,我们需要对数据库中的数据进行更新。

请使用SQL语句完成以下操作:a) 将学生ID为1的学生的年龄更新为22岁。

b) 将课程ID为3的课程的教师ID更新为1004。

5. 删除数据在某些情况下,我们需要从数据库中删除数据。

请使用SQL语句完成以下操作:a) 删除学生ID为3的学生的记录。

b) 删除课程ID为2的课程的记录。

6. 数据库连接在实际应用中,我们经常需要在多个表格之间进行连接查询。

请使用SQL语句完成以下操作:a) 查询每个学生所选的课程名称和对应的教师姓名。

MysqlSql语句练习题(50道)

MysqlSql语句练习题(50道)

MysqlSql语句练习题(50道)MySql 语句练习50题表名和字段–1.学⽣表Student(s_id,s_name,s_birth,s_sex) –学⽣编号,学⽣姓名, 出⽣年⽉,学⽣性别–2.课程表Course(c_id,c_name,t_id) – –课程编号, 课程名称, 教师编号–3.教师表Teacher(t_id,t_name) –教师编号,教师姓名–4.成绩表Score(s_id,c_id,s_score) –学⽣编号,课程编号,分数测试数据--建表--学⽣表CREATE TABLE `Student`(`s_id` VARCHAR(20),`s_name` VARCHAR(20) NOT NULL DEFAULT '',`s_birth` VARCHAR(20) NOT NULL DEFAULT '',`s_sex` VARCHAR(10) NOT NULL DEFAULT '',PRIMARY KEY(`s_id`));--课程表CREATE TABLE `Course`(`c_id` VARCHAR(20),`c_name` VARCHAR(20) NOT NULL DEFAULT '',`t_id` VARCHAR(20) NOT NULL,PRIMARY KEY(`c_id`));--教师表CREATE TABLE `Teacher`(`t_id` VARCHAR(20),`t_name` VARCHAR(20) NOT NULL DEFAULT '',PRIMARY KEY(`t_id`));--成绩表CREATE TABLE `Score`(`s_id` VARCHAR(20),`c_id` VARCHAR(20),`s_score` INT(3),PRIMARY KEY(`s_id`,`c_id`));--插⼊学⽣表测试数据insert into Student values('01' , '赵雷' , '1990-01-01' , '男');insert into Student values('02' , '钱电' , '1990-12-21' , '男');insert into Student values('03' , '孙风' , '1990-05-20' , '男');insert into Student values('04' , '李云' , '1990-08-06' , '男');insert into Student values('05' , '周梅' , '1991-12-01' , '⼥');insert into Student values('06' , '吴兰' , '1992-03-01' , '⼥');insert into Student values('07' , '郑⽵' , '1989-07-01' , '⼥');insert into Student values('08' , '王菊' , '1990-01-20' , '⼥');--课程表测试数据insert into Course values('01' , '语⽂' , '02');insert into Course values('02' , '数学' , '01');insert into Course values('03' , '英语' , '03');--教师表测试数据insert into Teacher values('01' , '张三');insert into Teacher values('02' , '李四');insert into Teacher values('03' , '王五');--成绩表测试数据insert into Score values('01' , '01' , 80);insert into Score values('01' , '02' , 90);insert into Score values('01' , '03' , 99);insert into Score values('02' , '01' , 70);insert into Score values('02' , '02' , 60);insert into Score values('02' , '03' , 80);insert into Score values('03' , '01' , 80);insert into Score values('03' , '02' , 80);insert into Score values('03' , '03' , 80);insert into Score values('04' , '01' , 50);insert into Score values('04' , '02' , 30);insert into Score values('04' , '03' , 20);insert into Score values('05' , '01' , 76);insert into Score values('05' , '02' , 87);insert into Score values('06' , '01' , 31);insert into Score values('06' , '03' , 34);insert into Score values('07' , '02' , 89);insert into Score values('07' , '03' , 98);表数据如下student 学⽣表:s_id s_name s_birth s_sex01赵雷1990-01-01男02钱电1990-12-21男03孙凤1990-05-20男04李云1990-08-06男05周梅1991-12-12⼥06吴兰2017-12-13⼥07郑⽵1989-07-01⼥08王菊1990-01-20⼥09赵雷1990-01-21⼥10赵雷1990-01-22男score 分数表:s_id c_id s_score 010180010290010399020170020260020380030180030280030380040150040230040320050176050387060131060334070389070198course 课程表c_id c_name t_id01语⽂0202数学0103英语03teacher ⽼师表:t_id t_name01张三02李四03王五-- 准备条件,去掉 sql_mode 的 ONLY_FULL_GROUP_BY 否则此种情况下会报错:-- Expression #1 of select list is not in group by clause and contains nonaggregated column 'userinfo.-- 原因:-- MySQL 5.7.5和up实现了对功能依赖的检测。

my sql数据库考试题目和答案

my sql数据库考试题目和答案

my sql数据库考试题目和答案**MySQL数据库考试题目和答案**一、选择题(每题2分,共20分)1. MySQL数据库默认使用的端口号是多少?A. 21B. 22C. 3306D. 80**答案:C**2. 在MySQL中,以下哪个命令用于创建数据库?A. CREATE TABLEB. CREATE DATABASEC. DROP DATABASED. ALTER DATABASE**答案:B**3. MySQL中,以下哪个数据类型用于存储日期和时间?A. DATETIMEB. DATEC. TIMED. TIMESTAMP**答案:A**4. 在MySQL中,以下哪个命令用于添加新列?A. ALTER TABLEB. CREATE TABLEC. DROP TABLED. RENAME TABLE**答案:A**5. 如果想要在MySQL中查询某个表的所有列和数据类型,应该使用哪个命令?A. DESCRIBE table_name;B. SHOW TABLES;C. SHOW COLUMNS FROM table_name;D. SELECT * FROM table_name;**答案:C**6. 在MySQL中,以下哪个命令用于删除数据库?A. DROP TABLEB. DROP DATABASEC. REMOVE DATABASED. DELETE DATABASE**答案:B**7. MySQL中的主键约束保证列值的唯一性和什么?A. 非空B. 非负C. 非零D. 非负**答案:A**8. 在MySQL中,以下哪个命令用于备份数据库?A. mysqldumpB. mysqlrestoreC. mysqlimportD. mysqlexport**答案:A**9. MySQL中,以下哪个函数用于获取当前日期?A. NOW()B. CURDATE()C. CURRENT_DATED. TODAY()**答案:B**10. 在MySQL中,以下哪个命令用于导入.sql文件?A. mysqlimportB. mysqldumpC. mysqlrestoreD. source**答案:D**二、填空题(每题2分,共20分)1. MySQL是一个_______数据库管理系统。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
| 20 | 2175.000000 |
| 30 | 1566.666667 |
+--------+-------------+
select * from salgrade;
+-------+-------+-------+
);
insert into sc(sno,cno,scgrade) values(1,1,30);
insert into sc(sno,cno,scgrade) values(1,2,50);
insert into sc(sno,cno,scgrade) values(1,3,80);
insert into sc(sno,cno,scgrade) values(1,4,90);
scgrade double(3,1),
constraint sc_sno_cno_pk primary key(sno,cno),
constraint sc_sno_fk foreign key(sno) references s(sno),
constraint sc_cno_fk foreign key(cno) references c(cno)
13.有3个表S(学生表),C(课程表),SC(学生选课表)
S(SNO,SNAME)代表(学号,姓名)
C(CNO,CNAME,CTEACHER)代表(课号,课名,教师)
SC(SNO,CNO,SCGRADE)代表(学号,课号,成绩)
问题:
1、找出没选过“黎明”老师的所有学生姓名。
2、列出2门以上(含2门)不及格学生姓名及平均成绩。
e.sal > t.avgsal;
+--------+-------+
| deptno | ename |
+--------+-------+
| 30 | ALLEN |
| 20 | JONES |
| 30 | BLAKE |
| 20 | SCOTT |
select sno from sc where cno = 2;
select
s.sname
from
sc
join
s
on
sc.sno = s.sno
where
cno = 1 and sc.sno in(select sno from sc where cno = 2);
select * from s where sno not in(select sno from sc where cno = (select cno from c where cteacher = '黎明'));
--列出2门以上(含2门)不及格学生姓名及平均成绩
t1
select
sc.sno,s.sname,count(*) as studentNum
insert into sc(sno,cno,scgrade) values(4,3,50);
insert into sc(sno,cno,scgrade) values(4,4,80);
/*
1、找出没选过“黎明”老师的所有学生姓名。
2、列出2门以上(含2门)不及格学生姓名及平均成绩。
3、即学过1号课程又学过2号课所有学生的姓名。
*/
--先找出选过黎明老师的学生编号 -> 黎明老师的授课的编号
select cno from c where cteacher = '黎明';
select sno from sc where cno = (select cno from c where cteacher = '黎明');
sc.sno,s.sname
having
studentNum >= 2) t1
join
(select
sc.sno,avg(sc.scgrade) as avgscgrade
cteacher varchar(32)
);
insert into c(cname,cteacher) values('Java','吴老师');
insert into c(cname,cteacher) values('C++','王老师');
insert into c(cname,cteacher) values('C##','张老师');
insert into c(cname,cteacher) values('MySQL','郭老师');
insert into c(cname,cteacher) values('Oracle','黎明');
create table sc(
sno int(4),
cno int(4),
insert into sc(sno,cno,scgrade) values(1,5,70);
insert into sc(sno,cno,scgrade) values(2,2,80);
insert into sc(sno,cno,scgrade) values(2,3,50);
insert into sc(sno,cno,scgrade) values(2,4,70);
from
emp e
group by
e.deptno;
将以下查询结果当成临时表t(deptno,avgsal)
+--------+-------------+
| deptno | avgsal |
+--------+-------------+
| 10 | 2916.666667 |
| 10 | 5000.00 |
| 20 | 3000.00 |
| 30 | 2850.00 |
+--------+---------+
将以上查询结果当成一个临时表t(deptno,maxsal)
select
e.deptno,e.ename,t.maxsal,e.sal
from
(select
e.deptno,max(e.sal) as maxsal
from
emp e
group by
e.deptno)t
join
emp e
on
t.deptno = e.deptno
where
t.maxsal = e.sal
order by
from ຫໍສະໝຸດ sc join s
on
sc.sno = s.sno
where
scgrade < 60
group by
insert into s(sname) values('wangwu');
insert into s(sname) values('zhaoliu');
create table c(
cno int(4) primary key auto_increment,
cname varchar(32),
from
sc
group by
sc.sno) t2
on
t1.sno = t2.sno;
--即学过1号课程又学过2号课所有学生的姓名
select sno from sc where cno = 1;
e.deptno;
+--------+-------+---------+---------+
| deptno | ename | maxsal | sal |
+--------+-------+---------+---------+
| 10 | KING | 5000.00 | 5000.00 |
insert into sc(sno,cno,scgrade) values(2,5,80);
insert into sc(sno,cno,scgrade) values(3,1,60);
insert into sc(sno,cno,scgrade) values(3,2,70);
insert into sc(sno,cno,scgrade) values(3,3,80);
| 20 | SCOTT | 3000.00 | 3000.00 |
| 20 | FORD | 3000.00 | 3000.00 |
| 30 | BLAKE | 2850.00 | 2850.00 |
+--------+-------+---------+---------+
3、即学过1号课程又学过2号课所有学生的姓名。
create table s(
sno int(4) primary key auto_increment,
sname varchar(32)
);
insert into s(sname) values('zhangsan');
insert into s(sname) values('lisi');
1.取得每个部门最高薪水的人员名称
相关文档
最新文档