数据库试验答案
数据库实验题目及答案

数据库实验
一、题目
药品(编号,名称,价格,厂商)
处方(药品编号,数量,医生编号)
医生(编号,姓名,科室,职称)
根据上面基本表的信息完成下列查询。
1 列出医生“张力”开的所有药品名称。
2 列出比“北方制药”所有药品都贵的药品信息。
3 列出内科所有处方的医生姓名、药品名称、金额
二、答案
题目一
连接查询
select 名称
from Yao ,Chu,Dr
where Yao.编号=Chu.药品编号and Chu.医生编号=Dr.编号and 姓名='张力'
嵌套查询
select 名称
from Yao
where 编号in(select 药品编号
from Chu
where 医生编号in(select 编号
from Dr
where 姓名= '李丽'))
题目二
select *
from Yao
where 价格>all(select 价格from Yao where 厂商='北方制药')
题目三
select 姓名,名称,价格
from Yao ,Chu,Dr
where Yao.编号=Chu.药品编号and Chu.医生编号=Dr.编号and 科室='内科'。
数据库实验6 数据完整性(答案)

实验6 数据完整性学号:18103317专业:电子信息工程一、实验内容和步骤1.为studentsdb数据库创建一个规则,限制所输入的数据为7位0~9的数字。
(1)复制学生表命名为stu_phone,在stu_phone表中插入一列,列名为“电话号码”。
完成以下代码实现该操作。
SELECT * INTO stu_phone FROM 学生表ALTER TABLE stu_phone ADD CHAR(7)NULLstu_phone表结构如图1-10所示。
图1-10 stu_phone表结构(2)创建一个规则phone_rule,限制所输入的数据为7位0~9的数字。
Create rule phone_ruleAs @value like '[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'(3)使用系统存储过程sp_hndrule将phone_rule规则绑定到stu_phone表的“电话号码”列上。
sp_bindrule phone_rule, 'stu_phone.电话号码'(4)插入操作输入以下数据:学号姓名电话号码0009 王国强1234yyy是否可以成果插入?如果出现错误,请列出错误信息,为什么会产生该出错信息?如果要实现插入操作,应修改INSERT INTO语句中的哪个值?phone_rule规则能否对其他操作(如DELETE)进行规则检查?消息213,级别16,状态1,第1 行插入错误: 列名或所提供值的数目与表定义不匹配。
2.创建一个规则stusex_rule,将其绑定到stu_phone表的“性别”列上,保证输入的性别值只能是“男”或“女”。
CREATE RULE stusex_ruleAS @性别in ('男','女')3.使用系统存储过程sp_help查询stusex_rule规则列表,使用sp_helptext 查询stusex_rule规则的文本,使用sp_rename将stusex_rule规则更名为stu_s_rule。
数据库实验答案(樊辰自制,仅供参考)

create database StudentCoursegouse studentcoursego--在student数据库中,创建三张表create table students(Sno char(7) Primary Key,Sname varchar(8) NOT NULL,Ssex char(2),Sbirthday datetime,Sdept char(10),Smemo char(30))gocreate table courses(Cno char(4),Cname varchar(12),CpreCno char(4),Ccredit tinyint,constraint PK_course primary key(cno))gocreate table sc(Sno char(7) Foreign key references students(sno),Cno char(4) Foreign key references courses(cno),grade tinyint,primary key(sno,cno))go--分别向三张表中添加数据库insert into students values('0602001','钟振华','男','1987-05-01','计算机','优秀毕业生') insert into students values('0602002','吴家硕','女','1987-03-24','计算机','爱好:音乐') insert into students values('0602003','吴春斌','男','1988-07-01','计算机',NULL) insert into students values('0701001','王腾飞','男','1988-05-04','机电','爱好:音乐') insert into students values('0701002','林世伟','女','1987-04-03','机电','爱好:体育') insert into students values('0701003','李乐仪','女','1986-03-03','机电',null)insert into students values('0703001','李奇','男','1988-09-17','工商管理',null)goinsert courses values('c1','数据结构',null,4)insert courses values('c2','数据库原理','c1',4)insert courses values('c3','大型数据库','c2',3)insert courses values('c4','高尔夫',null,1)goinsert sc values('0602001','c1',61)insert sc values('0602001','c2',72)insert sc values('0602001','c3',88)insert sc values('0602002','c1',null)insert sc values('0602002','c2',61)insert sc values('0701001','c1',50)insert sc values('0701001','c2',null)insert sc values('0701002','c3',78)insert sc values('0701003','c1',52)insert sc values('0701003','c3',87)go--查询表中数据select * from studentsgo--删除表中数据delete scgo--删除表drop table studentsgo--3①查询计算机系全体学生的信息select *from Students--3②查询姓“李”的学生的学号和姓名。
数据库实验多表查询参考答案

from OrderMasterwhere orderSum=(select max(orderSum)from OrderMaster)(8)在订单主表中查询订单金额大于“E2005002业务员在2008-1-9这天所接的任一张订单的金额”的所有订单信息。
SELECT*FROM OrderMasterWHERE orderSum>any(SELECT orderSumFROM OrderMasterWHERE salerNo='E2005002'AND orderDate='20080109')(9)查询单价高于400元的商品编号、商品名称、订货数量和订货单价。
SELECT a.productNo,productName,quantity,priceFROM Product a, OrderDetail bWHERE a.productNo=b.productNo AND price>400ORDER BY productName(10)分别使用左外连接、右外连接、完整外部连接查询单价高于400元的商品编号、商品名称、订货数量和订货单价,并分析比较检索的结果。
左外连接命令:SELECT a.productNo,productName,quantity,priceFROM Product a LEFT OUTER JOIN OrderDetail bON a.productNo=b.productNoWHERE price>400Select a.productNo , a.productName , b.quantity,b.priceFrom OrderDetail As b left JOIN Product As aON(a.productNo=b.productNo)and price>400•这两个左外连接,第一个是先去掉单价小于等于400的商品,然后执行左外连接,该查询的结果表明商品表中所有单价高于400的商品全部被订购了第二个左外连接是将那些单价小于等于400的商品用空值替代右外连接命令:SELECT a.productNo,productName,quantity,priceFROM Product a RIGHT OUTER JOIN OrderDetail bON a.productNo=b.productNoWHERE price>400Select a.productNo , a.productName , b.quantity,b.priceFrom OrderDetail As b RIGHT JOIN Product As aON(a.productNo=b.productNo)and price>400全连接命令:SELECT a.productNo,productName,quantity,priceFROM Product a FULL OUTER JOIN OrderDetail bON a.productNo=b.productNoWHERE price>400Select a.productNo , a.productName , b.quantity,b.price From OrderDetail As b full JOIN Product As a ON(a.productNo=b.productNo)and price>400右外连接和全外连接的分析同左外连接从上述结果可知:若表a和表b做外连接,且b表是外码表,则a和b表左外连接可能会出现空值,但是右连接一定不会出现空值,全外连接与左外连接一样的结果。
数据库实验5答案

实验五:数据库综合查询一、实验目的1.掌握SELECT语句的基本语法和查询条件表示方法;2.掌握查询条件种类和表示方法;3.掌握连接查询的表示及使用;4.掌握嵌套查询的表示及使用;5.了解集合查询的表示及使用。
二、实验环境已安装SQL Server企业版的计算机(120台);具有局域网环境,有固定IP;三、实验学时2学时四、实验要求1.了解SELECT语句的基本语法格式和执行方法;2.了解连接查询的表示及使用;3.了解嵌套查询的表示及使用;4.了解集合查询的表示及使用;5.完成实验报告;五、实验内容及步骤1.利用Transact-SQL嵌套语句实现下列数据查询操作。
1) 查询选修了计算机体系结构的学生的基本信息。
select*from studentwhere Sno in(select Sno from coursewhere Cno in(select Cno from sc where Cname='计算机体系结构'))2) 查询年龄比李勇小的学生的学号和成绩。
select a.sno,grade from student a,coursewhere a.sno=course.sno and sage<(select sage from student where sname='李勇')3) 查询其他系中比系编号为‘D1’的学生中年龄最小者要大的学生的信息。
select*from student where dnum<>'D1'AND SAGE>(select min(sage)from student where dnum='D1')4) 查询其他系中比系编号为‘D3’的学生年龄都大的学生的姓名。
select*from student where dnum<>'D3'AND SAGE>all(selectsage from student where dnum='D3')5) 查询‘C1’课程的成绩高于70的学生姓名。
数据库实验报告及答案

实验任务书(实验一、实验二)课程名称:数据库原理与技术实验报告要求:1.列出所有的SQL语句和源代码;2.程序要求有适当的注释;3.对数据完整性约束实施要求给出相应的测试用例。
4.实验报告提交电子档。
实验内容:一:创建表、更新表和实施数据完整性1.运行给定的SQL Script,建立数据库GlobalToyz。
2.了解表的结构,建立所有表的关系图。
3.利用系统定义的存储过程sp_helpdb查看数据库的相关信息,例如所有者、大小、创建日期等。
4.查看所有表中出现的约束(包括Primary key, Foreign key, check constraint, default, unique)5.把价格在$20以上的所有玩具的信息拷贝到称为PremiumToys的新表中。
SELECT*INTO PremiumToysFROM ToysWHERE Toys.mToyRate>20;6.对表Toys实施下面数据完整性规则:(1)玩具的现有数量应在0到200之间;(2)玩具适宜的最低年龄缺省为1。
ALTER TABLE ToysADD CONSTRAINT C1CHECK (siToyQoh BETWEEN 0 AND 200);ALTER TABLE ToysADD CONSTRAINT C2default(1)for siLowerAge;7.给id为‘000001’玩具的价格增加$1。
update Toys set mToyRate=mToyRate+1 where cToyId='000001';8. 列出表PickofMonth中的所有记录,并显示中文列标题。
SELECT cToyId[玩具编号],siMonth[生产月份],iYear[生产年份],iTotalSold [销售总量]FROM PickofMonth;二:查询数据库1.显示属于California和Illinoi州的顾客的名、姓和emailID。
数据库技术实验报告的答案

数据库技术实验报告的答案实验目的:本次实验旨在加深对数据库管理系统(DBMS)的理解,掌握数据库设计、实现和查询的基本技能,并通过实际操作来熟悉SQL语言的运用。
实验环境:1. 操作系统:Windows 102. 数据库管理系统:MySQL 8.03. 开发工具:Visual Studio Code实验内容:1. 数据库的创建与设计2. 数据表的创建与数据类型选择3. 数据的插入、更新与删除4. SQL查询语句的编写与执行5. 数据库的备份与恢复实验步骤与结果:1. 数据库的创建与设计:- 使用MySQL命令行工具创建名为“StudentsDB”的数据库。
- 设计了三个表:Students(学生信息),Courses(课程信息),Enrollments(选课信息)。
2. 数据表的创建与数据类型选择:- 为Students表创建字段:StudentID(INT,主键),Name (VARCHAR(50)),Age(INT),Gender(CHAR(1))。
- 为Courses表创建字段:CourseID(INT,主键),CourseName (VARCHAR(100)),Credits(INT)。
- 为Enrollments表创建字段:EnrollmentID(INT,主键),StudentID(INT),CourseID(INT),Grade(CHAR(2)),并设置StudentID和CourseID为外键。
3. 数据的插入、更新与删除:- 向Students表插入了10条学生记录。
- 向Courses表插入了5门课程记录。
- 通过Enrollments表记录了学生的选课情况,包括成绩。
- 使用UPDATE语句更新了学生的选课成绩。
- 使用DELETE语句删除了某些学生的选课记录。
4. SQL查询语句的编写与执行:- 编写了多条SELECT语句,查询了学生信息、课程信息以及学生的选课情况。
- 使用了JOIN操作查询了学生与其选修课程的关联信息。
数据库上机实验题目和答案

数据库上机实验题目和答案试用SQL的查询语句表达下列查询:1.检索王丽同学所学课程的课程号和课程名。
select Cno ,Cname from c where Cno in(select cno from sc where sno in (select sno from s where sname='王丽' ))2.检索年龄大于23岁的男学生的学号和姓名。
select sno,sname from swhere sex='男' and age>233.检索‘c01’课程中一门课程的女学生姓名select sname from swhere sex='女' and sno in(select sno from sc where cno='c01')4.检索s01同学不学的课程的课程号。
select cno from cwhere cno not in (select cno from sc where sno ='s01')5.检索至少选修两门课程的学生学号。
select sc.sno from s,scwhere s.sno=sc.snogroup by sc.snohaving count(/doc/1411529677.html,o)>=26.每个学生选修的课程门数。
解法一:select so.sno sno,/doc/1411529677.html,ount,s.sname from(select sc.sno sno,count(sc.sno) ccountfrom sc,swhere s.sno=sc.snogroup by sc.sno ) so,swhere s.sno=so.sno解法二:select sc.sno sno,s.sname,count(sc.sno) ccountfrom sc,swhere s.sno=sc.snogroup by sc.sno,sname7.求选修C4课程的学生的平均分。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
计算机与信息学院
数据库实验报告
专业班级
学生姓名及学号
课程教学班号
任课教师
实验指导教师
实验地点
2012 ~2013 学年第二学期
实验1 使用向导创建和删除数据库
一、实验目的
1.熟悉SQL Server 中SQL Server Management Studio的环境
2.了解SQL Server 数据库的逻辑结构和物理结构
3.掌握使用向导创建和删除数据库的方法
二、实验要求
1.熟练使用SSMS进行数据库的创建和删除操作。
2.完成实验报告。
三、实验内容
设有一学籍管理系统,其数据库名为“EDUC”。
初始大小为10MB,最大为50MB,数据库自动增长,增长方式是按5%比例增长;
日志文件初始为2MB,最大可增长到5MB,按1MB增长。
数据库的逻辑文件名为“student_data”, 物理文件名为“student_data.mdf,存放路径为“E:\sql_data”。
日志文件的逻辑文件名为“student_log”, 物理文件名为“student_log.ldf”,存放路径为“E:\sql_data”。
四、实验步骤
1.使用SQL Server Management Studio(简称SSMS)创建数据库。
(1)启动SSMS
在开始菜单中:所有程序-SQL Server 2005 -SQL Server Management Studio单击“连接”按钮,便可以进入【SQL Server Management Studio】窗口。
如果身份验证选择的是“混合模式”,则要输入sa的密码。
(2)建立数据库
在“对象资源管理器”窗口,建立上述数据库EDUC。
在数据库节点上右击选择新建。
同时建立一个同样属性的数据库EDUC1。
2. 使用向导删除上面建立的数据库。
用SSMS删除建立的数据库EDUC。
五、实验总结
经过本次试验,对于SQL SERVER有了一个初步的认识,也对于在sql server上创建数据库有了一定的了解。
实验2 使用SQL语句创建和删除数据库
一、实验目的
1. 了解SQL Server 2005数据库的逻辑结构和物理结构。
2. 掌握使用SQL 语句创建和删除数据库。
二、实验要求
1. 熟练使用查询分析器进行数据库的创建和删除操作。
2. 完成实验报告。
三、实验内容
用SQL语句去创建和删除数据库。
四、实验步骤
1.创建数据库userdb1。
2.根据步骤1的sql语句,写出创建实验1中数据库EDUC的sql语句,并建立数据库EDUC. create database EDUC
on
(name=EDUC_data,--数据文件的逻辑名称,注意不能与日志逻辑同名
filename='E:\sql_data\student_data.mdf' ,--物理名称,注意路径必须存在
size=10,--数据初始长度为M
maxsize=50,--最大长度为M
filegrowth=5%)--数据文件每次增长M
log on
( name=EDUC_log,
filename='E:\sql_data\student_log.ldf ' ,
size=2 ,。