复杂SQL练习题共25页文档
SQL练习题
SQL练习题一.上机操作题:用SQL命令完成下列各题功能:1.检索工资多于1230元的职工号2.检索有职工工资多于2010元的仓库信息3.给出在仓库”WH1“或”WH2”工作,并且工资少于2020元的职工号4.找出工资多于1230元的职工号和他们所在的城市.5.找出工作在面积大于400的仓库的职工号以及这些职工工作所在的城市。
6.哪些城市至少有一个仓库的职工工资为1250元7.查询所有职工的工资都多于1210元的仓库的信息。
8.找出和职工E4挣同样工资的所有职工9.检索出工资在2020元到2050元范围内的职工信息10.从供应商关系中检索出全部公司的信息。
11.找出不在北京的全部供应商信息12.按职工的工资值升序检索出全部职工信息13.先按仓库号排序,再按工资排序并输出全部职工信息14.找出供应商所在地的数目15.求所有职工的工资和16.求北京和上海的仓库职工的工资总和17.求所有职工的工资都多于2020元的仓库的平均面积18.求在WH2仓库工作的职工的最高工资值19.求每个仓库的职工的平均工资20.求至少有两个职工的每个仓库的平均工资21.找出尚未确定供应商的订购单(供应商号为空)22.列出已经确定了供应商的订购单信息23.列出每个职工经手的具有最高总金额的订购单信息24.检索那些仓库中还没有职工的仓库的信息25.检索那些仓库中至少已经有一个职工的仓库的信息26.检索有职工的工资大于或等于WH1仓库中任意一名职工工资的仓库号27.检索有职工的工资大于或等于WH1仓库中任何一名职工工资的仓库号28.检索有职工的工资大于或等于WH1仓库中所有职工工资的仓库号29.显示工资最高的三位职工的信息30.显示工资最低的30%职工的信息31.显示城市为北京和上海的仓库信息。
32.将查询到的职工的信息存放到数组TMP中。
33.将最高工资的前三位职工的信息存放到表V1中。
34.将城市为北京的仓库信息存入到临时表TEMP中。
(完整版)sql语句练习题及答案
(完整版)sql语句练习题及答案⼀在数据库 school 中建⽴student , sc, course 表。
学⽣表、课程表、选课表属于数据库School ,其各⾃的数据结构如下:学⽣Student (Sno,Sname,Ssex,Sage,Sdept)课程表course(Cno,Cname,Cpno,Ccredit)学⽣选课SC(Sno,Cno,Grade)⼆设定主码1 Student表的主码:sno2 Course表的主码:cno3 Sc表的主码:sno,cno1写出使⽤ Create Table 语句创建表 student , sc, course 的SQL语句23 删除student表中的元组4在数据库school中删除关系student5在student表添加属性sbirthdate 类型datetimeDelete1 删除所有JSJ 系的男⽣delete from Student where Sdept=’JSJ’ and Ssex=’男’;2 删除“数据库原理”的课的选课纪录delete from SC where Cno in (select Cno fromCourse where Cname=’数据库原理’);Update1 修改0001 学⽣的系科为: JSJ2 把陈⼩明的年龄加1岁,性别改为⼥。
2 修改李⽂庆的1001课程的成绩为93 分3 把“数据库原理”课的成绩减去1分Select 查询语句⼀单表1查询年龄在19⾄21岁之间的⼥⽣的学号,姓名,年龄,按年龄从⼤到⼩排列。
2查询姓名中第2个字为“明”字的学⽣学号、性别。
3查询 1001课程没有成绩的学⽣学号、课程号4查询JSJ 、SX、WL 系的年龄⼤于25岁的学⽣学号,姓名,结果按系排列5按10分制查询学⽣的sno,cno,10分制成绩(1-10分为1 ,11-20分为2 ,30-39分为3,。
90-100为10)6查询 student 表中的学⽣共分布在那⼏个系中。
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.以下关于外键和相应的主键之间的关系,正确的是( )。
复杂数据集的SQL查询处理试卷
复杂数据集的SQL查询处理试卷(答案见尾页)一、选择题1. 在SQL中,如何高效地查询大量数据时减少查询时间?A. 使用索引B. 使用分区C. 将数据存储在多个表中D. 使用物化视图2. 当需要对多个表进行复杂的连接操作时,应该使用哪种类型的子查询?A. 表子查询B. 行子查询C. 列子查询D. 匿名子查询3. 在处理包含大量重复数据的表时,可以使用哪种方法来提高查询效率?A. 使用UNION操作符B. 使用GROUP BY子句C. 使用DISTINCT关键字D. 使用JOIN操作符4. 以下哪个SQL语句可以有效地从一个表中提取特定的列,并根据某个条件过滤结果?A. SELECT * FROM table_name WHERE condition;B. SELECT column1, column2 FROM table_name WHERE condition;C. SELECT * FROM table_name GROUP BY column1, column2;D. SELECT column1, column2 FROM table_name HAVING condition;5. 如果需要在查询中同时使用聚合函数和非聚合函数,应该使用哪种语法结构?A. SELECT aggregate_function(column) FROM table_name WHERE condition;B. SELECT column, aggregate_function(column) FROM table_name WHERE condition;C. SELECT aggregate_function(column), column FROM table_name WHERE condition;D. SELECT column, aggregate_function(column), column FROM table_name WHEREcondition;6. 在处理具有复杂关系的数据集时,如何确保查询结果的准确性和完整性?A. 使用外键约束B. 使用触发器C. 使用事务D. 使用存储过程7. 如果需要将查询结果保存到另一个表中,应该使用哪种语法结构?A. INSERT INTO new_table_name (column1, column2) SELECT column1, column2 FROM existing_table_name WHERE condition;B. INSERT INTO new_table_name SELECT column1, column2 FROM existing_table_name WHERE condition;C. INSERT INTO new_table_name (column1, column2) SELECT column1, column2 FROM existing_table_name GROUP BY condition;D. INSERT INTO new_table_name SELECT column1, column2 FROM existing_table_name ORDER BY condition;8. 在处理大型数据库时,为了提高查询性能,通常建议避免使用哪种类型的子查询?A. 相关子查询B. 非相关子查询C. 表子查询D. 行子查询9. 如果需要对查询结果进行分组并计算每组的数量,应该使用哪种聚合函数?A. COUNT()B. SUM()C. AVG()D. MIN()10. 在处理包含大量历史数据的数据库时,如何确保查询结果的实时性?A. 使用缓存技术B. 使用触发器C. 使用物化视图D. 使用分布式查询11. 在SQL中,用于查询某个表中满足特定条件的元组的关键词是什么?A. SELECTB. FROMC. WHERED. GROUP BY12. 在构建复杂的SQL查询时,通常会使用以下哪个关键字来对结果进行分组?A. ORDER BYB. GROUP BYC. LIMITD. UNION13. 如果想要在查询结果中包含行号,应该使用哪个关键字?A. ROW_NUMBER()B. RANK()C. DENSE_RANK()D. COUNT()14. 在SQL中,如何使用子查询来获取某个字段的值,该值需要依赖于另一个表的字段?A. JOINB. EXISTSC. IND. SELECT15. 假设我们有两个表,table和table,它们之间通过field字段相关联。
sql语句练习题
sql语句练习题一、简答题1. 什么是数据库?数据库是一个按照结构化方式存储、管理和组织数据的集合,它允许用户通过SQL语言对数据进行查询、增加、修改和删除操作。
2. 什么是SQL?SQL(Structured Query Language)是用于与关系型数据库通信的标准语言。
通过SQL语句,可以对数据库进行查询、插入、更新和删除等操作。
二、选择题1. 关系型数据库是基于以下哪个数据模型构建的?A. 层次模型B. 网络模型C. 对象模型D. 表格模型答案:D. 表格模型2. 下面哪个关键字用于在数据库中创建新表?A. INSERTB. SELECTC. CREATED. DELETE答案:C. CREATE3. 以下哪个关键字用于向数据库中的表中插入新行?A. UPDATEB. INSERTC. DELETED. ALTER答案:B. INSERT三、假设有以下两张表:学生表(Student):学生编号(StuID)学生姓名(Name)学生性别(Gender)1 张三男2 李四女3 王五男课程表(Course):课程编号(CourseID)课程名称(CourseName)课程学时(Credit)1 数学 602 英语 403 物理 80请根据上述信息,编写SQL语句完成以下操作:1. 查询所有学生的信息(包括学生编号、姓名和性别)。
2. 查询所有学生的姓名和所选课程的名称。
3. 查询学生编号为2的学生所选课程的名称和学时。
4. 查询选修课程学时大于50的学生的姓名和性别。
5. 查询选修了物理课程的学生的学生编号和姓名。
6. 将课程学时大于50的课程按照学时的降序排列。
答案:1. SELECT StuID, Name, Gender FROM Student;2. SELECT , Course.CourseNameFROM Student INNER JOIN CourseON Student.StuID = Course.CourseID;3. SELECT , Course.CourseName, Course.CreditFROM Student INNER JOIN CourseON Student.StuID = Course.CourseIDWHERE Student.StuID = 2;4. SELECT , Student.GenderFROM Student INNER JOIN CourseON Student.StuID = Course.CourseIDWHERE Course.Credit > 50;5. SELECT Student.StuID, FROM Student INNER JOIN CourseON Student.StuID = Course.CourseIDWHERE Course.CourseName = '物理';6. SELECT * FROM CourseWHERE Credit > 50ORDER BY Credit DESC;以上是关于SQL语句练习题的解答,通过这些练习可以加深对基本SQL语句的理解和应用。
SQL语句练习题(精品文档)
S Q L语言一、选择题1.S Q L语言是()的语言,容易学习。
A.过程化B.非过程化C.格式化D.导航式2. S Q L语言的数据操纵语句包括S E L E C T、I N S E R T、U P D A T E、D E L E T E等。
其中最重要的,也是使用最频繁的语句是()。
A.S E L E C TB.I N S E R TC.U P D A T ED.D E L E T E3.在视图上不能完成的操作是()。
A.更新视图B.查询C.在视图上定义新的表D.在视图上定义新的视图4.S Q L语言集数据查询、数据操纵、数据定义和数据控制功能于一体,其中,C R E A T E、D R O P、A L T E R语句是实现哪种功能()。
A.数据查询B.数据操纵C.数据定义D.数据控制5.S Q L语言中,删除一个视图的命令是()。
A.D E L E T EB.D R O PC.C L E A RD.R E M O V E6.在S Q L语言中的视图V I E W是数据库的()。
A.外模式B.模式C.内模式D.存储模式7.下列的S Q L语句中,()不是数据定义语句。
A.C R E A T E T A B L EB.D R O P V I E WC.C R E A T E V I E WD.G R A N T8.若要撤销数据库中已经存在的表S,可用()。
A.D E L E T E T A B L E SB.D E L E T E SC.D R O P T A B L E SD.D R O P S9.若要在基本表S中增加一列C N(课程名),可用()。
A.A D D T A B L E S(C N C H A R(8))B.A D D T A B L E S A L T E R(C N C H A R(8))C.A L T E R T A B L E S A D D(C N C H A R(8))D.A L T E R T A B L E S(A D D C N C H A R(8))10.学生关系模式S(S#,S n a m e,S e x,A g e),S的属性分别表示学生的学号、姓名、性别、年龄。
SQL经典50题练习
创建表及插⼊数据学⽣表Studentcreate table SC(SId varchar(10),CId varchar(10),score decimal(18,1));insert into SC values('01' , '01' , 80);insert into SC values('01' , '02' , 90);insert into SC values('01' , '03' , 99);insert into SC values('02' , '01' , 70);insert into SC values('02' , '02' , 60);insert into SC values('02' , '03' , 80);insert into SC values('03' , '01' , 80);insert into SC values('03' , '02' , 80);insert into SC values('03' , '03' , 80);insert into SC values('04' , '01' , 50);insert into SC values('04' , '02' , 30);insert into SC values('04' , '03' , 20);insert into SC values('05' , '01' , 76);insert into SC values('05' , '02' , 87);insert into SC values('06' , '01' , 31);insert into SC values('06' , '03' , 34);insert into SC values('07' , '02' , 89);insert into SC values('07' , '03' , 98);练习题⽬1. 查询" 01 "课程⽐" 02 "课程成绩⾼的学⽣的信息及课程分数1.1 查询同时存在" 01 "课程和" 02 "课程的情况1.2 查询存在" 01 "课程但可能不存在" 02 "课程的情况(不存在时显⽰为 null )1.3 查询不存在" 01 "课程但存在" 02 "课程的情况2. 查询平均成绩⼤于等于 60 分的同学的学⽣编号和学⽣姓名和平均成绩3. 查询在 SC 表存在成绩的学⽣信息4. 查询所有同学的学⽣编号、学⽣姓名、选课总数、所有课程的总成绩(没成绩的显⽰为 null )4.1 查有成绩的学⽣信息5. 查询「李」姓⽼师的数量6. 查询学过「张三」⽼师授课的同学的信息7. 查询没有学全所有课程的同学的信息8. 查询⾄少有⼀门课与学号为" 01 "的同学所学相同的同学的信息9. 查询和" 01 "号的同学学习的课程 完全相同的其他同学的信息10. 查询没学过"张三"⽼师讲授的任⼀门课程的学⽣姓名11. 查询两门及其以上不及格课程的同学的学号,姓名及其平均成绩12. 检索" 01 "课程分数⼩于 60,按分数降序排列的学⽣信息13. 按平均成绩从⾼到低显⽰所有学⽣的所有课程的成绩以及平均成绩14. 查询各科成绩最⾼分、最低分和平均分:以如下形式显⽰:课程 ID,课程 name,最⾼分,最低分,平均分,及格率,中等率,优良率,优秀率及格为>=60,中等为:70-80,优良为:80-90,优秀为:>=90要求输出课程号和选修⼈数,查询结果按⼈数降序排列,若⼈数相同,按课程号升序排列15. 按各科成绩进⾏排序,并显⽰排名, Score 重复时保留名次空缺15. 按各科成绩进⾏排序,并显⽰排名, Score 重复时保留名次空缺15.1 按各科成绩进⾏排序,并显⽰排名, Score 重复时合并名次16. 查询学⽣的总成绩,并进⾏排名,总分重复时保留名次空缺16.1 查询学⽣的总成绩,并进⾏排名,总分重复时不保留名次空缺17. 统计各科成绩各分数段⼈数:课程编号,课程名称,[100-85],[85-70],[70-60],[60-0] 及所占百分⽐18. 查询各科成绩前三名的记录19. 查询每门课程被选修的学⽣数20. 查询出只选修两门课程的学⽣学号和姓名21. 查询男⽣、⼥⽣⼈数22. 查询名字中含有「风」字的学⽣信息23. 查询同名同性学⽣名单,并统计同名⼈数24. 查询 1990 年出⽣的学⽣名单25. 查询每门课程的平均成绩,结果按平均成绩降序排列,平均成绩相同时,按课程编号升序排列26. 查询平均成绩⼤于等于 85 的所有学⽣的学号、姓名和平均成绩27. 查询课程名称为「数学」,且分数低于 60 的学⽣姓名和分数28. 查询所有学⽣的课程及分数情况(存在学⽣没成绩,没选课的情况)29. 查询任何⼀门课程成绩在 70 分以上的姓名、课程名称和分数30. 查询不及格的课程31. 查询课程编号为 01 且课程成绩在 80 分以上的学⽣的学号和姓名32. 求每门课程的学⽣⼈数33. 成绩不重复,查询选修「张三」⽼师所授课程的学⽣中,成绩最⾼的学⽣信息及其成绩34. 成绩有重复的情况下,查询选修「张三」⽼师所授课程的学⽣中,成绩最⾼的学⽣信息及其成 绩35. 查询不同课程成绩相同的学⽣的学⽣编号、课程编号、学⽣成绩36. 查询每门功成绩最好的前两名37. 统计每门课程的学⽣选修⼈数(超过 5 ⼈的课程才统计)。
SQL 高级试题 - 答案
SQL 高级测试题-答案
二、完成下列题目
(一)、SQL语句题(6分/题共24分)
(二)T-SQL编程题(10分/题共30分)
1、统计并显示选修“计算机导论”的所有学生的平均分,如果平均分在70分以上,显示”成绩优秀“,并显示前三名学生的姓名和成绩;如果在70分以下,显示”成绩教差“,并显示
2、查询"操作系统"选修课的平均分,如果平均分低于80分,就给所有选修此课程的学生加2分,再次判断平均分如果低于80分,就继续加2分,直至此课平均分高于80分后,打
及成绩等级(使用case语句来实现)
优:90分以上
良:80-90分
中:70-79分
差:60-69分
(三)创建视图(12分)
1、创建一个视图,名为V_newScore,要显示出学生姓名、课程名称、分数和教师姓名,并且记录中不包括成绩不及格的学生。
(要求判断是否存在此视图)。
(四)创建事务(14分)
1、由于教务老师失误,将‘陆君’的选修的"3-105"成绩和‘匡明’选修的"3-105"成
(五)存储过程(20分)
1、创建一个存储过程,根据输入的学生姓名'xxx'(如王芳),查询该学生的学生编号,选课名,成绩和任课老师名,如果该学生没有选修课,则提示'xxx学生没有选修课程',如果没。
sql测试题和答案
sql测试题和答案在进行SQL数据库开发时,进行一些测试是非常重要的。
通过测试,我们可以验证数据库的正确性,保证数据的一致性,并且提前发现和解决潜在的问题。
本文将提供一些常见的SQL测试题目,并且给出相应的答案,帮助读者更好地理解SQL语言的使用和测试方法。
一、题目1:查询订单表中购买数量最多的商品名称和购买数量。
答案:```sqlSELECT product_name, MAX(quantity) AS max_quantityFROM ordersGROUP BY product_name;```二、题目2:查询每个部门的平均工资和人数,结果按平均工资降序排列。
答案:```sqlSELECT department, AVG(salary) AS avg_salary, COUNT(*) AS num_employeesFROM employeesGROUP BY departmentORDER BY avg_salary DESC;```三、题目3:查询没有订单的客户名称和联系方式。
答案:```sqlSELECT customer_name, contact_numberFROM customersWHERE customer_id NOT IN (SELECT DISTINCT customer_idFROM orders);```四、题目4:查询每个国家的订单数和总销售额,并按总销售额降序排列。
答案:```sqlSELECT country, COUNT(*) AS num_orders, SUM(total_amount) AS total_salesFROM ordersGROUP BY countryORDER BY total_sales DESC;```五、题目5:查询购买了所有商品的客户名称和联系方式。
答案:```sqlSELECT customer_name, contact_numberFROM customersWHERE customer_id IN (SELECT customer_idFROM ordersGROUP BY customer_idHAVING COUNT(DISTINCT product_name) = (SELECT COUNT(DISTINCT product_name)FROM products));```六、题目6:查询每个部门的最高工资和最低工资。
(完整版)sql练习题+答案
(一) 新建以下几个表student(学生表):其中约束如下:(1)学号不能存在相同的(2)名字为非空(3)性别的值只能是’男’或’女’(4)系包括这几个:信息系,计算机科学系,数学系,管理系,中文系,外语系,法学系(5)出生日期为日期格式(6)年龄为数值型,且在0~100之间cs(成绩表):其中约束如下:(1)sno和cno分别参照student和course表中的sno,cno的字段(2)cj(成绩)只能在0〜100之间,可以不输入值create table cs (sno smallint not null referencesstudent ( sno ), ----定义成外键cno smallint not null referencescourse ( cno ), ----定义成外键cj smallint constraint e check (cj between0 and 100 ),---- 检查约束一—j(成绩)只能在~100之间,可以不输入值constraint f primary key ( sno , cno )---- 定义学生学号和课程号为sc表的主键)course(课程表)其约束如下:(1)课程号(cno)不能有重复的(2)课程名(cname非空(三)针对学生课程数据库查询(1)查询全体学生的学号与姓名。
Select sno , sname from student(2)查询全体学生的姓名、学号、所在系,并用别名显示出结果。
(3)查询全体学生的详细记录。
select * from student(4)查全体学生的姓名及其出生年份。
select sname , birth from student(5)查询学校中有哪些系。
select distinct dept from student(6)查询选修了课程的学生学号。
select sno from cs where eno is not null(7)查询所有年龄在20岁以下的学生姓名及其年龄。
SQL习题及答案讲解
实验设有以下关系模式:S(SNO,SNAME,CITY)其中,S表示别SUPPLIER(供应者),SNO为供应者代号,SNAME为供应者的名字,CITY为供应商所在的城市.主键为SNO。
P(PNO,PNAME,COLOR,WEIGHT)其中,P表示PART(零件),PNO为零件代号,PNAME为零件名,COLOR为零件颜色,WEIGHT 为零件重量,主键为PNO。
J(JNO,JNAME,CITY)其中,J表示JOB(工程),JNO为工程编号,JNAME 为工程名,CITY为工程所在城市,主键为JNO。
SPJ(SNO,PNO,JNO,QTY)其中,SPJ表示供应关系,SNO是为指定工程提供零件的供应者代号,PNO是所提供的零件代号,JNO 为工程编号,QTY表示提供的零件数量,主键为(SNO,PNO,JNO),外部键分别为SNO,PNO,JNO。
试做以下各题:1、用SQL的DDL语言创建S,P,J,SPJ四个基本表。
2、按照下面表格提供的数据,用SQL的插入语句插入所有记录。
3、给出下列各题的查询、存储等操作的语句序列,并且上机验证结果。
1)取出所有工程的全部细节;2)取出所在城市为上海的所有工程的全部细节;3)取出重量最轻的那些零件的号码;4)取出为工程J1提供零件的供应者的代号;5)取出为工程J1提供零件P1的供应者的代号;6)取出由供应者S1提供零件的工程的名称;7)取出由供应者S1提供的零件的颜色;8)取出为工程J1和J2提供零件的供应者的代号;9)取出为工程J1提供红色零件的供应者的代号;10)取出为所在城市为上海的工程提供零件的供应者的代号;11)取出为所在城市为上海或北京的工程提供红色零件的供应者的代号;12)取出供应者与工程所在城市相同的供应者提供的零件的代号;13)取出上海的供应者提供给上海的任一工程的零件的代号;14)取出至少有一个和工程不在同一城市的供应者提供零件的工程的代号;15)取出上海供应者不提供任何零件的工程的代号;16)取出这样一些供应者的代号,他们能够提供至少一种由红色零件的供应者提供的零件;17)取出由供应者S1提供零件的工程的代号;18)取出所有这样的三元组<CITY,PNO,CITY>,使得第一个城市的供应者为第二个城市的工程提供零件;19)取出为所有工程提供同样零件的供应者的代号;20)取出提供给上海的所有工程的零件代号;21)取出至少需要供应者S1提供的所有零件的工程的代号;22)把所有红色零件改成橙色;23)删除所有红色零件和对应的SPJ记录;24)取出供应者Sl提供的代号为P1的零件总数;25)取出每个工程的供应商数;26)取出所需的零件总数大于1000的工程代号;1.CREATE TABLE S(SNO CHAR(5) PRIMARY KEY, SNAME CHAR(5),CITY CHAR(10));CREATE TABLE P(PNO CHAR(5) PRIMARY KEY,PNAME CHAR(5),COLOR CHAR(5),WEIGHT INT);CREATE TABLE J(JNO CHAR(5) PRIMARY KEY,JNAME CHAR(5),CITY CHAR(10));CREATE TABLE SPJ(SNO CHAR(5),PNO CHAR(5),JNO CHAR(5),QTY INT,CONSTRAINT PK_SPJ PRIMARY KEY(SNO,PNO,JNO),CONSTRAINT FK_SNO FOREIGN KEY(SNO)REFERENCES S(SNO), CONSTRAINT FK_PNO FOREIGN KEY(PNO)REFERENCES P(PNO), CONSTRAINT FK_JNO FOREIGN KEY(JNO)REFERENCES J(JNO));2.SELECT * FROM J;3.SELECT * FROM J WHERE CITY='上海';4.SELECT PNO FROM P WHERE WEIGHT=(SELECT MIN(WEIGHT) FROM P);5.SELECT DISTINCT SNO FROM SPJ WHERE JNO='J1';6.SELECT SNO FROM SPJ WHERE JNO='J1' AND PNO='P1';7.SELECT DISTINCT JNAME FROM J,SPJ WHERE J.JNO=SPJ.JNO AND SPJ.SNO='S1';8.SELECT DISTINCT COLOR FROM P,SPJ WHERE P.PNO=SPJ.PNO AND SPJ.SNO='S1;9.SELECT X.SNO FROM SPJ X WHERE X.JNO='J1'AND EXISTS(SELECT * FROM SPJ Y WHERE Y.SNO=X.SNO AND Y.JNO='J2');10.SELECT DISTINCT SNO FROM SPJ,P WHERE SPJ.JNO='J1' AND SPJ.PNO=P.PNO AND P.COLOR='红';11.SELECT DISTINCT SNO FROM SPJ,J WHERE SPJ.JNO=J.JNO AND J.CITY='上海';12.SELECT DISTINCT SPJ.SNO FROM SPJ,J,P WHERE SPJ.JNO=J.JNO AND SPJ.PNO=P.PNO AND P.COLOR ='红' AND (J.CITY='上海' OR J.CITY=' 北京') ;13.SELECT DISTINCT P.PNO FROM S,J,P,SPJ WHERE P.PNO=SPJ.PNO AND SPJ.SNO=S.SNO AND SPJ.JNO=J.JNO AND S.CITY=J.CITY;14.SELECT DISTINCT P.PNO FROM S,J,P,SPJ WHERE P.PNO=SPJ.PNO AND SPJ.SNO=S.SNO AND SPJ.JNO=J.JNO AND S.CITY='上海' AND J.CITY='上海';15.SELECT DISTINCT JNO FROM J WHERE EXISTS (SELECT * FROM S,SPJ WHERE SPJ.SNO=S.SNO AND J.JNO=SPJ.JNO AND J.CITY<>S.CITY);16.SELECT DISTINCT JNO FROM J WHERE NOT EXISTS(SELECT * FROM S,SPJ WHERE J.JNO=SPJ.JNO AND SPJ.SNO=S.SNO AND S.CITY='上海');17.SELECT DISTINCT SNO FROM SPJ WHERE PNO IN(SELECT DISTINCT PNO FROM SPJ WHERE SNO IN(SELECT DISTINCT SNO FROM SPJ,PWHERE SPJ.PNO=P.PNO AND P.COLOR='红'));18.SELECT DISTINCT JNO FROM SPJ WHERE SNO='S1';19.SELECT DISTINCT S.CITY,SPJ.PNO,J.CITY FROM S,J,SPJ WHERE S.SNO=SPJ.SNO AND J.JNO=SPJ.JNO AND S.CITY<>J.CITY;20.SELECT DISTINCT SNO FROM S WHERE NOT EXISTS(SELECT * FROM J WHERE NOT EXISTS (SELECT * FROM P,SPJ WHERE S.SNO=SPJ.SNO AND SPJ.PNO=P.PNO AND J.JNO= SPJ.JNO));21.SELECT DISTINCT PNO FROM P WHERE NOT EXISTS(SELECT * FROM J WHERE J.CITY='上海' AND NOT EXISTS(SELECT * FROM SPJ WHERE SPJ.PNO=P.PNOAND SPJ.JNO=J.JNO));22.SELECT DISTINCT JNO FROM SPJ SX WHERE NOT EXISTS(SELECT * FROM SPJ SY WHERE SY.SNO='S1' AND NOT EXISTS(SELECT * FROM SPJ SZ WHERE SY.PNO=SZ.PNO AND SX.JNO=SZ.JNO));23.UPDATE P SET COLORE='橙' WHERE COLORE='红';24.DELETE FROM SPJ WHERE SPJ.PNO IN (SELECT PNO FROM P WHERE COLOR='红'); DELETE FROM P WHERE COLOR='红';25.SELECT SUM(QTY) FROM SPJ WHERE SNO='S1' AND PNO='P1';26.SELECT JNO,COUNT(DISTINCT SNO) FROM SPJ GROUP BY JNO;27.SELECT JNO FROM SPJ GROUP BY JNO HAVING SUM(QTY)>1000;1.//创建s表CREATE TABLE S(SNO CHAR(8) NOT NULL UNIQUE, SNAME VARCHAR(20) NOT NULL UNIQUE, CITY VARCHAR(8),CONSTRAINT CS PRIMARY KEY(SNO));//创建p表CREATE TABLE P(PNO CHAR(8) NOT NULL UNIQUE, PNAME VARCHAR(20) NOT NULL UNIQUE, COLOR CHAR(1),WEIGHT INT,CONSTRAINT CP PRIMARY KEY(PNO));//创建j表CREATE TABLE J(JNO CHAR(8) NOT NULL UNIQUE, JNAME VARCHAR(20) NOT NULL UNIQUE, CITY VARCHAR(8),CONSTRAINT CJ PRIMARY KEY(JNO));//创建spj表CREATE TABLE SPJ(SNO CHAR(8) NOT NULL NUIQUE,PNO CHAR(8) NOT NULL UNIQUE,JNO CHAR(8) NOT NULL UNIQUE, QTY INT,CONSTRAINT CSPJ PRIMARYKEY(SON,PNO,JNO), CONSTRAINT CSPJ FOREING KEY(SNO)REFERENCES S(SNO), CONSTRAINT CSPJ FOREING KEY(PNO)REFERENCES P(PNO), CONSTRAINT CSPJ FOREING KEY(JNO)REFERENCES J(JNO));2.//向s表插入数据INSERT INTO S(SNO,SNAME,CITY) VALUES(‘S1’,’N1’,’上海’); INSERT INTO S(SNO,SNAME,CITY) VALUES(‘S2’,’N2’,’北京’); INSERT INTO S(SNO,SNAME,CITY) VALUES(‘S3’,’N3’,’北京’);VALUES(‘S4’,’N4’,’上海’);INSERT INTO S(SNO,SNAME,CITY) VALUES(‘S5’,’N5’,’南京’);//向p表插入数据INSERT INTO P(PNO,PNAME,COLOR,WEIGHT) VALUES(‘P1’,’PN1’,’红’,’12’); INSERT INTO P(PNO,PNAME,COLOR,WEIGHT) VALUES(‘P2’,’PN2’,’绿’,’18’); INSERT INTO P(PNO,PNAME,COLOR,WEIGHT) VALUES(‘P3’,’PN3’,’蓝’,’20’); INSERT INTO P(PNO,PNAME,COLOR,WEIGHT) VALUES(‘P4’,’PN4’,’红’,’13’); INSERT INTO P(PNO,PNAME,COLOR,WEIGHT) VALUES(‘P5’,’PN5’,’蓝’,’11’); INSERT INTO P(PNO,PNAME,COLOR,WEIGHT) VALUES(‘P6’,’PN6’,’红’,’15’);//向j表插入数据INSERT INTO J(JNO,JNAME,CITY)VALUES(‘J1’,’JN1’,’上海’);INSERT INTO J(JNO,JNAME,CITY)VALUES(‘J2’,’JN2’,’广州’);VALUES(‘J3’,’JN3’,’南京’); INSERT INTO J(JNO,JNAME,CITY) VALUES(‘J4’,’JN4’,’南京’); INSERT INTO J(JNO,JNAME,CITY) VALUES(‘J5’,’JN5’,’上海’); INSERT INTO J(JNO,JNAME,CITY) VALUES(‘J6’,’JN6’,’武汉’); INSERT INTO J(JNO,JNAME,CITY) VALUES(‘J7’,’JN7’,’上海’);//向表spj中插入数据INSERT INTO SPJ(SNO,PNO,JNO,QTY) VALUES(‘S1’,’P1’,’J1’,’200’); INSERT INTO SPJ(SNO,PNO,JNO,QTY) VALUES(‘S1’,’P1’,’J4’,’700’); INSERT INTO SPJ(SNO,PNO,JNO,QTY) VALUES(‘S2’,’P3’,’J1’,’400’); INSERT INTO SPJ(SNO,PNO,JNO,QTY) VALUES(‘S2’,’P3’,’J2’,’200’); INSERT INTO SPJ(SNO,PNO,JNO,QTY) VALUES(‘S2’,’P3’,’J3’,’200’);VALUES(‘S2’,’P3’,’J4’,’500’); INSERT INTO SPJ(SNO,PNO,JNO,QTY) VALUES(‘S2’,’P3’,’J5’,’600’); INSERT INTO SPJ(SNO,PNO,JNO,QTY) VALUES(‘S2’,’P3’,’J6’,’400’); INSERT INTO SPJ(SNO,PNO,JNO,QTY) VALUES(‘S2’,’P3’,’J7’,’800’); INSERT INTO SPJ(SNO,PNO,JNO,QTY) VALUES(‘S2’,’P5’,’J2’,’100’); INSERT INTO SPJ(SNO,PNO,JNO,QTY) VALU ES(‘S3’,’P3’,’J1’,’200’); INSERT INTO SPJ(SNO,PNO,JNO,QTY) VALUES(‘S3’,’P4’,’J2’,’500’); INSERT INTO SPJ(SNO,PNO,JNO,QTY) VALUES(‘S4’,’P6’,’J7’,’300’); INSERT INTO SPJ(SNO,PNO,JNO,QTY) VALUES(‘S5’,’P2’,’J2’,’200’); INSERT INTO SPJ(SNO,PNO,JNO,QTY) VALUES(‘S5’,’P2’,’J4’,’100’); INSERT INTO SPJ(SNO,PNO,JNO,QTY) VALUES(‘S5’,’P5’,’J5’,’500’);VALUES(‘S5’,’P5’,’J7’,’100’); INSERT INTO SPJ(SNO,PNO,JNO,QTY) VALUES(‘S5’,’P6’,’J2’,’200’); INSERT INTO SPJ(SNO,PNO,JNO,QTY) VALUES(‘S5’,’P1’,’J4’,’1000’); INSERT INTO SPJ(SNO,PNO,JNO,QTY) VALUES(‘S5’,’P3’,’J4’,’1200’); INSERT INTO SPJ(SNO,PNO,JNO,QTY) VALUES(‘S5’,’P4’,’J4’,’800’); INSERT INTO SPJ(SNO,PNO,JNO,QTY) VALUES(‘S5’,’P5’,’J4’,’400’); INSERT INTO SPJ(SNO,PNO,JNO,QTY) VALUES(‘S5’,’P6’,’J4’,’500’);3.1SELECT * FROM J;3.2SELECT * FROM J WHERE CITY LIKE ‘上海’; 3.3SELECT PNO FROM P WHERE WEIGHT=(SELECT MAX(WEIGHT)FROM P);SELECT SNO FROM SPJ WHERE JNO IN(SELECT JNO FROM J WHERE JNO=‘J1’);3.5SELECT SNO FROM SPJ WHERE JNO=‘J1’ AND PNO=‘P1’;3.6SELECT JNAME FROM J,SPJ WHEREJ.JNO=SPJ.JNO AND SPJ.SNO=‘S1’;3.7SELECT COLOR FROM P,SPJ WHEREP.PNO=SPJ.PNO AND SPJ.SNO=‘S1’;3.8SELECT DISTINCT SNO FROM SPJ WHEREJNO=‘J1’ OR JNO=‘J2’;3.9SELECT SNO FROM SPJ,P WHEREP.PNO=SPJ.PNO AND SPJ.JNO=‘J1’ AND P.COLOR=‘红’’3.10SELECT SNO FROM SPJ,J WHERE J.JNO=SPJ.JNO AND J.CITY=‘上海’;SELECT SNO FROM SPJ,J,PWHERE SPJ.PNO=P.PNO AND J.JNO=SPJ.JNO AND P.COLOR=‘红’;3.12SELECT SPJ.PNO FROM SPJ,S,JWHERE S.SNO=SPJ.SNO AND J.JNO=SPJ.JNO AND S.CITY=J.CITY;3.13SELECT SPJ.PNO FROM SPJ,S,JWHERE S.SNO=SPJ.SNO AND J,JNO=SPJ.JNO AND S.CITY=‘上海’ AND J.CITY=‘上海’;3.14SELECT SPJ.JNO FROM SPJ,S,JWHERE S.SNO=SPJ.SNO AND J.JNO=SPJ.JNO AND S.CITY<>J.CITY;3.15SELECT JNO FROM SPJ WHERE JNO NOT IN (SELECT SPJ.JNO FROM S,SPJ WHERES.SNO=SPJ.SNO AND S.CITY =‘上海’);3.16SELECT SPJ.SNO FROM SPJ,P WHERE SPJ.PNO IN(SELECT SPJ.PNO FROM SPJ,S,PWHERE S.SNO=SPJ.SNO AND P.PNO=SPJ.PNO AND P.COLOR=‘红’);3.17SELECT SPJ.JNO FROM S,P,SPJWHERE S.SNO=SPJ.SNO AND J.JNO=SPJ.JNO;3.18SELECT S.CITY,J.CITY FROM S,J,SPJWHERE S.SNO=SPJ.SNO AND J.JNO=SPJ.JNO;3.19SELECT S.CITY,SPJ.PNO,J.CITY FROM S,J,SPJ WHERE S ,=SPJ.SNO AND J.JNO =SPJ.JNO; 3.20SELECT S.CITY,SPJ.PNO,J.CITY FROM SPJ,S,J WHERE S.SNO=SPJ.SNO AND J.JNO=SPJ.JNO AND S.CITY<>J.CITY;3.21SELECT JNO FROM SPJ AS SPJ1WHERE NOT EXISTS(SELECT 1 FROM SPJ AS SPJ2WHERE SNO=‘S1’ AND NOT EXISTS(SELECT 1 FROM SPJ AS SPJ3WHERE SPJ3.PNO=SPJ2.PNO ANDSPJ3.JNO=SPJ1.JNO));3.22UPDATE P SET COLOR=‘红’ WHERE COLOR=‘橙’;3.23DELETE FROM SPJ,PWHERE SPJ.PNO=P.PNO AND P.COLOR=‘红’;DELETE FROM P WHERE COLOR=‘红’;3.24SELECT SPJ.SNO,SPJ,PNO,SUM(QTY) FROM SPJ WHERE SPJ.SNO=‘S1’ AND SPJ.PNO=‘P1’ GROUP BY SPJ.SNO,SPJ,PNO;3.25SELECT SPJ.SNO,COUNT(*) FROM SPJ GROUP BY SPJ.SNO;3.26SELECT JNO FROM SPJ GROUP BY SNO HAVING SUM(QTY)>1000;。
sql经典练习题库(附答案)
SQL练习题库表结构Student(S#,Sname,Sage,Ssex) 学生表Course(C#,Cname,T#) 课程表SC(S#,C#,score) 成绩表Teacher(T#,Tname) 教师表试题:1、查询“0001”课程比“C002”课程成绩高的所有学生的学号;Select s# from scWhere c#='0001' and score>any(select score from sc c#='0002')2、查询平均成绩大于60分的同学的学号和平均成绩;select s#,avg(score) from SCgroup by s#having avg(score)>603、查询所有同学的学号、姓名、选课数、总成绩;select student.s#,student.sname,count(sc.c#)as 选课数,sum(score)总成绩from student,scwhere student.s#=sc.s#group by student.s#,student.sname4、查询姓“张”的老师的个数;select count(*)人数from teacherwhere tname like'张%'5、查询没学过“叶平”老师课的同学的学号、姓名;select student.s#,student.sname from student,course,teacher,scwhere student.s#=sc.s# and course.t#=teacher.t# and teacher.t# not in(select t# from teacher where tname='张丽芬') group by student.s#,student.sname6、查询学过“0001”并且也学过编号“0002”课程的同学的学号、姓名;select sc.s#,sname from sc,studentwhere sc.c# = '0001' and student.s# = sc.s# and sc.s# in (select s# from sc where sc.c# = '0002')--并(两表值)select student.s#,student.sname from student,scwhere student.s#=sc.s# and sc.c#='0001'unionselect student.s#,student.sname from student,scwhere student.s#=sc.s# and sc.c#='0002'--交(有相同值)select student.s#,student.sname from student,scwhere student.s#=sc.s# and sc.c#='0001'intersectselect student.s#,student.sname from student,scwhere student.s#=sc.s# and sc.c#='0002'--差(不同值)select student.s#,student.sname from student,scwhere student.s#=sc.s# and sc.c#='0001'exceptselect student.s#,student.sname from student,scwhere student.s#=sc.s# and sc.c#='0002'7、查询学过“叶平”老师所教的所有课的同学的学号、姓名;select student.s#,student.sname from student,course,teacher,scwhere student.s#=sc.s# and course.t#=teacher.t# and teacher.t# in(select t# from teacher where tname='张丽芬')group by student.s#,student.sname8、查询课程编号“001”的成绩比课程编号“002”课程低的所有同学的学号、姓名;select student.s#,sname,score from student,scwhere student.s#=sc.s# and score in(( select score from sc where c#='0001' )<all( select score from sc where c#='0002' )) 9、查询所有课程成绩小于60分的同学的学号、姓名;select student.s#,sname from studentwhere s# in(select s# from sc where score<60)10、查询没有学全所有课的同学的学号、姓名;select student.s#,student.sname from student,scwhere student.s#=sc.s#group by student.s#,student.snamehaving count(c#)<(select count(c#) from course)11、查询至少有一门课与学号为“1001”的同学所学相同的同学的学号和姓名;select student.s#,student.sname from student,scwhere student.s#=sc.s# and c#=any(select c# from scwhere s#='1001')group by student.s#,student.sname12、查询至少学过学号为“0001”同学所有一门课的其他同学学号和姓名;Select sc.s#,sname from sc inner join student on sc.s#=student.s#Where c# in (select c# from sc where s#=’0001’)13、把“SC”表中“赵雁南”老师教的课的成绩都更改为此课程的平均成绩;update scset score=(select avg(sc.score) from sc,teacher,coursewhere sc.c#=course.c# and course.t#=teacher.t# and teacher.tname='赵雁南')where sc.c#=(select c# from course,teacher where course.t#=teacher.t# and tname='赵雁南' )14、查询和“1002”号的同学学习的课程完全相同的其他同学学号和姓名;select student.s#,sname from student,scwhere student.s#=sc.s# and sc.c#=all(select c# from sc where s#='1005') and student.s#<>'1005'15、删除学习“朱玉文”老师课的SC表记录;delete from scwhere c# in(select c# from sc where c# in (select c# from course,teacher where teacher.t#=course.t# and teacher.tname='朱玉文' ) )16、向SC表中插入一些记录,这些记录要求符合以下条件:没有上过编号“0002”课程的同学学号、号课的平均成绩;insert into scvaluesselect s# from sc where s# not in (select s# from sc where c#='0002'select avg(score) as 平均成绩from sc where c#='0002'17、按平均成绩从高到低显示所有学生的“数据库”、“企业管理”、“英语”三门的课程成绩,按如下形式显示:学生ID,,数据库,企业管理,英语,有效课程数,有效平均分select sc.s#,ame,sc.score,avg(score)as 平均成绩from sc inner join course on sc.c#=course.c#where sc.c# in(select c# from course where cname=any(select cname from course where cname in('计算机基础','Oracle','软件工程')))group by sc.s#,ame,sc.scoreorder by avg(score) descSELECT S# as 学生ID,(SELECT score FROM SC WHERE SC.S#=t.S# AND C#='0001') AS 计算机基础,(SELECT score FROM SC WHERE SC.S#=t.S# AND C#='0002') AS Oracle,(SELECT score FROM SC WHERE SC.S#=t.S# AND C#='0011') AS 软件工程,COUNT(*) AS 有效课程数, AVG(t.score) AS 平均成绩FROM sc AS tGROUP BY S#ORDER BY avg(t.score) desc18、查询各科成绩最高和最低的分:以如下形式显示:课程ID,最高分,最低分select c# 课程ID,max(score) 最高分,min(score) 最低分from scgroup by c#19、按各科平均成绩从低到高和及格率的百分数从高到低顺序select c#, avg(score) from scwhere score>60group by c#20、查询如下课程平均成绩和及格率的百分数(用"1行"显示): 企业管理(),马克思(),OO&UML (),数据库()21、查询不同老师所教不同课程平均分从高到低显示select course.t#,avg(sc.score) as 平均分from sc,coursewhere sc.c#=course.c#group by course.t#order by avg(sc.score) desc22、查询如下课程成绩第3 名到第6 名的学生成绩单:企业管理,马克思,UML,数据库[学生ID],[学生姓名],企业管理,马克思,UML,数据库,平均成绩select student.s#,student.sname,sc.score,ame from student inner join sc on student.s#=sc.s#inner join course on sc.c#=course.c#where ame in('oracle','电路分析','计算机基础')order by ame,sc.score desc23、统计列印各科成绩,各分数段人数:课程ID,课程名称,[100-85],[85-70],[70-60],[ <60]select sc.c#,ame,count(*)人数from sc,coursewhere course.c#=sc.c#group by sc.c#,ame24、查询学生平均成绩及其名次select sc.s#,avg(score) from scgroup by sc.s#order by avg(score) desc25、查询各科成绩前三名的记录考虑成绩并列情况select s#,c# ,score from scwhere score in (select distinct top 3 score from scgroup by c#,score)order by score desc26、查询每门课程被选修的学生数select c# as 课程号,count(c#)as 选修人数from scgroup by c#order by count(c#) desc27、查询出只选修了一门课程的全部学生的学号和姓名select sc.s#,student.sname from sc inner join student on student.s#=sc.s#group by sc.s#,student.snamehaving count(c#)=128、查询男生、女生人数select ssex, count(*) as 总人数from studentgroup by ssex29、查询姓“张”的学生名单select sname from studentwhere sname like '张%'30、查询同名同性学生名单,并统计同名人数select ssex,count(*) from studentgroup by ssex31、同年出生的学生名单(注:Student表中Sage列的类型是datetime)32、查询每门课程的平均成绩,结果按平均成绩升序排列,平均成绩相同时,按课程号降序排列select c#,avg(score)平均成绩from scgroup by c#order by avg(score) asc33、查询平均成绩大于的所有学生的学号、姓名和平均成绩select top 1 student.s#,student.sname,avg(score)平均成绩from student inner join sc on student.s#=sc.s#group by student.s#,student.snameorder by avg(score) desc34、查询课程名称为“数据库”,且分数低于80的学生姓名和分数select student.sname,sc.score from sc,student,coursewhere student.s#=sc.s# and sc.c#=course.c# and ame='计算机基础' and sc.score<80group by student.sname,sc.score35、查询所有学生的选课情况;select student.s#,sname,c# from student left join sc on student.s#=sc.s#36、查询任何一门课程成绩在70分以上的姓名、课程名称和分数;select student.sname,ame,sc.score from student,sc,coursewhere student.s#=sc.s# and sc.c#=course.c# and sc.score>70order by score desc37、查询不及格的课程,并按课程号从大到小排列select c#,score from scwhere score<60order by c#38、查询课程编号为0001且课程成绩在70分以上的学生的学号和姓名;select student.s#,sname from sc,studentwhere c#='0001' and score>70 and student.s#=sc.s#39、求选了课程的学生人数select count(s#)人数from scwhere sc.score<>040、查询选修“oracle”课程的学生中,成绩最高的学生姓名及其成绩select top 1 student.sname,max(sc.score)成绩最高from student inner join sc on student.s#=sc.s# inner join course on sc.c#=course.c#where ame='oracle'group by student.snameorder by max(sc.score) desc41、查询各个课程及相应的选修人数select ame,count(sc.c#) as 选修人数from sc inner join course on sc.c#=course.c#group by ameorder by count(sc.c#) desc,ame asc42、查询不同课程成绩相同的学生的学号、课程号、学生成绩43、查询每门功成绩最好的前两名SELECT t1.S# as 学生ID,t1.C# as 课程ID,Score as 分数FROM SC t1WHERE score IN (SELECT TOP 2 score FROM SCWHERE t1.C#= C#ORDER BY score DESC)ORDER BY t1.C#44、统计每门课程的学生选修人数(超过人的课程才统计)。
sql测试题和答案
sql测试题和答案以下是一些常见的SQL测试题及其答案。
这些题目旨在考察SQL 基本知识和查询能力。
希望对你的SQL学习和提升有所帮助。
1. 给定一个名为"Students"的表格,包含学生的姓名、年龄和分数三个字段。
写一个SQL查询,按照分数从高到低排列,显示学生姓名和分数。
答案:SELECT Name, ScoreFROM StudentsORDER BY Score DESC;2. 给定一个名为"Customers"的表格,包含顾客的姓名、所在城市和消费金额三个字段。
写一个SQL查询,显示每个城市的总消费金额,结果按照金额从高到低排序。
答案:SELECT City, SUM(Expense) as TotalExpenseFROM CustomersGROUP BY CityORDER BY TotalExpense DESC;3. 给定一个名为"Orders"的表格,包含订单号、顾客姓名和订单日期三个字段。
写一个SQL查询,显示每个顾客最近一次的订单日期。
答案:SELECT CustomerName, MAX(OrderDate) as LastOrderDateFROM OrdersGROUP BY CustomerName;4. 给定一个名为"Employees"的表格,包含员工的姓名、职位和入职日期三个字段。
写一个SQL查询,显示每个职位的最早入职员工姓名。
答案:SELECT Position, MIN(StartDate) as EarliestEmployeeFROM EmployeesGROUP BY Position;5. 给定一个名为"Products"的表格,包含产品名称、价格和所属分类三个字段。
写一个SQL查询,显示每个分类中价格最高的产品。
答案:SELECT Category, MAX(Price) as HighestPriceFROM ProductsGROUP BY Category;这些题目涵盖了SQL中的基本查询、排序、分组和聚合等操作。
sql 逻辑练习题
sql 逻辑练习题SQL逻辑练习题本文将提供一些适合练习SQL逻辑的问题,并展示解决方案。
通过这些练习,您可以加深对SQL语言的理解,提高您在数据库查询和操作方面的能力。
问题一:查询表中的所有数据解决方案:SELECT * FROM table_name;问题二:查询表中的特定数据解决方案:SELECT * FROM table_name WHERE condition;问题三:查询表中的数据,并按照指定字段进行排序解决方案:SELECT * FROM table_name ORDER BY column_name;问题四:统计表中数据的总数解决方案:SELECT COUNT(*) FROM table_name;问题五:查询满足特定条件的数据,并按照指定字段进行分组解决方案:SELECT column_name, COUNT(*) FROM table_name WHERE condition GROUP BY column_name;问题六:查询满足特定条件的数据,并对结果进行筛选和排序解决方案:SELECT * FROM (SELECT column_name FROM table_name WHERE conditionORDER BY column_name ASC/DESC) AS subquery LIMIT 10;问题七:更新表中的数据解决方案:UPDATE table_name SET column_name = new_value WHERE condition;问题八:删除表中的特定数据解决方案:DELETE FROM table_name WHERE condition;问题九:创建新表解决方案:CREATE TABLE table_name (column1 datatype,column2 datatype,...);问题十:删除表解决方案:DROP TABLE table_name;通过解决这些练习题,您可以熟悉SQL基本语法和常用操作。
SQL语句练习及参考答案(2021年整理精品文档)
SQL语句练习及参考答案编辑整理:尊敬的读者朋友们:这里是精品文档编辑中心,本文档内容是由我和我的同事精心编辑整理后发布的,发布之前我们对文中内容进行仔细校对,但是难免会有疏漏的地方,但是任然希望(SQL语句练习及参考答案)的内容能够给您的工作和学习带来便利。
同时也真诚的希望收到您的建议和反馈,这将是我们进步的源泉,前进的动力。
本文可编辑可修改,如果觉得对您有帮助请收藏以便随时查阅,最后祝您生活愉快业绩进步,以下为SQL语句练习及参考答案的全部内容。
SQL 语句练习1。
设学生选课数据库有关系S (sno ,sname ,age ,sex )、SC (sno ,cno ,grade )和C (cno,cname,teacher ),分别表示学生、选课和课程,sno 代表学号,sname 代表学生姓名,age 代表年龄,sex 代表性别,grade 代表成绩,cno 代表课程号,teacher 代表任课教师。
试完成表示下列查询。
(1)检索年龄大于21的男学生学号(sno )和姓名(sname)。
(2)建立性别只能为“男”、“女"的约束。
(3)创建一个视图v1,该视图用来查询学生的选课情况,要求包含:学生姓名(sname),课程名(cname),任课教师teacher 和成绩grade 。
(4)检索选修课程号为k1和k5的学生学号(sno ). (5)检索全部学生都选修的课程的课程号(cno)和课程名(cname )。
(6)删除所有男同学的选课记录。
1。
(1)select sno ,snae from s where sex=’男' and age 〉21(2)alter table s add constraint c1 check sex in (‘男’,’女')(3)create view v1 as select sname ,cname,teacher,grade from s ,sc ,c where s 。
《SQL习题精选》word版
第一章绪论一,选择题1、DBS是采用了数据库技术的计算机系统,DBS是一个集合体,包含数据库、计算机硬件、软件和( C)。
A、系统分析员B、程序员C、数据库管理员D、操作员2、数据库(DB),数据库系统(DBS)和数据库管理系统(DBMS)之间的关系是( A)。
A、DBS包括DB和DBMSB、DBMS包括DB和DBSC、DB包括DBS和DBMSD、DBS就是DB,也就是DBMS3、下面列出的数据库管理技术发展的三个阶段中,没有专门的软件对数据进行管理的是( D)。
I.人工管理阶段II.文件系统阶段III.数据库阶段A、I 和IIB、只有IIC、II 和IIID、只有I4、下列四项中,不属于数据库系统特点的是(C ) 。
A、数据共享B、数据完整性C、数据冗余度高D、数据独立性高5、数据库系统的数据独立性体现在(B ) 。
A、不会因为数据的变化而影响到应用程序B、不会因为系统数据存储结构与数据逻辑结构的变化而影响应用程序C、不会因为存储策略的变化而影响存储结构D、不会因为某些存储结构的变化而影响其他的存储结构三、简答题1、数据:描述事物的符号记录称为数据.数据的种类有文字,图形,图象,声音,正文等等.数据与其语义是不可分的。
2、数据库:数据库是长期储存在计算机内,有组织的,可共享的数据集合.数据库中的数据按一定的数据模型组织,描述和储存,具有较小的冗余度,较高的数据独立性和易扩展性,并可为各种用户共享。
数据库管理系统:数据库管理系统(DBMS)是位于用户与操作系统之间的一层数据管理软件.用于科学地组织和存储数据,高效地获取和维护数据.DBMS主要功能包括数据定义功能,数据操纵功能,数据库的运行管理功能,数据库的建立和维护功能。
3、数据库管理系统的主要功能①数据库定义功能;②数据存取功能;③数据库运行管理;④数据库的建立和维护功能。
4、试述数据库系统的特点。
数据库系统的主要特点有:一,数据结构化数据库系统实现整体数据的结构化,这是数据库的主要特征之一,也是数据库系统与文件系统的本质区别。
复杂SQL练习题
19
求选修了雷老师所授全部课程的学 生姓名和学院名称
NOT EXIST ({e|e∈B⋀{m|m∈A⋀m=e}=ϕ})
Select 姓名,学院名称 From 学生, 学院 Where (学生.学院代码=学院.学院代码) And NOT EXISTS ( Select 课程号 From 开课 Where 教师号=(Select 教师号 From 教师 Where 教师姓名=‘雷老师’) And NOT EXISTS ( Select 课程号 From 学习 Where 学号=学生.学号 And 课程号=开课.课程号) )
7
查询至少选修了1号学生所选全部课 程的学生编号
Select sno From S Where (NOT EXISTS ( Select cno From SC Where sno=‘1’ And ( NOT EXISTS (这些学生选择该课程的元组) ))); Select sno From S Where (NOT EXISTS ( Select cno From SC Where sno=‘1’ And ( NOT EXISTS ( Select cno From SC As SC1 Where SC1.sno = S.sno and o = o ) 8 )));
SQL主体结构
• Select sno From S Where(?) • ?:选择条件是“这些学生的所选课程包含了1 号学生所选课程” • (1)这些学生所选课程 = 集合A
Select cno From SC where sno=‘这些学生的 sno’ Select cno From SC where sno=‘1’
• B-A ≡ 从“1号学生所选课程”中去除 “属于集合A 的课程” ≡ Select cno From SC where sno=‘1’ and (该课程不属于集合A)
复杂SQL语句入门考试
复杂SQL语句入门考试(答案见尾页)一、选择题1. 什么是SQL?A. 结构化查询语言B. 简单查询语言C. 安全查询语言D. 序列查询语言2. 在SQL中,哪个关键字用于从表中检索数据?A. SELECTB. INSERTC. UPDATED. DELETE3. 以下哪个操作通常不是SQL查询的一部分?A. 创建数据库B. 修改表结构C. 查询数据D. 添加索引4. 在SQL中,如何将两个表的数据合并在一起?A. 使用JOIN关键字B. 使用UNION关键字C. 使用WHERE子句D. 使用GROUP BY子句5. 在SQL中,哪个函数用于计算数值字段的平均值?A. AVG()B. COUNT()C. MAX()6. 在SQL中,如何对结果集进行排序?A. 使用ORDER BY子句B. 使用GROUP BY子句C. 使用HAVING子句D. 使用LIMIT子句7. 在SQL中,哪个关键字用于在查询结果中包含或排除特定的行?A. WHEREB. ELSEC. UNIOND. LIMIT8. 在SQL中,如何限制查询结果的行数?A. 使用LIMIT子句B. 使用ORDER BY子句C. 使用GROUP BY子句D. 使用HAVING子句9. 在SQL中,哪个关键字用于在多个表之间进行连接?A. INNER JOINB. OUTER JOINC. CROSS JOIND. self JOIN10. 在SQL中,如何修改表中的数据?A. 使用INSERT语句B. 使用UPDATE语句C. 使用DELETE语句D. 使用SELECT语句11. 在SQL中,哪个关键字用于从数据库表中检索数据?B. INSERTC. UPDATED. DELETE12. 在构建SQL查询时,以下哪个操作不是必要的?A. 使用WHERE子句过滤结果B. 使用JOIN连接多个表C. 使用GROUP BY对结果进行分组D. 在SELECT语句中使用AS关键字为列指定别名13. 如果想在查询结果中包含重复的行,应该使用哪种子句?A. WHEREB. GROUP BYC. ORDER BYD. DISTINCT14. 在SQL中,如何将两个或多个表按照某个共同字段进行连接?A. 使用INNER JOINB. 使用LEFT JOINC. 使用RIGHT JOIND. 使用FULL JOIN15. 以下哪个函数用于计算某个字段的平均值?A. COUNTB. SUMC. AVGD. MAX16. 如何在SQL中实现多表查询,并且只返回某些特定字段的结果?A. 使用子查询B. 使用JOIN和WHERE子句C. 使用GROUP BYD. 使用HAVING子句17. 在SQL中,哪个关键字用于修改表中的数据?A. INSERTB. UPDATEC. DELETED. SELECT18. 如果想要更新表中所有行的某个字段的值,应该使用哪种语法?A. UPDATE table_name SET column_name = value;B. UPDATE table_name SET column_name = new_value;C. ALTER TABLE table_name ADD COLUMN column_name = value;D. ALTER TABLE table_name MODIFY COLUMN column_name = value;19. 在SQL中,如何对查询结果进行排序?A. 使用ORDER BY子句B. 使用GROUP BY子句C. 使用HAVING子句D. 使用LIMIT子句20. 在SQL中,以下哪个关键字用于从表中选择数据?A. INSERTB. SELECTC. UPDATED. DELETE21. 在SQL中,哪个子句用于指定要返回哪些列?A. WHERE子句B. SELECT子句C. FROM子句D. GROUP BY子句22. 在SQL中,哪个关键字用于在查询中插入常量值?A. VALUESB. SELECTC. INSERTD. UPDATE23. 在SQL中,如何限制返回的结果数量?A. 使用LIMIT子句B. 使用ORDER BY子句C. 使用GROUP BY子句D. 使用HAVING子句24. 在SQL中,哪个关键字用于在查询中过滤数据?A. WHERE子句B. SELECT子句C. FROM子句D. GROUP BY子句25. 在SQL中,如何将一个表中的数据复制到另一个表中?A. 使用INSERT INTO子句B. 使用UPDATE子句C. 使用DELETE子句D. 使用SELECT子句26. 在SQL中,哪个关键字用于在查询中分组数据?A. WHERE子句B. SELECT子句C. FROM子句D. GROUP BY子句27. 在SQL中,哪个关键字用于从表中选择数据?A. INSERTB. SELECTC. UPDATED. DELETE28. 在构建SQL查询时,哪项操作可以用来从一个表中删除行?A. SELECTB. INSERTC. UPDATED. DELETE29. SQL中,用于修改表结构的命令是哪一个?A. ALTER TABLEB. CREATE TABLEC. UPDATED. DELETE30. 能够从一个表中提取特定列的数据的SQL命令是什么?A. SELECT 列名 FROM 表名B. INSERT 列名 FROM 表名C. UPDATE 列名 FROM 表名D. DELETE 列名 FROM 表名31. 在SQL中,用于将一个表中的数据插入到另一个表中的命令是?A. JOINB. INSERT INTOC. SELECTD. UPDATE32. SQL中,用于限制查询结果数量的关键字是?A. LIMITB. WHILEC. WHERED. ORDER BY33. 在SQL中,如何通过子查询来过滤数据?A. 使用WHERE 子句B. 使用HAVING 子句C. 使用IN 子句D. 使用SELECT 子句34. 在SQL中,如何合并两个或多个表的行?A. 使用JOIN 子句B. 使用UNION 子句C. 使用INTERSECT 子句D. 使用EXCEPT 子句二、问答题1. 什么是SQL注入攻击?如何防止它?2. 什么是事务?ACID属性是什么?3. 解释一下主键和外键的区别。