SQL课上作业与答案 (1)

合集下载

SQL习题有答案1

SQL习题有答案1

SQL习题有答案1[一、选择1、根据关系数据基于的数据模型——关系模型的特征判断下列正确的一项:(_B__)A、只存在一对多的实体关系,以图形方式来表示。

B、以二维表格结构来保存数据,在关系表中不允许有重复行存在。

C、能体现一对多、多对多的关系,但不能体现一对一的关系。

D、关系模型数据库是数据库发展的最初阶段。

2、( A )如果要让Windows NT/2000和UNIX用户能够同时访问SQL Server,并且在管理用户上要尽可能省事,则应选择哪种验证模式?A.混合验证模式B.NT验证模式C.多协议验证模式D.同时使用混合验证模式和NT验证模式3、( B )以下哪种角色只允许用户选择数据库中的所有数据A.db_ower B.db_datareader C.db_datawriter D.db_ddladmin4、( C)下列哪种数据类型上不能建立IDENTITY列?A.intB.tiny intC. floatD.small int5、(B)在“连接”组中有两种连接认证方式,其中在什么方式下,需要客户端应用程序连接时提供登录时需要的用户标识和密码。

A、Windows身份验证B、SQL Server 身份验证C、以超级用户身份登录时D、其他方式登录时6、以下D方法可以在/doc/42480763.html,的记录集中新增一条记录A.Add B.Insert C.New D.AddNew7、当采用Windows认证方式登录数据库服务器时,SQL Server 客户端软件会向操作系统请求一个(A )。

A. 信任连接B. 邮件集成C. 并发控制D. 数据转换服务8、下列标识符可以作为局部变量使用( C )。

A. [@Myvar]B. My varC. @MyvarD. @My var9、Transact-SQL支持的程序结构语句中的一种为(A)。

A. Begin…EndB. If…Then…ELSEC. Do CaseD. Do While10、不属于SQL Server系统全局变量的是(D)。

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练习题及答案1(合集五篇)

SQL练习题及答案1(合集五篇)

SQL练习题及答案1(合集五篇)第一篇:SQL练习题及答案1SQL练习题:商品销售数据库商品销售数据库Article(商品号 char(4),商品名char(16),单价 Numeric(8,2),库存量 int)Customer(顾客号char(4),顾客名 char(8),性别 char(2),年龄 int)OrderItem(顾客号 char(4),商品号 char(4),数量 int, 日期date)1.用SQL建立三个表,须指出该表的实体完整性和参照完整性,对性别和年龄指出用户自定义的约束条件。

(性别分成男女,年龄从10到100)。

顾客表的数据用插入语句输入数据,其它两表可用任意方式输入数据。

create table OrderItem(顾客号char(4),商品号char(4),日期datetime,数量 smallint,primary key(顾客号,商品号,日期),foreign key(商品号)references Article(商品号), foreign key(顾客号)references Custommer(顾客号));2.检索定购商品号为…0001‟的顾客号和顾客名。

select distinct 顾客号,顾客名from OrderItem where 商品号='0001'3.检索定购商品号为…0001‟或…0002‟的顾客号。

select distinct 顾客号 from OrderItem where 商品号='0001' or 商品号='0002';4.检索至少定购商品号为…0001‟和…0002‟的顾客号。

select 顾客号 from OrderItem where 商品号='0001' and 顾客号 in(select 顾客号 from OrderItem where 商品号='0002');5.检索至少定购商品号为…0001‟和…0002‟的顾客号。

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. 查询员工表中没有分配部门的员工的姓名和工资。

SQL经典题目与答案

SQL经典题目与答案
An Introduction to Database System
作业答案: 作业答案:
若学生选课库的关系模式为: 1、若学生选课库的关系模式为: 学生(学号,姓名,性别,年龄,所在系); 学生(学号,姓名,性别,年龄,所在系); 课程(课程号,课程名,先行课); 课程(课程号,课程名,先行课); 选课(学号,课程号,成绩) 选课(学号,课程号,成绩). 求选修了课程号为“C2”课程的学生学号 课程的学生学号。 ①求选修了课程号为“C2”课程的学生学号。
An Introduction to Database System
5)求至少用了供应商S1所供应的全部零件的工程号 )求至少用了供应商 所供应的全部零件的工程号 所供应的全部零件的工程号JNO: :
作业答案
3.查询至少选修了一门其直接先行课为5号 查询至少选修了一门其直接先行课为5 课程的课程的学生姓名。 课程的课程的学生姓名。
An Introduction to Database System
πSname(σCpno='5'(Course SC Student)) Student))

πSname(σCpno='5'(Course) Cpno='5 SC πSno,Sname(Student)) Sno,

πSname (πSno (σCpno='5' (Course) Cpno='5 SC) πSno,Sname (Student)) Sno,
π学号(σ课程号 ‘C2’(选课)) 选课)) 课程号=
②求选修了课程号为“C2”课的学生学号和姓名。 求选修了课程号为“C2”课的学生学号和姓名。 课的学生学号和姓名

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课后作业10题参考答案

SQL课后作业10题参考答案

假设每个职工可以在多个公司工作,检索每个职工的兼职公司数目和工资总数,显示E#,MUM,SUM_SALARY分别表示工号、公司数目和工资总数。

分析:涉及到表为works表;按照职工来统计公司的数目和工资总额select E#,count(c#) NUM,sum(salary) SUM_SALARY from works group by E#检索”联华公司”中低于本公司平均公司的职工工号和姓名.(10题2小题)(1)查找联华公司职工的平均工资。

方法一:连接查询实现select avg(salary) from works,comp where works.c#=comp.c# and cname='联华公司'方法二:嵌套查询实现Select avg(salary) from works Where c#=(select c# from comp Where cname='联华公司')------------------------------------5799.5(2)查找联华公司工资低于(1)的职工工号和姓名。

方法一:连接查询实现外层查询select emp.e#,enamefrom emp,works,compwhere emp.e#=works.e#and works.c#=comp.c#and cname='联华公司'and salary<(Select avg(salary) from worksWhere c#=(select c# from compWhere cname='联华公司'))方法二:嵌套查询实现外层查询(自己思考)3、检索工资高于其所在公司职工平均工资的所有职工的工号和姓名。

(1)先查找各公司的平均工资select c#,avg(salary) avg_salfrom worksgroup by c#(2) 检索所有职工的工号、姓名、公司,工资select emp.e#,ename,works.c#,salary,from emp,workswhere emp.e#=works.e#(3) 检索所有职工的工号、姓名、公司,工资,所在公司和平均工资select emp.e#,ename,works.c#,salary,a.c#,a.avg_salfrom emp,works,(select c#,avg(salary) avg_salfrom works group by c#) awhere emp.e#=works.e#and works.c#=a.c#and salary>avg_sal4、检索职工人数最多的公司的编号和名称(10题的4小题).(1)按照公司来统计公司的人数(涉及到works)select c#,count(e#) from worksgroup by c#(2) 从(1)的结果中查找人数最多的公司的人数select max(cont) from (select c#,count(e#) cont from worksgroup by c#) a(3) 根据(2)查询的结果,从(1)的结果中查找人数最多的公司的编号.select c# from (select c#,count(e#) cont from works group by c#) awhere cont=(select max(cont) from (select c#,count(e#) contfrom worksgroup by c#) a)(4)已知公司编号,在COMP表中查找公司编号和名称select c#,cname from compwhere c# in(select c# from (select c#,count(e#) cont from works group by c#) a where cont=(select max(cont) from (select c#,count(e#) contfrom worksgroup by c#) a))5、检索工资总额最小的公司的编号和名称。

SQL第1章课后习题答案

SQL第1章课后习题答案

第一章思考与练习题1.SQL Server 2005包括哪些版本?2.如何在SQL Server Management Studio中查询数据?3.简述SQL Server 2005的配置要求。

1、SQL Server 2005的版本有:SQL Server 2005 Enterprise Edition(企业版)、SQL Server 2005 Standard Edition(标准版)、SQL Server 2005 Workgroup Edtition(工作组版)、SQL Server 2005 Developer Edition(开发版)、及SQL Server 2005 Express Edition(简易版)。

2、在Management Studio中,单击工具栏左侧的“新建查询”按钮,即可打开查询分析器,输入SQL语句后,单击工具栏中的“执行”按钮,执行此SQL语句,并将查询后的结果显示在结果窗口中。

3、硬件要求:(1)监视器:SQL Server图形工具需要VGA或更高分辨率,分辨率至少为 1024×768 像素。

(2)处理器:Pentium III 600MHz以上。

(3)内存:SQL Server 2005 Express Edition最小内存为192MB,其他版本最小内存为512MB。

(4)硬盘空间:实际硬盘空间要求取决于系统配置和选择安装的应用程序和功能。

软件要求:(1)网络软件:64 位版本的SQL Server 2005的网络软件要求与32位版本的要求相同。

Windows 2003、Windows XP和Windows 2000都具有内置网络软件。

(2)浏览器:所有SQL Server 2005的安装都需要Microsoft Internet Explorer 6.0 SP1或更高版本,因为Microsoft管理控制台(MMC)和HTML帮助需要它。

(3)Internet信息服务:安装Microsoft SQL Server 2005 Reporting Services (报表服务)需要IIS 5.0以上版本。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1、查询xs表中计算机专业同学的学号、姓名和总学分,结果中各列的标题分别指定为number、name和mark。

Select 学号as number,姓名as name,总学分as mark from xs where 专业名="计算机";2、查询xs表中计算机专业各同学的学号、姓名和总学分,对总学分按如下规则进行替换:若总学分为空值,替换为“尚未选课”;若总学分小于50,替换为“不及格”;若总学分在50~52之间,替换为“合格”;若总学分大于52,替换为“优秀”。

总学分列的标题更改为“等级”。

select 学号,姓名,casewhen 总学分is null then "尚未选课"when 总学分< 50 then "不及格"when 总学分>=50 and 总学分<=52 then "合格"else "优秀"end as 等级from xswhere 专业名="计算机";3、按120分制重新计算成绩,显示xs_kc表中学号为81101的学生成绩信息。

select 学号,课程号,成绩*1.2 as 成绩120 from xs_kc where 学号="81101";3 rows in set4、对xscj数据库的xs表只选择专业名和总学分,消除结果集中的重复行。

select distinct 专业名,总学分from xs;8 rows in set5、统计备注不为空的学生数目。

select count(备注) as 人数from xs where 备注is not null;6、统计总学分在50分以上的人数。

select count(总学分) as 人数from xs where 总学分> 50;1 row in set7、求选修101课程的学生的最高分和最低分。

select max(成绩) as 最高分,min(成绩) as 最低分from xs_kc where 课程号="101";1 row in set8、求学号081101的学生所学课程的总成绩。

select sum(成绩) as 总成绩from xs_kc where 学号="81101";9、求选修101课程的学生的平均成绩。

select 学号,avg(成绩) from xs_kc where 课程号="101";10、求选修101课程的成绩的方差。

select variance(成绩) from xs_kc where 课程号="101";11、求选修101课程的成绩的标准差。

select stddev(成绩) from xs_kc where 课程号="101";12、求选修了206课程的学生的学号。

select group_concat(学号) from xs_kc where 课程号="206";13、从xs表中检索出所有学生的信息,并使用表别名student。

select * from xs as student;14、查找xscj数据库中所有学生选过的课程名和课程号select distinct kc.课程名,xs_kc.课程号from kc,xs_kc where kc.课程号=xs_kc.课程号;3 rows in set15、用FROM子句的JOIN关键字表达下列查询:查找选修了206课程且成绩在80分以上的学生姓名及成绩。

select 姓名,成绩from xs inner join xs_kc on xs.学号=xs_kc.学号where 课程号="206" and 成绩> 80;3 rows in set16、用FROM的JOIN关键字表达下列查询:查找选修了“计算机基础”课程且成绩在80分以上的学生学号、姓名、课程名及成绩。

select xs.学号,姓名,课程名,成绩from xs join xs_kc on xs.学号=xs_kc.学号join kc on xs_kc.课程号=kc.课程号where 课程名="计算机基础" and 成绩> 80;8 rows in set17、查找xscj数据库中课程不同、成绩相同的学生的学号、课程号和成绩。

select a.学号,a.课程号,b.课程号,a.成绩from xs_kc as a join xs_kc as b on a.成绩=b.成绩and a.学号=b.学号and a.课程号!= b.课程号;2 rows in set18、查找所有学生情况及他们选修的课程号,若学生未选修任何课,也要包括其情况。

select xs_kc.*,课程号from xs left outer join xs_kc on xs.学号=xs_kc.学号;19、查找被选修了的课程的选修情况和所有开设的课程名。

select xs_kc.*,课程名from xs_kc right join kc on xs_kc.课程号=kc.课程号;20、列出学生所有可能的选课情况。

mysql> select 学号,姓名,课程号,课程名-> from xs cross join kc;21、查询xscj数据库xs表中学号为81101的学生的情况。

select 学号,姓名,总学分from xs where 学号="81101";1 row in set22、查询xs表中总学分大于50分的学生的情况。

select * from xs where 总学分> 50;23、查询xs表中备注为空的同学的情况。

select * from xs where 备注is null;mysql> select * from xs where 备注<=> null;24、查询xs表中专业为计算机,性别为女(0)的同学的情况。

select * from xs where 专业名="计算机" and 性别=0;25、查询xscj数据库xs表中姓“王”的学生学号、姓名及性别。

select 学号,姓名,性别from xs where 姓名like "王%";26、查询xscj数据库xs表中,学号倒数第二个数字为0的学生的学号、姓名及专业名。

select 学号,姓名,专业名from xs where 学号like "%0_";|查询xs表中名字包含下画线的学生学号和姓名。

select 学号,姓名from xs where 学号like "%#_%" escape "#";28、查询xscj数据库xs表中不在1993年出生的学生情况。

select * from xs where 出生时间<=>1993;29、查询xs表中专业名为“计算机”、“通信工程”或“无线电”的学生的情况。

select * from xs where 专业名="计算机" or 专业名="通信工程" or 专业名="无线电";30、查询xscj数据库中总学分尚不定的学生情况。

select * from xs where 总学分is null;31、查找在xscj数据库中选修了课程号为206的课程的学生的姓名、学号。

select 姓名,学号from xs where 学号in(select 学号from xs_kc where 课程号="206");32、查找未选修离散数学的学生的姓名、学号、专业名。

select 姓名,学号,专业名from xs where 学号not in (select 学号from xs_kc where 课程号in (select 课程号from xs where 课程号="离散数学"));33、查找选修了离散数学的学生学号。

select 学号from xs_kc where 课程号= (select 课程号from kc where 课程名="离散数学");34、查找xs表中比所有计算机系的学生年龄都大的学生学号、姓名、专业名、出生日期。

select 学号,姓名,专业名,出生时间from xs where 出生时间<all(select 出生时间from xs where 专业名="计算机");35、查找xs_kc表中课程号206的成绩不低于课程号101的最低成绩的学生的学号。

select 学号from xs_kc where 课程号="206" and 成绩>any(select 成绩from xs_kc where 课程号="101");36、查找选修206号课程的学生姓名。

select 姓名from xs where exists (select * from xs_kc where 课程号="206" and 学号=xs.学号);37、查找选修了全部课程的同学的姓名。

select 姓名from xs where not exists (select * from kc where not exists (select * from xs_kc where 学号=xs.学号and 课程号=kc.课程号));38、从xs表中查找总学分大于50分的男同学的姓名和学号。

select 姓名,学号from xs where 总学分>50 and 性别=1;select 姓名,学号from xs where 学号in (select 学号from xs where 总学分>50 and 性别=1);select 姓名,学号,总学分from (select 姓名,学号,性别,总学分from xs where 总学分> 50) as student where 性别=1;39、从xs表中查找所有女学生的姓名、学号,以及与81101号学生的年龄差距。

select 姓名,学号,year(出生时间)-year((select 出生时间from xs where 学号="81101" ) ) as 年龄差距from xs where 性别=0;40、查找与81101号学生性别相同、总学分相同的学生学号和姓名。

相关文档
最新文档