实验四 SQL语言-参考答案
数据库原理中SQL语句实验指导书及答案

实验四:管理SQL Server表数据一、实验目的熟悉数据表结构及使用特点;熟悉使用Management Stuio界面方式管理数据表数据;熟悉使用T-SQL语句管理数据表数据。
二、实验环境已安装SQL Server 2005 企业版的计算机(13台);具有局域网环境,有固定IP;三、实验学时2学时四、实验要求了解SQL Server数据表数据的管理方法;了解SQL Server数据类型;完成实验报告(部分题只需给出关键语句)。
五、实验内容及步骤以课本指定的数据库为例,并依据数据表的结构创建相对应的数据表(student、course、sc),请分别使用Management Stuio界面方式及T-SQL 语句实现进行以下操作:向各个数据表中插入如下记录:学生信息表(student)课程信息表(course)选课信息表(sc)insert into student.dbo.sc values('20051501','1',75)insert into student.dbo.course values('1','数据库','5',4)insert into student.dbo.student values('201015001','赵菁菁','女',23,'CS') 2.修改CS系姓名为“李勇”的学生姓名为“李咏”;update studentset Sname='李咏'where Sname='李勇'3.修改课程“数据处理”的学分为3学分;3.update courseset Ccredit=3where Cname ='数据处理'4.将选修课程“1”的同学成绩加5分;4.update scset Grade =Grade+5where Cno='1'5.将选修课程“大学英语”的同学成绩加5分;update scset Grade=Grade+5from course,scwhere o=o and ame='大学英语'6.将学号为“200515010”的学生信息重新设置为“王丹丹、女、20、MA”;update studentset Sname='王丹丹',Ssex='女',Sage=20,Sdept='MA'where Sno='200515010'7.修改借书证号为2005001的学生记录重新设置:名字为王婧婧、专业为信息管理、借书量增加5本;(因为无些相关的数据表帮无法实现)8.删除数据表student中无专业的学生记录;deletefrom studentwhere Sdept is null9.删除数据表student中计算机系年龄大于25的男同学的记录;deletefrom studentwhere Ssex='男' and Sage>25 and Sdept='CS'10.删除数据表course中学分低于1学分的课程信息;deletefrom coursewhere Ccredit<1实验五:数据库单表查询一、实验目的1.掌握SELECT语句的基本语法和查询条件表示方法;2.掌握查询条件表达式和使用方法;3.掌握GROUP BY 子句的作用和使用方法;4.掌握HAVING子句的作用和使用方法;5.掌握ORDER BY子句的作用和使用方法。
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.sno=sc.sno and/doc/62176c89fe4733687e21aaca.html o=/doc/62176c89fe4733687e21aaca.html o (4)select sno fromsc sc1 where cno=’k1’ and exists (se lect * fromsc sc2 where sc1.sno =sc2.sno and/doc/62176c89fe4733687e21aaca.html o=’k5’)(5)select cno,cnam from c where not exists (select * from s where not exists (select * from sc where/doc/62176c89fe4733687e21aaca.html o=/doc/62176c89fe4733687e21aaca.html o and s.sno=sc.sno)(6)delete from sc where sno in (select sno from s where sex=’男’)或delete sc from sc,s where s.sno=sc.sno and sex=’男’2.设图书借阅数据库有关系图书(图书编号,书名,作者,出版社,出版时间,图书类别)、读者(读者编号,姓名,读者类别)和借阅(读者编号, 图书编号, 借阅⽇期,还期)。
SQL语言习题参考答案(新)

第3章 SQL语言习题参考答案1.试述SQL语言的特点。
(85页)答:综合统一、高度非过程化、面向集合的操作方式、以同一种语法结构提供两种使用方式、语言简捷,易学易用。
2.试述SQL的定义功能。
(87页)答:SQL的数据定义功能包括定义表、定义视图和定义索引3.用SQL语句建立第二章习题5中的四个表。
S(SNO,SNAME,STATUS,CITY);P(PNO,PNAME,COLOR,WEIGHT);J(JNO,JNAME,CITY);SPJ(SNO,PNO,JNO,QTY);供应商表S由供应商代码(SNO)、供应商姓名(SNAME)、供应商状态(STATUS)、供应商所在城市(CITY)组成:CREATE TABLE S(Sno C(2) UNIQUE,Sname C(6) ,Status N(2),City C(4))零件表P由零件代码(PNO)、零件名(PNAME)、颜色(COLOR)、重量(WEIGHT)组成:CREATE TABLE P(Pno C(2) UNIQUE,Pname C(6),COLOR C(2),WEIGHT I(2))工程项目表J由工程项目代码(JNO)、工程项目名(JNAME)、所在城市(CITY)组成:CREATE TABLE J(Jno C(2) UNlQUE,JNAME C(8),CITY C(4))供应情况表SPJ由供应商代码(SNO)、零件代码(PNO)、工程项目代码(JNO)、供应数量(QTY)组成:CREATE TABLE SPJ(Sno C(2),Pno C(2),JNO C(2),QTY N(2))4.针对上题中建立的四个表试用SQL语言完成第二章习题5中的查询:(1)求供应工程J1零件的供应商号码SNO:SELECT DIST SNO FROM SPJ WHERE JNO=’J1’(2)求供应工程J1零件P1的供应商号码SNO:SELECT DIST SNO FROM SPJ WHERE JNO='J1' AND PNO='P1' (3)求供应工程J1零件为红色的供应商号码SNO:SELECT SNO FROM SPJ,P WHERE JNO='J1' AND = AND COLOR='红' (4)求没有使用天津供应商生产的红色零件的工程号JNO:SELECT DIST JNO FROM SPJ WHERE JNO NOT IN (SELE JNO FROM SPJ,P,S WHERE ='天津' AND COLOR='红' AND = AND =。
SQL语句练习参考答案(教学数据库)

以下为SQL查询练习参考答案(查询用到的表参照教材P82)。
1.查询全体学生的姓名和所在系。
Select Sno,SdeptFrom Student;2.查询所有课程的详细信息。
Select *From Course;或者Select Cno,Cname,Cpno,CcreditFrom Course;3.查询选修了课程的学生学号。
Select Distinct SnoFrom SC;注意:select子句中需要指定Distinct 关键词4.查询有学生选修的课程号。
Select Distinct CnoFrom SC;5.检索年龄在 18到 20之间(含18和20)的女生的学号、姓名及年龄。
Select Sno,Sname,SageFrom StudentWhere Ssex=’女’ and (Sage between 18 and 20);注意: where子句性别的常量值——女,需用英文状态下的单引号或双引号。
或者Select Sno,Sname,SageFrom StudentWhere Ssex=’女’ and (Sage >=18 and Sage<= 20);6.检索“200215121”学生选修课程号及成绩。
Select Cno,GradeFrom SCWhere Sno=’200215121’;7.检索选修了“1”号或“3”号课程的学生学号、课程号及成绩。
Select *From SCWhere Cno=’1’ or Cno=’3’;注意: where子句若用Cno=’1’ or ’3’是错误的,or连接的是两个布尔表达式。
8.检索所有姓王的同学的姓名、性别和所在系。
Select Sname,Ssex,SdeptFrom StudentWhere Sname like ’王*’;注意: Access中的通配符为’*’ 和’?’标。
准SQL中的通配符为’%’ 和’_’9.检索课程名中包括“数据库”的课程详细信息,结果按学分降序排列。
实验四Transact-SQL数据库编程答案

试验四Transact-SQL 数据库编程1.编一程序用于判断XS数据表中是否有年龄小于18岁的学生数据,如果有则显示学生的人数,否则显示“没有年龄小于18岁的学生数据”。
set serveroutput on;declaren_count number(10);beginselect count(*) into n_count from xs where to_number(to_char(sysdate,'yyyy'))-to_number(to_char(cssj,'yyyy'))<18;if n_count<1 thenDBMS_OUTPUT.PUT_LINE('没有年龄小于18岁的学生数据');elseDBMS_OUTPUT.PUT_LINE('大于18岁的学生'||to_char(n_count)||'人');end if;end;2.编一程序显示每个学生的学号、姓名、平均成绩及成绩等级,成绩等级的判断条件如下:平均成绩>=90 显示“优”平均成绩<90 and平均成绩>=80 显示“良”平均成绩<80 and平均成绩>=70 显示“中”平均成绩<70 and平均成绩>=60 显示“及格”平均成绩<60 显示“不及格”select xs.xh,xm,avg(cj) 平均成绩,casewhen avg(cj)>=90 then '优'when avg(cj)>=80 then '良'when avg(cj)>=70 then '中'when avg(cj)>=60 then '及格'else '不及格'end 平均成绩from xs,xs_kcwhere xs.xh=xs_kc.xhgroup by xs.xh,xm;3.创建一个用户自定义函数,以学号和课程名称为参数,返回该学生指定课程的学习成绩。
SQL语言习题参考答案

第3章 SQL语言习题参考答案1.试述SQL语言的特点。
(85页)答:综合统一、高度非过程化、面向集合的操作方式、以同一种语法结构提供两种使用方式、语言简捷,易学易用。
2.试述SQL的定义功能。
(87页)答:SQL的数据定义功能包括定义表、定义视图和定义索引3.用SQL语句建立第二章习题5中的四个表。
S(SNO,SNAME,STATUS,CITY);P(PNO,PNAME,COLOR,WEIGHT);J(JNO,JNAME,CITY);SPJ(SNO,PNO,JNO,QTY);供应商表S由供应商代码(SNO)、供应商姓名(SNAME)、供应商状态(STATUS)、供应商所在城市(CITY)组成:CREATE TABLE S(Sno C(2) UNIQUE,Sname C(6) ,Status N(2),City C(4))零件表P由零件代码(PNO)、零件名(PNAME)、颜色(COLOR)、重量(WEIGHT)组成:CREATE TABLE P(Pno C(2) UNIQUE,Pname C(6),COLOR C(2),WEIGHT I(2))工程项目表J由工程项目代码(JNO)、工程项目名(JNAME)、所在城市(CITY)组成:CREATE TABLE J(Jno C(2) UNlQUE,JNAME C(8), CITY C(4)).供应情况表SPJ由供应商代码(SNO)、零件代码(PNO)、工程项目代码(JNO)、供应数量(QTY)组成:CREATE TABLE SPJ(Sno C(2),Pno C(2),JNO C(2), QTY N(2))4.针对上题中建立的四个表试用SQL语言完成第二章习题5中的查询:(1)求供应工程J1零件的供应商号码SNO:SELECT DIST SNO FROM SPJ WHERE JNO='J1'(2)求供应工程J1零件P1的供应商号码SNO:SELECT DIST SNO FROM SPJ WHERE JNO='J1' AND PNO='P1' (3)求供应工程J1零件为红色的供应商号码SNO:SELECT SNO FROM SPJ,P WHERE JNO='J1' AND = AND COLOR='红'(4)求没有使用天津供应商生产的红色零件的工程号JNO: SELECT DIST JNO FROM SPJ WHERE JNO NOT IN (SELE JNO FROMSPJ,P,S WHERE ='天津' AND COLOR='红' AND = AND =。
SQL SERVER实验四答案

1、查询信息系所有男生SELECT * FROM student where xi='信息'and xb='男'2、查询所有男生的姓名SELECT xm FROM student where xb='男'3、查询"管理信息系统"课程的选修学生名单SELECT xm FROM student ,sc ,course where student.xh=sc.xh andsc.kch=course.kch and course.kcm='管理信息系统'4、查询所有学生的学号、姓名,课程名和成绩SELECT student.xh,xm,kcm,cj FROM student ,sc ,course where student.xh=sc.xh and sc.kch=course.kch5、显示所有学生的学号、姓名、课程名和成绩(包括未选课的学生)。
SELECT student.xh,xm,kcm,cj FROM student left outer join sc on student.xh=sc.xh left join course on course.kch=sc.kch6、查询与"王一"同一个系的学生姓名SELECT xm FROM student where xi =(select xi from student where xm = '王一')7、查找姓名中第2个字是"明"的学生姓名和系。
SELECT xm ,xi FROM student where xm like'_明%'8、查询选修了全部课程的学生的学号Select xm,xh from student where not exists (select * from course where not exists (select * from sc where xh=student.xh and kch=course.kch))9、查询student表中入学成绩前两名的学生学号和姓名。
计算机四级sql试题及答案

计算机四级sql试题及答案一、选择题1.下列哪个不是SQL的数据操作语言?A. SELECTB. INSERTC. UPDATED. DELETE答案:A2.以下哪条SQL语句可以创建一个名为"students"的表,其中包含学生ID、姓名和年龄这三个字段?A. CREATE TABLE students (ID int, Name varchar, Age int)B. CREATE TABLE students (ID int, Name text, Age int)C. CREATE TABLE students (ID int, Name varchar(50), Age int)D. CREATE TABLE students (ID integer, Name varchar(255), Age int)答案:C3.下列哪个SQL函数可以统计一个表中的记录数?A. COUNT()B. AVG()C. SUM()D. MAX()答案:A4.以下哪种SQL连接方式会返回两个表中完全匹配的数据行?A. INNER JOINB. LEFT JOINC. RIGHT JOIND. FULL OUTER JOIN答案:A5.SQL语句中的LIKE子句用于A. 限制查询结果的返回行数B. 对查询结果进行排序C. 在表中插入新的记录D. 对查询结果进行模糊匹配答案:D二、填空题1.使用SQL语句创建名为"books"的表,该表包含书籍的名称(字符型)、作者(字符型)和价格(数值型)三个字段。
答案:CREATE TABLE books (name varchar, author varchar, price decimal)2.使用SQL语句查询"customers"表中采购部门("department"字段)为"IT"的客户的姓名("name"字段)。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验四SQL语言
【实验目的】
1.掌握SQL语言的使用方法
2.利用SQL语句实现相关的操作
3.能够独立写出一些较复杂的SQL语句
【实验内容】
1. 建立一个Student表,由Sno(学号)、Sname(姓名)、Ssex(性别)、Sage(年龄)、Sdept (所在系)五个属性组成。
其中学号不能为空,值是唯一的,并且姓名取值也唯一。
查询名为“创建Student”。
Create table student(sno char(6) not null unique,sname char(4) unique,ssex char(1),sage smallint,sdept char(20))
2. 建立一个SC (学生选课)表,它由学号Sno、课程号Cno,修课成绩Grade组成,其中(Sno, Cno)为主码。
),查询名为“创建SC”。
Create table sc(sno char(6),cno char(3),grade single,primary key (sno,cno))
3. 查询所有姓刘的学生的学号与姓名及其出生年份,查询名为“查找姓刘的学生”。
Selelct 学号,姓名,year(出生日期) as 出生年份from 学生表where 姓名like “刘*”
4. 查询选修了计算机基础的所有学生的学号、姓名、成绩,查询结果按分数降序排列,查询名为“选修了计算机基础的学生”。
Select 学生表.学号,学生.姓名,选课成绩表.成绩from 学生表,课程表,选课成绩表where 学生表.学号=选课成绩表.学号and 课程表.课程编号=选课成绩表.课程编号and 课程表.课程名称=”计算机基础” order by 选课成绩表.成绩
6. 查询所有年龄在20岁及20岁以下的学生姓名、年龄,查询名为“20岁及以下的学生”。
Select 姓名,年龄from 学生表where year(date())-year(出生日期)<=20
7. 查询考试成绩有不及格的学生的学号和姓名。
有多门课程不及格的学生,学号和姓名只显示一次,查询名为“不及格的学生”。
Select distinct 学生表.学号,学生表.姓名from 学生表,选课成绩表where学生表.学号=选课成绩表.学号and 选课成绩表.成绩<60
8. 查询福建或广东的学生的姓名、性别和年龄,查询名为“福建或广东的学生”。
Select 姓名,性别,年龄from 学生表where 简历like “*福建*” or简历like “*广东*”
9. 查询选修了“计算机基础”课程的学生人数,查询名为“选修计算机基础的学生”。
Select count(选课成绩表.*) as “选修计算机基础的人数” from 课程表,选课成绩表where
课程表.课程编号=选课成绩表.课程编号and 课程表.课程名称=”计算机基础”
10. 创建一个“雇员”表,字段包括雇员号(主键)、姓名(必填字段)、性别、出生日期、部门、备注字段。
Create table 雇员(雇员号smallint primary key,姓名char(4) not null,性别char(1),出生日期date,部门char(20),备注MEMO)
11. 在“雇员”表中增加一个字段,字段名为“职务”,数据类型为“文本”;将“备注”字段删除;将“雇员号”字段的数据类型改为文本型,字段大小为8。
ALTER TABLE 雇员add 职务char(10)
ALTER TABLE 雇员delete 备注
ALTER TABLE 雇员alter 雇员号char(6)
12. 将一条新记录插入到“雇员”表中。
其中雇员号为“0001”,“姓名”为“张磊”,“性别”为“男”,出生日期为1990年1月1日,“部门”为“办公室”。
Insert into 雇员(雇员号,姓名,性别,出生日期,部门) values (“0001”,”张磊”,”男”,#1990-1-1#,”办公室”)
13. 将一条新记录插入到“雇员”表中。
其中雇员号为“0002”,“姓名”为“王宏”,“性别”为“男”。
Insert into 雇员(雇员号,姓名,性别) values (“0001”,”张磊”,”男”)
14. 将“雇员”表张磊的出生日期改为1980年1月11日。
update 雇员set 出生日期=#1980-1-11#
15. 将“雇员”表中雇员号为“0002”的记录删除。
Delete from 雇员where 雇员号=”0002”
16. 删除已建立的“雇员”表。
Drop table 雇员
17. 查找并显示“教师”表中的所有字段。
Select * from 教师表
18. 查找1992年参加工作的男教师,并显示“姓名”、“性别”、“学历”、“职称”、“系别”和“联系电话”。
Select 姓名,性别,学历,职称,系别,联系电话from 教师表where 性别=”男”and year(工作时间)=1992
19. 计算每名学生的平均成绩,并按平均成绩降序显示。
Select 学生表.姓名,avg(选课成绩表.成绩) as 平均成绩from 学生表,课程表,选课成绩表where学生表.学生编号= 选课成绩表.学生编号and选课成绩表.课程编号=课程表. 课程编号order by avg(选课成绩表.成绩)
20. 查找学生的选课成绩,并显示“学生编号”、“姓名”、“课程名称”和“成绩”。
Select 学生表.学生编号,学生表.姓名,课程表.课程名称,选课成绩.成绩from 学生表,课程表,选课成绩表where 学生表.学号=选课成绩表.学号and 课程表.课程编号=选课成绩表.课程编号
21. 显示“90分以上学生情况”表中所有记录和“学生成绩查询”中80分以下的记录,显示内容为“学生编号”、“姓名”、“成绩”3个字段。
Select * from 90分以上学生情况union Select 学生编号,姓名,成绩from 学生成绩查询where 成绩<80
22.查询并显示“学生”表中高于平均年龄的学生记录。
Select * from 学生表where 年龄>(select avg(年龄) from 学生表)。