当前位置:文档之家› SQL语言的应用实验报告 南京邮电大学

SQL语言的应用实验报告 南京邮电大学

实验报告2013 /2014 学年第二学期实验名称SQL语言的应用专业广播电视工程学生学号11003829学生姓名____林钢_____指导教师胥备SQL语言的应用实验报告实验名称:SQL语言的应用指导教师:胥备实验类型:验证实验学时:4*2实验时间:2014年3月18日一、实验目的和要求练习使用SQL SERVER数据库产品,熟练使用查询分析器和企业管理器;掌握SQL语言中常用的语句:用DDL创建基本表;用DML插入、修改、删除数据;用QL查询数据等。

二、实验环境(实验设备)硬件:个人计算机;软件:MS SQL SERVER环境。

三、实验原理及内容1.用SQL SERVER的企业管理器创建数据库数据库名称:M11003829操作步骤:1、单击左侧的SQL Server组→右键→新建SQL Server注册→下一步→在左侧的“可用的服务器”栏选中或输入CC-PC→点击中间的添加将CC-PC添加到右侧的“添加的服务器”栏→下一步→选中“登录时使用Windows身份认证”→点击下一步→选中“在现有SQL Server组中添加SQL Server”→点击下一步→完成→关闭。

2、单击左侧的SQL Server组下面可用的已注册子组里面的数据库→右键→新建数据库→输入数据库名称M110038292.用查询分析器在上一步创建的数据库中完成以下功能1)进入查询分析器并选择操作的数据库操作步骤:1、开始→程序→MS SQL Server→查询分析器设置:确认SQL Server(s)为CC-PC选择Windows身份认证确定2、在工具栏的下拉链表种选择名为M11003829的数据库。

2)建立基本表:学生、课程和选课,写出DDL语句建立学生表、插入数据。

学生学号姓名年龄性别S1 WANG 20 MS2 LIU 19 FS3 CHEN 22 MS4 WU 19 MS5 LI 21 FCreate TABLE STUDENT(SNO VARCHAR(7) NOT NULL,SNAME VARCHAR(10)NOT NULL,AGE INT NOT NULL,SEX VARCHAR(7),Primary Key(SNO),);use M11003829;Insert Into STUDENT Values ('S1' ,'WANG', '20', 'M');Insert Into STUDENT Values ('S2', 'LIU','19',' F');Insert Into STUDENT Values ('S3', 'CHEN' ,'22', 'M');Insert Into STUDENT Values ('S4', 'WU', '19', 'M');Insert Into STUDENT Values ('S5', 'LI', '21', 'F');建立课程表、插入数据。

课程课程号课程名学时学分课程性质C2 MATHS 64 4 基础C4 PHYSICS 48 3 基础C3 C 32 2 专业基础C1 DB 48 3 专业C5 0S 32 2 专业Create TABLE course(CNO VARCHAR(7) NOT NULL,CNAME VARCHAR(7) NOT NULL,CHOUR VARCHAR(7) NOT NULL,CREDIT VARCHAR(7) NOT NULL,CTYPE VARCHAR(7) NOT NULL,Primary Key (CNO),);use M11003829;Insert Into course Values ('C2', 'MATHS', '64', '4', '基础'); Insert Into course Values ('C4','PHYSICS','48', '3', '基础'); Insert Into course Values ('C3', 'C','32','2','专业基础'); Insert Into course Values ('C1','DB','48','3','专业');Insert Into course Values ('C5', '0S','32','2','专业');建立选课表、插入数据。

选课学号课程号成绩S1 C2 89S2 C1 70S3 C2 NULLS1 C5 80S4 C3 NULLS5 C4 78S2 C4 79Create TABLE SC(SNO VARCHAR(20) NOT NULL,CNO VARCHAR(20) NOT NULL,GRADE VARCHAR(20) NOT NULL,Primary Key (CNO,SNO),Foreign Key (CNO),);use M11003829;Insert Into SC Values ('S2', 'C1', '70');Insert Into SC Values ('S3', 'C2', 'NULL'); Insert Into SC Values ('S1', 'C5' ,'80');Insert Into SC Values ('S4', 'C3','NULL');Insert Into SC Values ('S5', 'C4' ,'7');Insert Into SC Values ('S5', 'C4', '78');Insert Into SC Values ('S2', 'C4' ,'79');3)写出向数据库中插入和修改数据的DML语句1、把基础课的学分提高1学分,学时提高8学时;Update courseset score=score+1 , chour = chour+8Where cname ='基础'2、把MATH课的非空成绩提高10%;update scset grade = grade*1.1where grade is not NULL;3、当所有学生不选修PHYSICS课程时,删除相应数据;Delete from classWhere physics4、LIU同学因病退学,删除相应数据。

首先删除选课表中的相关信息,否则学生表中的信息不能删除。

delete from scwhere sno in(select sno from studentwhere sname = 'LIU');删除学生表中的信息delete from studentwhere sname = 'LIU';删除结果:4)写出检索数据的QL语句1、检索课程性质中包含“基础”的课程信息;select * from classwhere 课程性质 like '%基础';检索结果:2、检索WANG同学学习的所有课程信息;Select from scWhere sc in(select snoFrom studentWhere snam=’WANG’);3、检索不学C2课程的学生学号与姓名;Select from studentcWhere sno all(select sno From classWhere cno=’c2’);检索结果:检索得到的是空表,因为选修C2的人是LIU,而他的数据在之前的操作中被删除了。

4、查询平均成绩大于80分的学生学号、姓名和平均成绩,结果按平均成绩降序排列;select student.学号,姓名, AVG(成绩)from student,scgroup by student.学号,姓名having AVG(成绩)>80order by AVG(成绩) desc;检索结果:四、实验小结(包括问题和解决方法、心得体会、意见与建议等)1、建表很容易,主要是对表中索引的创建和对表中某一属性的设置都是基础的操作,较为简单,而对表中信息的操作,颇为复杂,还得勤加练习,以达熟能生巧的地步。

2、数据插入后自行按照主键排序,不影响插入结果。

3、自由字符变量定义长一点以防止溢出,导致错误结果。

4、对于选课表,在建立之前不能设置主键和外键,应首先删除UNIQUE KEY 约束然后插入数据,最后再建立主键和外键,否则由于表中有重复的数据将导致插入失败。

相关主题