收藏 分销(赏)

SQL实验及部分答案.doc

上传人:xrp****65 文档编号:7221794 上传时间:2024-12-28 格式:DOC 页数:24 大小:962KB 下载积分:10 金币
下载 相关 举报
SQL实验及部分答案.doc_第1页
第1页 / 共24页
SQL实验及部分答案.doc_第2页
第2页 / 共24页


点击查看更多>>
资源描述
实验一 使用SQL语句创建和删除数据库 一. 实验目的: 1、 了解SQL Server 2005数据库的逻辑结构和物理结构。 2、 掌握使用SQL 语句创建和删除数据库。 二. 实验准备 1. 明确能够创建数据库的用户必须是系统管理员,或是被授权使用CREATE DATABASE语句的用户。 2. 了解用SQL语句创建和删除数据库的基本语法。 三. 实验要求 3、 熟练使用查询分析器进行数据库的创建和删除操作 4、 完成用sql语句建立和删除数据库的实验报告 四. 实验内容 1.以下是创建数据库userdb1的SQL语句, 以下是创建数据库userdb1的SQL语句, CREATE DATABASE userdb1 --创建名为userdb1的数据库 on ( NAME='userdb2', --数据文件的逻辑名称为userdb2 FILENAME= 'd:\test\userdb1.mdf', ----物理路径为d:\test SIZE=5mb, ----数据初始长度为5M MAXSIZE=10mb, --最大长度为10M FILEGROWTH=1mb --数据文件每次增长1M ) 运行上诉语句建立数据库userdb1. 2.用SQL语句删除步骤一建立的数据库userdb1。 drop database userdb1 --删除数据库userdb1 实验二 分别用向导和SQL语句创建和删除表 一.用SQL语句创建表 在SQL Server 2005 的查询分析器中,用sql语句创建student表。 表2.1 student表(学生信息表) 字段名称 类 型 宽 度 允许空值 主 键 说 明 sno char 8 NOT NULL 是 学生学号 sname char 8 NOT NULL 学生姓名 sex char 2 NULL 学生性别 native char 20 NULL 籍贯 birthday smalldate 4 NULL 学生出生日期 dno char 6 NULL 学生所在院系 spno char 8 NULL 专业代码(外键) classno char 4 NULL 班级号 entime smalldate 4 NULL 学生入校时间 home varchar 40 NULL 学生家庭住址 tel varchar 40 NULL 学生联系电话 CREATE TABLE student ( sno char(8) not null primary key, --学号(主键) sname char(8) not null,--姓名 sex char(2) null,--性别 native char(20) null,--籍贯 birthday datetime null,--出生日期 dno char(6) null,--所在院系 spno char(8) null,--专业代码 classno char(4) null,--班级号 entime datetime null,--入校时间 home varchar(40) null,--家庭住址 tel varchar(40) null,--联系电话 ) 表2.2 course表(课程信息表) 字段名称 类 型 宽 度 允许空值 主 键 说 明 cno char 10 NOT NULL 是 课程编号 spno char 8 NULL 专业代码(外键) cname char 20 NOT NULL 课程名称 ctno tinyint 1 NULL 课程类型编号(外键) experiment tinyint 1 NULL 实验时数 lecture tinyint 1 NULL 授课学时 semester tinyint 1 NULL 开课学期 credit tinyint 1 NULL 课程学分 CREATE TABLE course ( cno char(10) not null primary key, spno char(8) null, cname char(20) not null, ctno tinyint null, experiment tinyint null, lecture tinyint null, semester tinyint null, credit tinyint null ) 实验三 修改数据库基本表的定义 一. 实验目的 1.了解表的结构特点。 3.学会使用SQL语句修改表的定义。 二. 实验准备 1. 了解常用的修改表定义语句。 三. 实验要求 1. 完成在已经创建成功的表上修改表定义的操作 四. 实验内容 1. 修改列属性 (1) 用SQL语句将Student表中的属性sno char(8)改成varchar(20)类型。 alter table student alter column sno varchar(20) 2. 添加列 (1) 用SQL语句在Course表中添加一列year ,类型为varchar(4),默认置为空。 alter table course add year varchar(20) null (2) 用SQL语句在year字段添加约束,year 的属性值在2004-2008之间。 alter table course add constraint year_constraint check(year>=2004 and year<=2008) 3. 删除列 (1)用SQL语句将Course表中的year字段删除。 alter table course drop constraint year_constraint alter table course drop column year 实验四 创建和删除索引 一. 实验目的 1. 了解索引的类型和应用。 2. 学会用SQL语句对表创建和删除索引 二. 实验准备 2. 了解创建和删除索引的方法。 三. 实验要求 1. 了解索引类型并比较各类索引的不同之处 2. 完成索引的创建和删除,并提交实验报告。 四. 实验内容 1. 分别建立以下索引(如果不能成功建立,请分析原因) (1) 在student表的sname列上建立普通降序索引。 CREATE INDEX sname ON Student(Sname deSC) (2) 在course表的cname列上建立唯一索引。 CREATE unique INDEX cname ON course(cname) (3) 在student_course表的sno列上建立聚集索引。 create CLUSTERED INDEX student_sno on student(sno) 无法对表'student' 创建多个聚集索引。在创建新聚集索引前应该删除已有的聚集索引'PK__student'。 2. 删除索引 将student_course表的sno列上的聚集索引删掉。 alter table student drop constraint PK_student 实验五 SELECT语句 一. 实验目的 1.观察查询结果, 体会SELECT语句实际应用; 3. 熟练掌握简单表的数据查询、数据排序和数据连接查询的操作方法。 二. 实验要求 1.完成简单查询和连接查询操作,并验收实验结果提交实验报告 三. 实验内容 所有的查询全部用Transact-SQL语句实现 1. 简单查询操作 首先通过insert语句向student和course表插入5条数据,sql语句及代码如下: insert into student values('20131701110','张福新','女','山东','19901211','计算机','17','2','2013','山东德州','15771384655') insert into student values('20131702111','杨文婷','女','山西','19880309','计算机','17','2','2013','山西太原','15771384656') insert into student values('20131703111','张琦','女','山西','19890316','计算机','17','2','2013','山西太原','15771381128') insert into student values('20130802044','冯艺','女','山东','19900809','经济','08','1','2013','山东德州','15771383418') insert into student values('201308702040','王仲','男','山东','19930623','工商','05','1','2014','山东德州','15771381378') insert into course values('1','001','数据库','001','9','18','1','2') insert into course values('2','001','网络工程','002','9','18','1','2') insert into course values('3','001','信息系统','003','9','18','1','2') insert into course values('4','001','ERP应用','004','9','18','1','2') insert into course values('5','001','移动商务','005','9','18','1','2') 对数据库实现以下查询: ① 计算机系的学生学号和姓名; select sno,sname from student where dno='计算机' ② 选修了课程的学生学号; ALTER TABLE student ADD CONSTRAINT spno_cons FOREIGN KEY (spno) REFERENCES course ON DELETE SET NULL ③ 选修某一课程的学生学号和成绩,并要求对查询结果按成绩的降序排列,如果成绩相同则按学号的升序排列; ④ 求选修某一课程且成绩在80-90 之间的学生学号和成绩,并将成绩乘以系数0.75 输出; ⑤ 求某两个系的姓某姓的学生的信息; ⑥ 求缺少了成绩的学生的学号和课程号。 ⑦ 将2000以后的成绩大于90分的学生成绩存入永久成绩表;将2000年以前的成绩存入临时成绩表中。 2. 连接查询操作 对数据库实现以下查询: ① 查询每个学生的情况以及他(她)所选修的课程; ② 求学生的学号、姓名、选修的课程名及成绩; ② 查询每一门课的间接先行课。 实验六 子查询 一. 实验目的 1. 掌握子查询的表示。 2. 进一步掌握SQL Server 查询分析器的使用方法,加深对SQL 语言的嵌套查询语句的理解 二. 实验准备 1. 掌握SQL语句的基本语法,并熟悉查询分析器的工作环境。 2. 完成了实验四,创建了数据库及各个基本表。 3. 了解子查询的表示方法,熟悉IN 比较符、ANY、EXISTS操作符的用法。 三. 实验内容 1.建立“工程-零件”数据库及如下4个表,并输入实验数据,用SQL语句实现如下三个查询: 1) 供应项目j4红色零件的供应商号及名称 2) 没有上海供应商生成的零件的项目号 3)至少使用了供应商S5所供应全部零件的项目号。 表结构如下: 供应商(S): 列名 类型 长度 是否可为空 供应商代码 Char 5 姓名 Char 50 所在城市 Char 20 联系电话 Char 20 工程(J): 列名 类型 长度 是否可为空 工程代码 Char 5 工程名 Char 50 负责人 Char 10 预算 Char 8 零件(P): 列名 类型 长度 是否可为空 零件代码 Char 5 零件名 Char 50 规格 Char 10 产地 Char 20 颜色 Char 10 供应零件(SPJ): 列名 类型 长度 是否可为空 供应商代码 Char 5 工程代码 Char 5 零件代码 Char 5 数量 Int 4 要求: ①供应商表:供应商代码为主码 ②工程表:工程代码为主码 ③零件表:零件代码为主码 ④供应零件表:供应商代码、工程代码、零件代码为联合主码; 供应商代码为外码,参照表、列是供应商表的供应商代码列; 工程代码为外码,参照表、列是工程表的工程代码列; 零件代码为外码,参照表、列是零件表的零件代码列 实验数据如下: 供应商: 供应商代码 姓名 所在城市 联系电话 S1 北京供应商 北京 0108888888 S2 天津供应商 天津 0228888888 S3 重庆供应商 重庆 0238888888 S4 上海供应商1 上海 0218888888 S5 广州供应商 广州 0208888888 S6 上海供应商2 上海 0216666666 工程: 工程代码 工程名 负责人 预算 J1 工程1 丁一 200000 J2 工程2 赵二 60000 J3 工程3 张三 70000 J4 工程4 李四 80000 J5 工程5 王五 150000 零件: 零件代码 零件名 规格 产地 颜色 P1 螺丝 中 济南 红色 P2 主板 集成 深圳 绿色 P3 显卡 独立 香港 蓝色 P4 声卡 集成 天津 红色 P5 网卡 100M 上海 黑色 P6 鼠标 无线 上海 黑色 供应零件: 供应商代码 工程代码 零件代码 数量 S1 J2 P4 50 S1 J3 P5 100 S2 J2 P6 500 S4 J1 P3 150 S4 J5 P1 200 S5 J4 P6 100 S6 J4 P2 90 create table 供应商 ( 供应商代码char(5), 姓名char(50), 所在城市varchar(20), 联系电话char(20), ) create table 工程 ( 工程代码char(5), 工程名char(50), 负责人varchar(10), 预算char(8), ) create table 零件 ( 零件代码char(5), 零件名char(50), 规格varchar(10), 产地char(20), 颜色char(10), ) create table 供应零件 ( 供应商代码char(5), 工程代码char(5), 零件代码char(5), 数量int, ) alter table 供应零件 add constraint S foreign key (供应商代码) references 供应商(供应商代码) alter table 供应零件 add constraint J foreign key (工程代码) references 工程(工程代码) alter table 供应零件 add constraint P foreign key (零件代码) references 零件(零件代码) 1、use 工程零件 select 供应商代码,姓名 from 供应商 where 供应商代码in ( select 供应商代码 from 供应零件 where 零件代码IN (SELECT 零件代码FROM 零件 WHERE 颜色='黑色') and 工程代码IN (SELECT 工程代码FROM 工程WHERE 工程代码='J4') ) 2、select 工程代码from 供应零件 where 供应商代码in( select 供应商代码from 供应商where 姓名 not like '上海%' ) 3、select 工程代码from 供应零件 where 供应商代码='S5' 实验七 使用子句的SELECT语句 一. 实验目的 1. 熟练掌握数据查询中的分组、统计、计算和组合的操作方法。 2. 进一步掌握SQL Server 查询分析器的使用,加深对SQL 语言的嵌套查询语句的理解。 二. 实验准备 1. 了解SELECT语句的GROUP BY和ORDER BY子句的作用。 2. 了解统计函数和分组统计函数的使用方法。 3. 熟悉查询分析器的运行环境。 三. 实验内容 所有查询都全部用SQL语句实现 1. 建立“图书_读者”数据库及如下3个表,并输入实验数据,用SQL语句实现如下五个查询: 1)查找这样的图书类别:要求类别中最高的图书定价不低于全部按类别分组的图书的平均定价的2 倍。 2)求机械工业出版社出版的各类图书的平均定价,分别用GROUP BY 和GROUP BY ALL 表示。 3)列出计算机类图书的书号、名称及价格,最后求出册数和总价格。 4)列出计算机类图书的书号、名称及价格,并求出各出版社这类书的总价格,最后求出全部册书和总价格。 5)查询计算机类和机械工业出版社出版的图书。 表结构如下: 图书: 列名 类型 长度 是否可为空 书号 char 10 类别 char 12 是 出版社 char 50 作者 char 20 是 书名 char 50 定价 money 8 是 读者: 列名 类型 长度 是否可为空 编号 char 10 姓名 char 8 单位 char 50 是 性别 char 2 是 电话 char 15 是 借阅: 列名 类型 长度 是否可为空 串号 char 10 书号 char 10 读者编号 char 10 借阅日期 datetime 8 要求: ①图书表:书号为主码 ②读者表:编号为主码; 性别只能是“男”或“女”的CHECK 约束 ③借阅表:串号为主码; 书号为外码,参照表、列是图书表的书号列; 读者编号为外码,参照表、列是读者表的编号列; 书号和读者编号的联合UNIQUE 约束 实验数据: 图书: 书号 类别 出版社 作者 书名 定价 1001 计算机 机械工业出版社 王民 数据结构 80 1002 计算机 机械工业出版社 张建平 计算机应用 20 1003 计算机 电子工业出版社 王敏 数据库技术 15 1004 计算机 电子工业出版社 谭浩强 C 语言 25 1005 英语 中国人民大学出版社 张锦芯 应用文写作 25 1006 管理 高等教育出版社 Robison 管理学 15 1007 管理 机械工业出版社 Fayol 工业管理 70 1008 数学 机械工业出版社 李平 线性代数 50 1009 管理 机械工业出版社 Durark 公司的概念 14 1010 数学 机械工业出版社 徐新国 统计学 15 读者: 编号 姓名 单位 性别 电话 1001 丁一 数学院 男 81234567 1002 赵二 经济学院 男 82234567 1003 张三 管理学院 女 83234567 1004 李四 文学院 男 84234567 1005 王五 历史文化学院 女 85234567 1006 孙六 物理学院 男 86234567 1007 周七 生命科学院 女 87234567 1008 徐八 化学院 男 88234567 1009 宋九 信息学院 女 89234567 1010 刘十 计算机学院 女 80234567 借阅: 串号 书号 读者编号 借阅日期 01 1001 1003 2000-1-1 02 1002 1005 2002-3-5 03 1003 1008 1998-6-18 04 1004 1003 1997-12-8 05 1005 1010 2001-5-4 06 1006 1001 2005-7-25 07 1007 1010 997-11-3 08 1008 1009 2004-2-1 09 1009 1004 1996-9-1 10 1010 1008 2000-6-4 实验八 创建视图 一. 实验目的 1.掌握创建视图的SQL语句的用法。 2.掌握查看视图的系统存储过程的用法。 二. 实验准备 1.了解创建视图方法。 2.了解修改视图的SQL语句的语法格式。 3.了解视图更名的系统存储过程的用法。 4.了解删除视图的SQL语句的用法。 三. 实验要求 1. 用不同的方法创建视图。 2. 提交实验报告,并验收实验结果。 四. 实验内容 1. 创建视图 (1) 使用企业管理器创建视图 ① 以“student”表为基础,建立一个名为“V_计算机系学生”的视图。在使用该视图时,将显示“student”表中的所有字段. (2) 使用SQL语句创建视图 ① 在查询分析器中建立一个每个学生的学号、姓名、选修的课名及成绩的视图S_C_GRADE; ②建立一个所有计算机系学生的学号、选修课程号以及平均成绩的视图COMPUTE_AVG_GRADE; 2. 修改视图 (1) 使用企业管理器修改视图 在企业管理器中将视图COMPUTE_AVG_GRADE中改成建立在数学系的学生学号、选修课程号以及平均成绩的视图。 (2) 使用SQL语句修改视图 ① 在查询分析器中使用更改视图的命令将上面建立的视图“V_计算机系学生”更名为“V_计算机系男生”。 3. 删除视图 (1) 使用企业管理器删除视图 用企业管理器删除视图“V_计算机系学生” (2) 使用SQL语句删除视图 用SQL语句删除视图COMPUTE_AVG_GRADE;
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 百科休闲 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服