sql数据库系统原理上机实验(综合版)

合集下载

《数据库原理》上机实验3

《数据库原理》上机实验3

《数据库原理》上机实验三实验名称:表连接和SELECT的嵌套使用一、实验目的1.理解连接语句的操作和基本使用方法,掌握内连接、外连接、自身连接的概念和使用。

2. 掌握SELECT语句的嵌套使用,实现表的复杂查询,进一步理解SELECT语句的高级使用方法。

二、实验内容与步骤连接查询1 不同表之间的连接查询例3.37查询每个学生及其选修课程的情况。

本查询实际上是涉及Students与Reports两个表的连接操作。

这两个表之间的联系是通过公共属性Sno实现的,因此,其操作命令为:SELECT Students.*, Reports.*FROM Students, ReportsWHERE Students.Sno = Reports.Sno;说明:若在以上等值连接中把目标列中重复的属性列去掉则为自然连接,其命令为SELECT Students.Sno, Sname, Ssex, Sage, Sdept, Cno, GradeFROM Students, ReportsWHERE Students.Sno= Reports.Sno;例3.38 查询每个学生的学号(Sno)、姓名(Sname)、选修的课程名(Cname)及成绩(Grade)。

本查询涉及到三个表的连接操作,完成该查询的SQL语句如下:SELECT Students.Sno, Sname, Cname, GradeFROM Students, Reports, CoursesWHERE Students.Sno= Reports.Sno AND o=o;2 自身连接例3.39查`询每一门课的间接先修课(即先修课的先修课)。

在Courses表关系中,只有每门课的直接先修课信息,而没有先修课的先修课。

要得到这个信息,必须先对一门课找到其先修课,再按此先修课的课程号,查找它的先修课程。

这就需要要将Courses表与其自身连接。

为方便连接运算,这里为Courses表取两个别名分别为A,B。

数据库上机实验报告

数据库上机实验报告

数据库上机实验报告一、实验目的。

本次数据库上机实验的主要目的是帮助学生熟悉数据库的基本操作和SQL语句的使用,通过实际操作加深对数据库管理系统的理解,提高学生的实际操作能力和解决问题的能力。

二、实验环境。

本次实验使用的数据库管理系统为MySQL,操作系统为Windows 10。

实验中使用的工具包括MySQL Workbench和命令行工具。

实验中使用的数据库为一个包含学生信息、课程信息和成绩信息的简单数据库。

三、实验内容。

1. 创建数据库和表格。

首先,我们使用SQL语句在MySQL中创建一个名为“student”的数据库,并在该数据库中创建三个表格:student、course和score。

表格的结构如下:student表格包括学生的学号、姓名和性别信息;course表格包括课程的编号、名称和学分信息;score表格包括学生的学号、课程的编号和成绩信息。

2. 插入数据。

接下来,我们使用SQL语句向创建好的表格中插入一些示例数据,以便后续的操作和查询。

我们插入了一些学生、课程和成绩的信息,以便后续的查询和操作。

3. 查询操作。

在插入数据之后,我们进行了一系列的查询操作,包括简单的SELECT查询、带有条件的查询、多表连接查询等。

通过这些查询操作,我们可以对数据库中的数据进行检索和分析,了解数据库中数据的结构和关联关系。

4. 更新操作。

除了查询操作,我们还进行了一些更新操作,包括UPDATE语句和DELETE语句。

通过这些更新操作,我们可以对数据库中的数据进行修改和删除,保持数据的一致性和准确性。

5. 索引和视图。

最后,我们学习了如何在数据库中创建索引和视图,以提高数据库的查询性能和数据的可视化展示。

四、实验总结。

通过本次数据库上机实验,我们对数据库的基本操作和SQL语句的使用有了更深入的了解和掌握。

我们学会了如何创建数据库和表格,如何插入和查询数据,以及如何进行更新操作和创建索引和视图。

这些知识和技能对我们日后的数据库管理和应用开发都将有很大的帮助。

SQL数据库实验报告

SQL数据库实验报告

湖北国土资源职业学院SQL数据库实验报告2010-2011 学年第二学期实验名称数据库应用技术班级测量0902指导老师侯文平学生姓名杨然系(部)测绘工程系实训时间2011年5月实验一注册服务器与创建数据库一、实验目的1.熟悉SQL Server 2005管理平台的环境2.掌握注册服务器的过程3.了解Microsoft SQL Server中系统数据库中的数据4.掌握创建库5.掌握创建数据表二、实验内容1. 使用联机丛书2.注册服务器3.创建数据库4.创建数据表三、仪器、设备、材料微机四、实验准备1.理论知识预习及要求①服务器组的创建;②服务器的注册;③创建数据库;④创建数据表;2.实验指导书预习及要求上机前先预习第一、二章的内容及附录A中的实验一,理解注册服务器的作用。

3.其他准备无五、实验原理或操作要点简介注意服务器要先启动,才能与服务器建立连接。

六、注意事项要养成为文件取有意义名称的习惯。

要及时保存文件,避免死机或断电造成的文件丢失。

创建过程中,出现问题时,请保存,请老师解答。

创建过程中,若出现找不到相应的问题时,要看联机丛书,逐步学会自学。

七、实验过程与指导1. 使用联机丛书(操作步骤参考教材P273实验一中的操作步骤)2.注册服务器(操作步骤参考教材P8)3.创建数据库(操作步骤参考教材P12,要求将数据库存储在最后一个磁盘,以自己姓名命名的文件夹,如F:\hwp)4.创建数据表以界面方式建立一个学生基本情况表(tblStudent),建立的要求如下表。

以界面方式建立一个班级表(tblClass),建立的要求如下表。

5.往表中插入记录①往tblStudent表中插入记录。

观察:●蔡文姬的性别在输入的时,没有输入,输入完成后,变成了什么?为什么?●曹操的性别误输入为“国”,也成功的存储了。

我们可以在保存数据前做什么工作,防止用户输入错误的发生?继续,往tblStudent表中插入记录。

输入完成,提交更新行时,会出现下面错误提示:思考:该提示的含义是什么,由什么原因引起?②往tblClass表中插入记录。

上机实训03 SQL Server 2008之数据库综合实训

上机实训03 SQL Server 2008之数据库综合实训

上机实训03 构建与管理数据库学号:_________ 姓名:______________综合实训1 学生信息管理数据库实训效果使用T-SQL语句创建数据库studentDB,并要求进行如下设置:其物理存放在D:\学号姓名文件夹中,数据文件stud_data的初始大小为5MB,文件增长量为2MB;日志文件stud_log的初始大小为2MB,文件增长量为10%。

(T-SQL语句):成果展示:维护数据库:(1)使用T-SQL语句向studentDB数据库中添加一个数据文件stud1_data,文件大小为2MB;(T-SQL语句):成果展示:(2)使用T-SQL语句向studentDB数据库中添加一个数据文件stud1_log,文件大小为1MB;成果展示:(3)使用T-SQL语句,将主数据文件stud_data的增长方式修改为10%。

(T-SQL语句):成果展示:(4)使用T-SQL语句,将日志文件stud_log的最大值修改为10MB。

(T-SQL语句):成果展示:(5)使用T-SQL语句,将删除日志文件stud1_log。

·2·成果展示:综合实训2 学生信息管理数据库学生成绩管理系统工作任务1. 创建学生成绩管理数据库-StudentDB任务描述利用T-SQL语句创建学生成绩管理系统的数据库StudentDB’,要求将数据文件student_data大小设置为5MB,增长方式为按增量2MB增长,无限制,日志文件student_log大小5MB,增长方式为自动增长,增量10%,存储路径为D:\学号姓名\下。

设计过程——用T-SQL创建数据库T-SQL语句:成果展示(截图):·3·2.创建相关的数据表任务描述利用Management Studio图形工具创建学生表,表名称及结构如下。

(1)表名:学生信息成果展示:·4·任务描述利用T-SQL语句创建课程表。

《数据库系统原理》上机实验

《数据库系统原理》上机实验

计算机网络专业《数据库系统原理》实验内容(一)实验目的本课程的实验采用MS SQL Server 。

通过上机实践,加深对课程的理解,更好地掌握数据库技术,并达到应用的目的,全面掌握所学的知识。

(二)实验要求本实验必须亲自操作,按要求认真填写实验纪录,在考实前完成。

应考者需提交实验报告后,方可参加实验践环节考实。

(三)实验大纲实验一:熟悉MS SQL Server实验要求:自行操作MS SQL Server 7.0的菜单、界面,了解各部分的功能。

写出MS SQL Server程序组下,所包括的应用程序清单。

实验纪录:写出MS SQL Server程序组下,所包括的应用程序清单。

实验二:完成数据库设计,创建数据库实验要求: 创建名Students的数据库。

学会数据库的创建方法。

实验纪录:创建名Students数据库的上机操作步骤。

实验三: 完成表的设计实验要求: ①建立导师情况表(Professor_table),表结构如下:实验要求:②建立研究生情况表(Student_table),表结构如下:实验四:熟练掌握INSERT命令的使用实验要求①:用INSERT命令,将表3的数据插入到相应的数据表中。

表3 研究生表实验要求②:用INSERT命令,将表4的数据插入到相应的数据表中。

表4 导师表实验五:熟练掌握UPDATE、DELETE等命令的使用实验要求①:用UPDATE命令修改表中的数据。

将学号为“953011”学生的导师编号改为“103”、研究方向改为“商业经济”。

实验纪录:修改数据的操作命令步骤,及用SELECT查询其结果。

实验要求②:用DELETE命令删除研究生表中93年9月1日入学的所有研究生。

实验纪录:删除数据的操作命令步骤,及用SELECT查询其结果。

实验要求③:用SELECT命令查询研究生表中,1994年8月15日入学、且导师编号为“105”;或者导师编号为“101”的研究生姓名。

实验纪录:用SELECT查询其结果的操作命令步骤。

数据库上机实验

数据库上机实验

附录C 上机实验第4章上机实验下列实验均使用SQL Server 的SSMS工具实现。

1.用图形化方法创建符合如下条件的数据库(创建数据库的方法可参见本书附录A):数据库名为:学生数据库主要数据文件的逻辑文件名为:Students_data,存放在D:\Data文件夹下(若D:盘中无此文件夹,请先建立此文件夹,然后再创建数据库。

),初始大小为:5MB,增长方式为自动增长,每次增加1MB。

日志文件的逻辑文件名字为:Students_log,也存放在D:\Data文件夹下,初始大小为:2MB,增长方式为自动增长,每次增加10%。

2.选用已建立的“学生数据库”,写出创建满足表C-1到4-4条件的表的SQL语句,并执行所写代码。

(注:“说明”部分不作为表定义内容)列名说明数据类型约束Sno学号普通编码定长字符串,长度为7主键Sname姓名普通编码定长字符串,长度为10非空Ssex性别普通编码定长字符串,长度为2取值范围:{男,女}Sage年龄微整型(tinyint)取值范围:15-45Sdept所在系普通编码不定长字符串,长度为20默认值为“计算机系”Sid身份证号普通编码定长字符串,长度为10取值不重Sdate入学日期日期默认为系统当前日期列名说明数据类型约束Cno课程号普通编码定长字符串,长度为10主键Cname课程名普通编码不定长字符串,长度为20非空Credit学时数整型取值大于0Semester学分小整型列名说明数据类型约束Sno学号普通编码定长字符串,长度为7主键,引用Student的外键Cno课程号普通编码定长字符串,长度为10主键,引用Course的外键Grade成绩小整型取值范围为0-100列名说明数据类型约束3. 写出实现如下功能的SQL语句,并执行所写代码,查看执行结果。

(1)在Teacher表中添加一个职称列,列名为:Title,类型为nchar(4)。

(2)为Teacher表中的Title列增加取值范围约束,取值范围为:{教授,副教授,讲师}。

数据库原理上机实验-代码及截图

数据库原理上机实验-代码及截图

《数据库原理》上机实验报告2017年11月一、实验目的与要求:●熟练使用SQL定义子语言、操纵子语言命令语句●掌握关系模型上的完整性约束机制●掌握一定的数据库管理技术●能完成简单的数据库应用开发二、实验内容1、实验一到实验十七(一)数据定义子语言实验(2学时)实验1:利用SQL语句创建Employee数据库代码如下:create database Employee;运行结果:实验2:利用SQL语句在Employee数据库中创建人员表person、月薪表salary 及部门表dept, 暂不定义外键约束。

要求:按表1、表达、表3中的字段说明创建表1 person表结构字段名数据类型字段长度允许空否字段说明表2 salary表结构表3 dept表结构代码如下:create table person(P_no char(6) not null primary key, P_name varchar(10) not null,Sex char(2) not null,Birthdate datetime null,Prof varchar(10) null,Deptno char(4) not null);create table salary(P_no char(6) not null primary key, Base dec(5) null,Bonus dec(5) null,Fact dec(5) null,Month int not null);create table dept(Deptno char(4) not null primary key, Dname varchar(10) not null);运行结果:(二)数据操纵子语言实验(4学时)实验3:利用SQL语句向表person、salary和dept中插入数据。

要求:按表4、表5、表6中的数据插入。

表4 表person中的数据P_no P_name Sex BirthDate Prof Deptno 000001王云男1973-4-7中级0001 000002谢志文男1975-2-14中级0001 000003李浩然男1970-8-25高级0002代码如下:insert into person (P_no,P_name,Sex,Birthdate,Prof,Deptno) values ('000001','王云','男','1973-4-7','中级','0001')insert into person (P_no,P_name,Sex,Birthdate,Prof,Deptno) values ('000002','谢志文','男','1975-2-14','中级','0001')insert into person (P_no,P_name,Sex,Birthdate,Prof,Deptno) values ('000003','李浩然','男','1970-8-25','高级','0002')insert into person (P_no,P_name,Sex,Birthdate,Prof,Deptno) values ('000004','廖小玲','女','1979-8-6','初级','0002')insert into person (P_no,P_name,Sex,Birthdate,Prof,Deptno) values ('000005','梁玉琼','女','1970-8-25','中级','0003')insert into person (P_no,P_name,Sex,Birthdate,Prof,Deptno) values ('000006','罗向东','男','1979-5-11','初级','0003')insert into person (P_no,P_name,Sex,Birthdate,Prof,Deptno) values ('000007','尚家庆','男','1963-7-14','高级','0003')运行结果:表5 表salary中的数据P_no Base Bonus Fact S_month 00000121003001 00000218003001 00000328002801 00000425002501 00000523002751 00000617501301 00000724002101代码如下:insert into salary (P_no,Base,Bonus,Fact,Month) values('000001',2100,300,2100+300,1)insert into salary (P_no,Base,Bonus,Fact,Month) values('000002',1800,300,1800+300,1)insert into salary (P_no,Base,Bonus,Fact,Month) values('000003',2800,280,2800+280,1)insert into salary (P_no,Base,Bonus,Fact,Month) values('000004',2500,250,2500+500,1)insert into salary (P_no,Base,Bonus,Fact,Month) values('000005',2300,275,2300+275,1)insert into salary (P_no,Base,Bonus,Fact,Month) values('000006',1750,130,1750+130,1)insert into salary (P_no,Base,Bonus,Fact,Month) values('000007',2400,210,2400+210,1)运行结果:表6 表dept中的数据Deptno Dname0001人事部0002财务部0003市场部代码如下:insert into dept (Deptno,Dname) values ('0001','人事部')insert into dept (Deptno,Dname) values ('0002','财务部')insert into dept (Deptno,Dname) values ('0003','市场部')运行结果:实验4:(1)利用SQL语句修改表中的数据。

数据库上机实验及指导

数据库上机实验及指导

实验环境:Microsoft SQL Server 2000或Microsoft SQL Server 2005实验目的:◆熟练使用SQL定义子语言、操纵子语言命令语句;◆掌握关系模型上的完整性约束机制;◆掌握一定的数据库系统管理技术。

实验要求:◆完成所有上机题(选做“三、数据库系统管理实验”),实验课结束时上交实验报告及相关数据文件!一、SQL数据库语言操作实验1、SQL定义子语言实验1-1 利用SQL语句创建、修改、删除数据库。

创建要求:数据库Employee中包含一个数据库文件Empdat1.mdf和一个日志文件Emplog.ldf。

其中,数据文件大小为10MB,最大为50MB,以5MB速度增长;日志文件大小为5MB,最大为25MB,以5%速度增长。

修改要求:增加第二个数据库文件Empdat2.ndf,其中,数据文件大小为5MB,最大为25MB,以2MB速度增长。

实验指导:打开Microsoft SQL Server 2000的“查询分析器”,输入以下代码:Create Database EmployeeOn Primary( Name=Empdat1,Filename=’d:\你的学号\data\Empdat1.mdf ’,Size=10MB,MaxSize=50MB,FileGrowth=5MB)( Name=Empdat2,Filename=’d:\你的学号\data\Empdat2.ndf ’,Size=5MB,MaxSize=25MB,FileGrowth=2MB)Log On( Name=Emplog,Filename=’d:\你的学号\data\Emplog.ldf ’,Size=5MB,MaxSize=25MB,FileGrowth=5%)按“Ctrl+F5”执行语句,或点击快捷图标栏的“√”图标执行之,完成数据库的创建附:增加、修改、删除数据或日志文件用以下命令:ALTER DATABASE 数据库名ADD FILE <filespec>[,…n]| MODIFY FILE <fiespec>| REMOVE FILE逻辑文件名| ADD LOG FILE<filespec>[,…n]| MODIFY NAME=新数据库名<filespec>::=( NAME=逻辑文件名[,NEWNAME=新逻辑文件名][,FILENAME=‘OS文件的路径及名字’][,SIZE=文件的初始大小][,MAXSIZE=最大的文件尺寸][,FILEGROWTH=文件大小增量])1-2 利用SQL创建人员表person、月薪表salary及部门表dept。

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

《数据库原理》实验指导书《数据库原理》上机实验上机学时:8学时一、上机性质、目的及任务:通过上机实践,配合课堂教学内容加深对数据库的基本概念和基本技术的理解,掌握数据库系统设计的基本思想和基本步骤,熟悉关系数据库的标准语言SQL,并对典型的关系数据库管理系统有较深入的了解,使学生的动手能力有较大的提高。

二、面向专业:计算机类各专业三、实验指导书:见下页四、实验内容:实验一SQL数据定义 (3)实验二SQL简单查询 (6)实验三SQL 复杂查询 (7)实验四SQL 数据更新 (8)实验一SQL数据定义一、实验目的(1)认识几种常见的数据库管理系统,熟悉它们的使用界面;(2)熟练掌握建立数据库和表,向数据库输入数据、修改数据和删除数据的操作。

(3)熟悉SQL数据定义语言(DDL)二、实验内容(1)分别在Access 和SQL SERVER2005 中建立数据库并设计各表,输入多条实际数据,并实现数据的增、删、改操作。

(2)用SQL语言进行基本表结构的定义、修改、删除,索引的建立和删除三、实验步骤:分别在ACCESS数据库管理系统和SQL SERVR 2005环境下利用图形操作界面(非SQL语句)实现以下操作:1、创建用于学生管理的数据库,数据库名为XSGL,包含学生信息,课程信息和选课信息。

数据库XSGL包含下列3 个表:(l)student:学生基本信息。

(2)course:课程信息表。

(3)sc:学生选课表。

各表的结构分别如表1、表2和表3 所示。

表1 学生信息表:student列名数据类型长度完整性约束sno 字符(文本)型8 主键sname 字符(文本)型 4 不为空ssex 字符(文本)型 1sage 整数(数值)型sdept 字符型10表2 课程信息表:course列名数据类型长度完整性约束cno 字符(文本)型 2 主键cname 字符(文本)型30credit 整数(数值)型cpno 字符(文本)型 3表3 学生选课表:sc列名数据类型长度完整性约束sno 字符(文本)型8 主属性,外键cno 字符(文本)型 2 主属性,外键grade 整数(数值)型是提示:在不使用SQL语句创建表的情况下,可通过ACCESS中的关系(菜单—工具—关系)和SQL SERVER 2005中的数据库关系图(数据库节点展开—数据库关系图)实现外键的创建。

外键字段和参照字段之间的数据类型以及长度要保持一致。

2、输入表中的记录分别在student表、course表和sc表中输入如下表中的记录:sno sname ssex sage sdept95001 李勇男20 CS95002 刘晨女19 IS95003 王敏女18 MA95004 张立男19 IS95005 刘云女18 CScno cname credit pcno1 数据库 4 52 数学 63 信息系统 3 14 操作系统 4 65 数据结构 4 76 数据处理 37 PASCAL语言 4 6sno cno grade95001 1 9295001 2 8595001 3 8895002 2 9095002 3 8095003 2 8595004 1 5895004 2 85观察输入时有无提示错误,如果有如何修改,体会参照完整性的作用,弄清楚先输入那些表中记录,为什么?3、对表中的记录进行浏览、修改、删除操作。

4、利用“分离数据库”和“附加数据库”操作对SQL Server中创建的数据库做备份和还原操作。

5、在SQL SERVER 2005中新建查询,建立到服务器的连接6、用SQL语言CREATE TABLE语句创建实验一中学生表student、课程表course和选课表sc及其相应约束,具体约束如下:表1 学生信息表:student列名数据类型长度完整性约束sno 字符(文本)型8 主键sname 字符(文本)型 4 不为空ssex 字符(文本)型 2 默认值为’男’取值为’男’或’女’sage 整数(数值)型是sdept 字符型10 否表2 课程信息表:course列名数据类型长度完整性约束cno 字符(文本)型 2 主键cname 字符(文本)型30credit 整数(数值)型cpno 字符(文本)型 3表3 学生选课表:sc列名数据类型长度完整性约束sno 字符(文本)型10 主属性,外键cno 字符(文本)型30 主属性,外键grade 整数(数值)型是取值在0-100之间7、向创建的表中输入数据,测试所创建的完整性约束是否起作用8、用SQL语言ALTER语句修改表结构;1)STUDENT表中增加一个字段入学时间scome,2)删除STUDENT表中sdept字段;3)删除创建的SC表中CNO字段和COURSE表CNO字段之间的外键约束;4)重建3)中删除的约束9、重新定义一个简单表,然后用SQL语言DROP语句删除该表结构;10、用SQL语言CREA TE INDEX语句定义表STUDENT的SNAME字段的降序唯一索引;11、用SQL语言DROP语句删除索引;实验二SQL简单查询目的:掌握简单数据查询操作。

内容:使用各种查询条件完成指定的查询操作步骤:1)创建学生表student、课程表course和选课表SC,并输入数据(注意数据的完整性。

);(可以使用实验一中已经建立的表和数据)2) 对各表中的数据进行不同条件的查询;包括的运算:投影、选择、比较运算符、逻辑运算符、字符匹配运算符、匹配列表范围、算术运算符、内部函数、排序、分组、分组函数使用(1)查询全体学生的学号和姓名(2)查询全体学生的详细记录(3)查询软件学院的学生姓名、年龄、系别(4)查询所有选修过课程的学生学号(不重复)(5)查询考试不及格的学生学号(不重复)(6)查询不是软件学院的学生性别、年龄、系别(7)查询年龄18-20岁的学生学号、姓名、系别、年龄;(8)查询姓刘的学生情况(9)查询姓刘或姓李的学生情况(10)查询姓刘且名字为两个字的学生情况(11)查询1983年以后出生的学生姓名。

(12)利用内部函数year()查找软件学院学生的出生年份(13)利用字符转换函数实现字符联接。

Select sname + ‘年龄为’+cast(sage as char(2))+’岁’From student(14)查询全体学生情况,查询结果按所在系升序排列,对同一系中的学生按年龄降序排列。

(15)查询学生总人数。

(16)查询选修了课程的学生人数。

(17)查询选修了7号课程的学生总人数和平均成绩(18)查询选修6号课程学生的最好成绩(19)查询每个系的系名及学生人数。

(20)查找每门课的选修人数及平均成绩(21)查找没有先修课的课程情况要求:1、将上述任务中完整的SQL语句调试并使之运行正确;2、写出实验报告;实验三SQL 复杂查询目的:掌握复杂数据查询操作。

内容:掌握各种连接查询、嵌套查询的使用步骤:1)实验一中的数据为基础2) 对各表中的数据进行不同条件的连接查询和嵌套查询;●查询每个学生及其选课情况;●查询每门课的间接先修课●将STUDENT,SC进行右连接●查询既选修了2号课程又选修了3号课程的学生姓名、学号;●查询和刘晨同一年龄的学生●选修了课程名为“数据库”的学生姓名和年龄●查询其他系比IS系任一学生年龄小的学生名单●查询其他系中比IS系所有学生年龄都小的学生名单●查询选修了全部课程的学生姓名●查询计算机系学生及其性别是男的学生●查询选修课程1的学生集合和选修2号课程学生集合的差集●查询李丽同学不学的课程的课程号●查询选修了3号课程的学生平均年龄●求每门课程学生的平均成绩●统计每门课程的学生选修人数(超过3人的才统计)。

要求输出课程号和选修人数,结果按人数降序排列,若人数相同,按课程号升序排列●查询学号比刘晨大,而年龄比他小的学生姓名。

●求年龄大于所有女同学年龄的男同学姓名和年龄要求:1、将上述任务中完整的SQL语句调试并使之运行正确;2、写出实验报告;实验四SQL 数据更新目的:掌握SQL的常用数据更新操作,熟练应用INSERT,UPDATE,DELETE语句。

内容:1)应用INSERT,UPDA TE,DELETE语句进行更新操作;a)插入如下学生记录(学号:95030,姓名:李莉,年龄:18)b)插入如下选课记录(95030,1)c)计算机系学生年龄改成20d)把数学系所有学生成绩改成0e)把低于总平均成绩的女同学成绩提高5分f)修改2号课程的成绩,若成绩小于75分提高5%,成绩大于75时提高4%(两个语句实现,注意顺序)g)删除95030学生信息h)删除SC表中无成绩的记录i)删除张娜的选课记录j)删除不及格的学生选课记录k)删除数学系所有学生选课记录l)删除所有未被选修的课程m)查询每一门课程成绩都大于等于80分的学生学号、姓名和性别,把值送往另一个已经存在的基本表STU(SNO,SNAME,SSEX)中n)建立一个sdeptgrade 表,包含(sdept,avggrade)字段,对每一个系,求学生的成绩,并把结果存入sdeptgrade2)熟练掌握INSERT,UPDATE,DELETE语句并能综合应用;要求:1、将上述任务中完整的SQL语句调试并使之运行正确;2、写出实验报告;附录(总版):语句清单--sql 查询实验一代码create table student1(sno char(8)primary key,sname char(4)not null,-------创建表student1ssex char(2)default'男',check(ssex in('男','女')),sage int default('是'),sdept char(10)default('否'),)create table course1(cno char(2)primary key,cname char(30),------创建表course1 credit int,cpno char(3),)create table sc1(sno char(8)foreign key references student1(sno),创建表sc1 cno char(2)foreign key references course1(cno),grade int default('是')check(grade between 0 and 100),)----------------------第题alter table student1add scome intalter table student1drop column sdeptselect namefrom sys.foreign_key_columns f join sys.objects o on f.constraint_object_id=o.object_idwhere f.parent_object_id=object_id('sc1')--------查找出约束名,然后再用drop语句删除约束alter table sc1drop constraint FK__sc1__cno__740F363E--------在括号中补充用上面语句查找出的约束名alter table sc1add constraint[pk_sc1]primary key (cno)alter table sc1add constraint[fk_sc1_course1]foreign key (cno) references course1(cno)alter table sc1drop constraint[fk_sc1_course1]create unique index student1_index on student1(sname desc) drop index student1_index on student1create table teacher(tno char(4)primary key,tname char(8)not null,title char(5),)drop table teacher--sql查询实验二的代码SELECT sno,sname--1from studentselect*------------2from studentselect sname,sage,sdept-----3where student.sdept='IS'select distinct student.sno-----4from student,scwhere sc.sno=student.snoselect distinct student.sno----5from student,scwhere sc.sno=student.sno and grade<60select ssex,sage,sdept-----------6from studentwhere sno not in(select snofrom studentwhere sdept='IS')/* 这是exists的用法select ssex,sage,sdeptfrom student as ywhere not exists(select *where Y.sdept='CS')*/select sno,sname,sage,sdept-------7from studentwhere sage between 18 and 20;select*---------------8from studentwhere sname like'刘%'select*-----------------9from studentwhere sname like'[刘李]%'select sname----------------10from studentwhere sname like'刘_ _'--中文占用两个字符,所以这里用两个_select sname-------------------11from studentwhere 2013-sage>1983-- select year(sage) 这是取单个人的出生年份的用法,调用year函数select year(getdate())-s.sage+1from student as s-------12where sdept='CS'Select sname+'年龄为'+cast(sage as char(2))+'岁'From student---------13select*from student---------------------14order by sdept,sage descselect COUNT(sno)----------------15from studentselect COUNT(distinct sno)from sc--------------16/*SELECT COUNT(*)FROM student ----------16题解法二WHERE EXISTS( SELECT * FROM SC WHERE sc.sno = student.sno )*/select COUNT(student.sno),avg(sc.grade)from student,sc------------17where student.sno=sc.sno and cno='7'select max(grade)from sc-------------------18where cno='6'select sdept,COUNT(sno)from student-------------------19group by sdeptselect COUNT(student.sno),A VG(grade)from student,sc----------20where student.sno=sc.snogroup by cno/* -----------------20第二种解法select cname,COUNT(student.sno),A VG(grade)from student,sc,coursewhere student.sno=sc.sno and o=ogroup by o,cname*/select*------为什么这里查询不到结果from course-------------21where cpno is null--sql 查询实验三代码--------1select student.*,o,sc.grade----左外连接(显性连接) from student left join sc on student.sno=sc.sno/*select student.*,o,sc.gradefrom student inner join sc ----内连接法(显性连接)on student.sno=sc.sno*//*select student.*,o,sc.grade ----------隐性连接from student,scwhere student.sno=sc.sno*/select ame,first.cpno,ofrom course first,course second----------2where first.cpno=oselect student.*,sc.*---------------3from student right join sc on student.sno=sc.snoselect student.sno,snamefrom student,sc,(select student.snofrom student,sc-----4 导出表的使用where sc.sno=student.sno and cno='2'group by student.sno)as result(sno)where student.sno=sc.sno and cno='3'group by student.sno,student.snameselect student.sno,snamefrom student,sc as x--------4法二where student.sno=x.sno and cno='2'and exists(select student.sno from student,sc as ywhere cno='3'and exists(select*from student,sc as zwhere z.sno=y.sno and z.sno=x.sno))select student.sno,snamefrom student,sc as x,sc as y------4法三where student.sno=x.sno and x.sno=y.sno and o='2'and o='3'select*from student as x,student y--------5where x.sname='刘晨'and x.sage=y.sageselect sname,sagefrom student,sc,course-----------6where student.sno=sc.sno and o=o and ame='数据库'select snamefrom studentwhere sage<any(select sagefrom student----------7where sdept='is')and sdept<>'is'select snamefrom studentwhere sage<all(select sage------8from studentwhere sdept='is')and sdept<>'is'select snamefrom student------------9where sno in(select snofrom scgroup by snohaving COUNT(*)=7)select*--------------10from studentwhere sdept='is'and ssex='男'select distinct student.sname-------------11 from student,scwhere o='1'except(select student.snamefrom student,scwhere o='2')select cnofrom sc---------------------12 where sc.sno not in(select snofrom studentwhere student.sname='李丽')select A VG(sage)--------------------------13 from student,scwhere student.sno=sc.sno and cno='3'select cno,A VG(grade)from sc-------------------14group by cnoselect cno,COUNT(sno)from sc------------------------15group by cnoorder by cno,COUNT(sno)descselect snamefrom student-------------------16where sno>(select snofrom studentwhere sname='刘晨')and sage<(select sagefrom studentwhere sname='刘晨')select x.sname----------------16法二from student x,student ywhere x.sno>y.sno and x.sage<y.sage and y.sname='刘晨'select distinct x.sname,x.sagefrom student x,student y------17where x.ssex='男'and x.sage>y.sage and y.ssex='女'-----实验四sql 的数据更新insert into student(sno,sname,sage)values('95030','李莉','18')-----1 insert into sc(sno,cno)values('95030','1')--------2update student1---------------3set sage='20'where sdept='IS'update sc1--------------------4set grade='0'where sno in(select snofrom student1where sdept='MA')update sc-----------------5set grade=grade+5where sno in(select student.snofrom student,scwhere ssex='女'group by student.sno,gradehaving grade<A VG(grade))update scset grade=grade*1.05where cno='2'and grade<75 ----------------6 update scset grade=grade*1.04where cno='2'and grade>75delete from student1-----------7where sno='95030'delete from sc1where grade is null--------------8delete from sc1where sno in(select snofrom student1-------------------9where sname='张娜')delete from sc1----------10 where grade<60delete from sc1where sno in(select snofrom student1where sdept='MA')delete from course1where cno not in(select cnofrom sc1,course1where o=o)create table stu(sno char(8),sname char(8),ssex char(4)) insert into stu(sno,sname,ssex)select sno,sname,ssexfrom studentwhere sno in(select snofrom scwhere sno not in(select snofrom scwhere grade is null)group by snohaving min(grade)>=80)create table sdeptgrade(sdept char(4),avggrade char(2)) insert into sdeptgrade(sdept,avggrade)select sdept,A VG(grade)from sc,studentgroup by sdept。

相关文档
最新文档