数据库实验9答案
数据库实验内容-答案

实验内容:实验一:数据库的操作使用Management Studio和sql语句分别完成以下操作:1.创建一个名为“SM”的数据库,数据文件初始大小为3MB,最大为50MB,数据库自动增长,增长方式按10%;日志文件初始大小为2MB,数据大小不受限制,按1MB增长。
create database smon(name='smdata',filename='e:\smdata.mdf',size=3,maxsize=50,filegrowth=10%)log on(name='smlog',filename='e:\smlog.ldf',size=2,maxsize=unlimited,filegrowth=1)2.修改数据库“SM”,将数据文件名改成“sm_data”,初始大小改成5MBalter database smmodify file( name='smdata',newname='sm_data',size=5)3.分别查看数据库“SM”,该数据库中的文件和文件组。
exec sp_helpfile smexec sp_helpfilegroup sm4.删除数据库“SM”。
drop database sm实验二:创建表1. 在数据库SM中创建学生表student,课程表course,选课表scstudent(sid,sno,clno,sname,ssex,sage,sbir)说明:sid int identity(1,1) 序号sno 为主关系键,为字符类型学号clno 字符类型,班级号sname 字符类型,并不为空ssex 字符类型,check的值的范围为男女sbir 日期类型出生日期sage int;use smcreate table student( sid int identity(1,1),sno char(10) constraint pk_st primary key,clno char(10),sname varchar(20) not null,ssex char(2) constraint ck_ssex check(ssex in('男','女')),sbir datetime,sage int)course(cno,cname,ccredits,ctno,cpno,ctime)说明:cno 字符类型,主关系键cname 字符类型,唯一键ccredits 学分,精确数值型,精确长度为2,小数位为1ctno ,cpno 字符类型ctime 整型create table course(cno char(4) constraint pk_c primary key,cname varchar(20) constaint uk_cname unique,ccredit decimal(2,1),ctno char(2),cpno char(4),ctime tinyint)sc(sno,cno,score)说明:sno+cno为主键,并且sno是student的外部键,cno是course的外部键。
数据库实验答案

select sc.sno,sname,grade from sc,student where sc.sno=student.sno and cno='1' and grade<60
select sno,sname from student where sno in(select sno from sc where cno='1' and grade<60)
8.查询课程名为“C_”开头的课程名和学分。
9.某些学生入学后还没有确定所在的系,查询还没有确定系的学生的姓名。
10.查询成绩大于60分的学生的学号、课程号和成绩,并将查询结果按课程编号升序排列,同一课程的成绩按分数降序排列。
11.查询学校所开设的总的课程数。
12.计算2号课的学生成绩总和以及平均成绩,对应的列名分别为“总成绩”和“平均成绩”。
要求分别用集合查询和多重条件查询完成实验12createdatabasestdb1gousestdb1gocreatetabledepartmentdeptnochar10primarykeydnamevarchar50gocreateuniqueindexdeptnamedepartmentdnamegocreatetablestudentsnochar9primarykeysnamevarchar20nullssexchar2sageintdeptnochar10foreignkeydeptnoreferencesdepartmentdeptnocreatetablecoursecnochar4primarykeycnamevarchar40uniquecpnochar4ccreditsmallintgocreatetablescsnochar9cnochar4gradeintprimarykeysnocnoforeignkeysnoreferencesstudentsnoforeignkeycnoreferencescoursecno3insertdepartmentvalues?d001??cs?insertdepartmentvalues?d002??is?insertdepartmentvalues?d003??ma?insertstudentvalues?200215121??李勇??男?20?d001?insertstudentvalues?200215122??刘晨??女?20?d001?insertstudentvalues?200215123??王敏??女?20?d002?insertstudentvalues?200215125??张立??男?20?d003?insertstudentvalues?200215126??陈天华??男?20?d003?insertstudentvalues?200215128??宋阳??女?20?d002?insertcoursevalues?1??数据库??5?4insertcoursevalues?2??数学?null2insertcoursevalues?3??信息系统??1?4insertcoursevalues?4??操作系统??6?3insertcoursevalues?5??数据结构??7?4insertcoursevalues?6??数据处理
mysql数据库实验答案

实验一创建、修改数据库和表结构1、用create建立教学数据库的五个基本表:(1)学生表(学号,姓名,性别,年龄),student((Sno,sname,ssex,sage) ;(2)课程表(课程号,课程名,学分),Course (Cno, Cname, credit) ;(3)选课表(学号,课程号,成绩),SC (Sno,, Cno, grade ) ;(4) 教师表(教师号,姓名,性别,出生年月,系部,职称,地址),T(Tno,Tname,ssex,birthday,dept,title,address) ;(5) 工资表(教师号,基本工资,职务工资,合计),Salary(Tno,jbgz,zwgz,hj);Create Database Student default character set utf8 default COLLATE utf8_bin;Use Student;Create Table Student(SNo char(20) primary key,SName char(20) ,页脚内容1SSex char(4) default '男',SAge int) ENGINE=InnoDB;Create Table Course(CNo char(20) primary key,CName char(20) NOT NULL,CRedit float) ENGINE=InnoDB;Create Table SC(SNo char(20) NOT NULL,CNo char(20) NOT NULL,Grade float,Primary Key(SNo, CNo),页脚内容2Foreign Key(SNo) References Student(SNo) On Delete Cascade,Foreign Key(CNo) References Course(CNo))ENGINE=InnoD B;Create Table T(TNo char(20) Primary Key,TName char(20) NOT NULL,TSex c har(4) default '男',birthday DateTime,dept c har(20),title char(20),address char(20))ENGINE=InnoDB;Create Table Salary(页脚内容3TNo char(20) NOT NULL,jbgz float,zwgz float,hj float,Foreign Key(TNo) References T(TNo) On Delete Cascade)ENGINE=InnoDB;2、用alter修改基本表(1)在已存在的学生表student中增加一个sdept(系)的新的属性列;alter table Student add Dept char(20);(2)将学生表student中sname属性列的数据类型修改为变长字符串varchar(10)。
第9套数据库习题及答案

一、单项选择题(每小题1分,共10分)1.()是被长期存放在计算机内的、有组织的、统一管理的相关数据的集合。
A.DATA B.INFORMATION C.DBD.DBS2.需求分析的主要方法是()。
A.自顶向下 B.自底向上 C.从左到右D.混合策略3.在关系运算中,选取符合条件的元组是()运算。
A.除法 B.投影C.连接D.选择4.关系数据库的规范化理论指出,关系数据库中的关系应满足一定的要求,最起码的要求是达到1NF,既满足()。
A.主关键字唯一标识表中的每一行B.关系中的行不允许重复C.每个非关键字列都完全依赖于主关键字D.每个属性都是不可再分的基本数据项5.SQL Server 2000中表查询的命令是()。
A. USE B.SELECT C.UPDATE D.DROP6.SQL Server 2000中表更新数据的命令是()。
A.USE B.SELECT C.UPDATED.DROP7.在SQL Server 2000中,下列变量名正确的是()。
A.@sum B.j C.sum D.4kk8.建立索引的目的是()。
A.降低SQL Server数据检索的速度B.与SQL Server数据检索的速度无关C.加快数据库的打开速度D.提高SQL Server数据检索的速度9.用于求系统日期的函数是()。
A.YEAR() B.GETDATE() C.COUNT() D.SUM()10.向用户授予操作权限的SQL语句是()。
A.CTEATE B.REVOKE C.SELECT D.GRANT二、判断题(每空1分,共10分)1.数据的完整性主要防范的对象是非法用户。
2.概念结构设计的工具是E—R模型。
3.写程序不属于数据库的模式设计阶段。
4.设计好的数据库管理系统在投入使用后出现问题由使用方负责。
5.规则必须使用一次就必须定义一次。
6.缺省情况下,所创建的索引是非聚集索引?7.自定义函数在对任何表的查询中都可以使用。
SQL数据库原理实验指导书及答案

数据库原理SQLServer实验指导书数据库系统原理实验一、基本操作实验实验1:数据库的定义实验本实验的实验目的是要求学生熟练掌握和使用SQL、T-SQL、SQL Server Enterpriser Manager Server 创建数据库、表、索引和修改表结构,并学会使用SQL Server Query Analyzer,接收T-SQL语句和进行结果分析。
本实验的内容包括:l)创建数据库和查看数据库属性。
2)创建表、确定表的主码和约束条件,为主码建索引。
3)查看和修改表结构。
4)熟悉SQL Server Enterpriser Manager和 Query Analyzer工具的使用方法具体实验任务如下。
1.基本提作实验1)使用Enterpriser Manager建立图书读者数据库2)在Enterpriser Manager中查看图书读者数据库的属性,并进行修改,使之符合要求。
3)通过Enterpriser Manager,在建好了图书借阅数据库中建立图书、读者和借阅3个表,其结构为:图书(书号,类别,出版社,作者,书名,定价,版次);读者(编号,姓名,单位,性别,电话):借阅(书号,读者编号,借阅日期人)要求为属性选择合适的数据类型,定义每个表的主键,Allow Null(是否允许空值)和Default Value(缺省值)等列级数据约柬。
4)在Enterpriser Manager建立图书、读者和借阅3个表的表级约束:每个表的PrimaryKey (主键)约束;借阅表与图书表间、借阅表与读者表之间的FOREIGNKEY(外码)约柬,要求按语义先确定外码约束表达式,再通过操作予以实现;实现借阅表的书号和读者编号的UNIQUE(惟一性)约束;实现读者性别只能是“男”或“女”的check(检查)约束。
2.提高操作实验建立学生_课程库操作,在查询分析器中用SQL命令实现。
库中表结构为:Student(sno,sname,sage,ssex,sdept):course(cno,cname,cpno,ccredit);sc(sno,cno,grade)。
数据库应用技术形考任务9答案

数据库应用技术形考任务9参考答案一、单项选择题(每题2分,共10分)题目1在VB中,可以利用Connection对象的Execute方法实现对数据库的更改操作。
关于删除SC 表中学号为S01的选课记录的语句,正确的是()。
ADOcn.Execute “DELETE FROM SC WHERE 学号= 'S01'”a. ADOcn.Execute “UPATE FROM SC WHERE 学号= 'S01'”b. ADOcn.Execute “DELETE FROM SC WHERE 学号= 'S01'”c. ADOcn.Execute “SELECT FROM SC WHERE 学号= 'S01'”d. ADOcn.Execute “DROP FROM SC WHERE 学号= 'S01'”题目2设ADOcn是一个Connection对象,与数据库的连接字符串存放在cnStr字符串中。
关于使用ADOcn建立与数据源连接的语句,正确的是()。
ADOcn.Open cnStra. ADOcn.Create cnStrb. ADOcn.Open cnStrc. ADOcn.connetion cnStrd. ADOcn.conn cnStr题目3不属于VB中ADO对象模型中的对象的是()。
Updatea. Connectionb. Commandc. Recordsetd. Update题目4声明并创建Connection对象的语句,正确的是()。
Dim ADOcn As New Connectiona. Dim ADOcn As New Connectionb. Dim ADOcn As Connectionc. Declare ADOcn As New Connectiond. Declare ADOcn As Connection题目5利用Recordset对象可以得到查询结果集。
数据库原理及应用最全上机实验及实验答案

实验一 SQL Server 2005 的安装和环境介绍一.实验目的与要求:1.掌握SQL Server 2005 服务器的安装方法2.了解SQL Server 2005 的环境3.了解数据库及其对象二.实验准备1.了解SQL Server 2005的版本2.了解SQL Server 2005各版本对硬件和软件的需求三.实验要求1.写出SQL SERVER 2005的功能与特点, 使用方法, 应用状况的报告2.完成SQL SERVER 2005的安装、启动、登录。
四.实验内容1.安装SQL Server 2005实验一 SQL Server 2005 的安装和环境介绍●实验指导——安装SQL Server 20051.根据安装机器软硬件的要求,选择一个合适的版本,以下以开发版为例2.将 SQL Server 2005 DVD 插入 DVD 驱动器。
如果DVD驱动器的自动运行功能无法启动安装程序无法启动安装程序,请导航到 DVD 的根目录然后启动splash.hta。
3.在自动运行的对话框中,单击“运行 SQL Server 安装向导”。
4.在“最终用户许可协议”页上,阅读许可协议,再选中相应的复选框以接受许可条款和条件。
接受许可协议后即可激活“下一步”按钮。
若要继续,请单击“下一步”若要结束安装程序,请单击“取消”。
如下图:5.在“SQL Server 组件更新”页上,安装程序将安装 SQL Server 2005 的必需软件。
有关组件要求的详细信息,请单击该页底部的“帮助”按钮。
若要开始执行组件更新,请单击“安装”。
更新完成之后若要继续,请单击“完成”。
6.在 SQL Server 安装向导的“欢迎”页上,单击“下一步”以继续安装。
7.在“系统配置检查 (SCC)”页上,将扫描安装计算机,以检查是否存在可能妨碍安装程序的条件。
8.在“注册信息”页上的“姓名”和“公司”文本框中,输入相应的信息。
《数据库原理及应用》实验报告带答案

实验课程:数据库原理及应用学号:学生姓名:班级:年月日实验1 创建和维护数据库一、实验目的(1)掌握在Windows 平台下安装与配置MySQL 5.5 的方法。
(2)掌握启动服务并登录MySQL 5.5 数据库的方法和步骤。
(3)了解手工配置MySQL 5.5 的方法。
(4)掌握MySQL 数据库的相关概念。
(5)掌握使用Navicat 工具和SQL 语句创建数据库的方法。
(6)掌握使用Navicat 工具和SQL 语句删除数据库的方法。
二、实验要求(1)学生提前准备好实验报告,预习并熟悉实验步骤;(2)遵守实验室纪律,在规定的时间内完成要求的内容;(3)1~2人为1小组,实验过程中独立操作、相互学习。
三、实验内容及步骤(1)在Windows 平台下安装与配置MySQL 5.5.36 版。
(2)在服务对话框中,手动启动或者关闭MySQL 服务。
(3)使用Net 命令启动或关闭MySQL 服务。
开始--运行--cmd--输入“net start mysql”回车,启动成功;输入“net--stop--mysql”回车,停止。
(4)分别用Navicat 工具和命令行方式登录MySQL。
①打开Navicat for MySQL,文件--新建连接--确定。
②开始--运行--cmd,输入mysql -h hostname(如果服务器在本机,可以输入localhost或127.0.0.1)user -p 回车后,系统会提示“Enter password”,输入配置的密码就可以登录上了。
(5)创建数据库。
①使用Navicat 创建学生信息管理数据库gradem。
②使用SQL 语句创建数据库MyDB。
①打开Navicat for MySQL,文件--新建连接--常规(设置连接名MySQL,主机名localhost)。
②使用Windows命令行方式登录MySQL,然后输入CREATE DATABASE mydb;回车,显示Query OK, 1 row affected (0.00 sec)创建成功。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(1) 设置一个触发器,该触发器仅允许“dbo”用户可以删除Employee表内数据,否则出错。
create trigger EmploteeDelete on employeefor deleteasif exists (select * from deleted)beginif user!='dbo'rollbackend(2) 在OrderMaster表中创建触发器,插入数据时要先检查Employee表中是否存在同样值的业务员编号,如果不存在则不允许插入。
create trigger insOrderMasteron OrderMasterfor insertasbeginif exists(select*from insertedwhere salerNo not in(select employeeNofrom Employee))rollback;end(3) 级联更新:当更新Customer表中customerNo列的值时,同时更新OrderMaster表中的customerNo列的值,并且一次只能更新一行。
create trigger uptCustomeron Customerfor updateasdeclare @oldCustomerNo char(9),@newCustomerNo char(9)if(select count(*)from inserted)>1rollbackelsebeginif update(customerNo)beginselect @oldCustomerNo=customerNo from deletedselect @newCustomerNo=customerNo from insertedupdate OrderMaster set customerNo=@newCustomerNowhere customerNo=@oldCustomerNoendend(4) 对Product表写一个UPDATE触发器。
当更新“主板”类的商品时,其单价不得高于原价格的10% create trigger uptProducton Productfor updateasbegindeclare @oldPrice numeric(7,2),@newPrice numeric(7,2)if update(productPrice)begindeclare myCur cursor forselect a.productPrice,b.productPricefrom inserted a,deleted bwhere a.productNo=b.productNo and b.productClass='主板' open myCurfetch myCur into @newPrice,@oldPricewhile(@@fetch_status=0)beginif @newPrice>@oldPrice+@oldPrice*0.1rollbackfetch myCur into @newPrice,@oldPriceendclose myCurdeallocate myCurendend(5) 保证商品的销售单价必须在成本价的正负10%之内插入触发器create trigger insOrderDetailon OrderDetailfor insertasbegindeclare @productNo char(9),@price numeric(7,2)declare @productPrice numeric(7,2),@orderNo char(12)declare myCur cursor forselect orderNo,b.productNo,price,productPricefrom Product a,inserted bwhere a.productNo=b.productNoopen myCurfetch myCur into @orderNo,@productNo,@price,@productPrice while(@@fetch_status=0)beginif(@price>@productPrice+@productPrice*0.1 or@price<@productPrice-@productPrice*0.1)delete from OrderDetailwhere orderNo=@orderNo and productNo=@productNo fetch myCur into @orderNo,@productNo,@price,@productPrice endclose myCurdeallocate myCurend更新触发器create trigger uptOrderDetailon OrderDetailfor updateasbegindeclare @productNo char(9),@oldPrice numeric(7,2)declare @newPrice numeric(7,2)declare @productPrice numeric(7,2),@orderNo char(12)if update(price)begindeclare myCur cursor forselect b.orderNo,b.productNo,b.price,c.price,productPricefrom Product a,inserted b,deleted cwhere a.productNo=b.productNo and a.productNo=c.productNo and b.orderNo=c.orderNoopen myCurfetch myCur into@orderNo,@productNo,@newPrice,@oldPrice,@productPrice while(@@fetch_status=0)beginif(@newPrice>@productPrice+@productPrice*0.1 or@newPrice<@productPrice-@productPrice*0.1)update OrderDetail set price=@oldPricewhere orderNo=@orderNo and productNo=@productNo fetch myCur into@orderNo,@productNo,@newPrice,@oldPrice,@productPrice endclose myCurdeallocate myCurendend(6) 保证员工编码的第2~5位与员工的雇佣日期的年份一致。
插入触发器create trigger insEmploteeon employeefor insertasbegindeclare @employeeNo char(8),@hireDate datetimedeclare @subEmployeeNo char(4)declare myCur cursor forselect employeeNo,hireDatefrom insertedopen myCurfetch myCur into @employeeNo,@hireDatewhile(@@fetch_status=0)beginset @subEmployeeNo=substring(@employeeNo,2,4)if(@subEmployeeNo <>convert(char(4),@hireDate,120))delete from Employeewhere employeeNo=@employeeNofetch myCur into @employeeNo,@hireDateendclose myCurdeallocate myCurend更新触发器create trigger uptEmploteeon employeefor updateasbegindeclare @employeeNo char(8),@hireDate datetimedeclare @subEmployeeNo char(4)if (update(employeeNo)or update(hireDate))begindeclare myCur cursor forselect employeeNo,hireDatefrom insertedopen myCurfetch myCur into @employeeNo,@hireDatewhile(@@fetch_status=0)beginset @subEmployeeNo=substring(@employeeNo,2,4)if(@subEmployeeNo <>convert(char(4),@hireDate,120))rollbackfetch myCur into @employeeNo,@hireDateendclose myCurdeallocate myCurendend。