《SQL Server 2005实用教程》实验答案
SQL2005实用教程1-3章课后答案 王秀英 清华大学出版社
第一章(1) 实体之间的联系类型有1对1联系、1对多联系和多对多联系联系。
(2) 数据库管理系统的主要功能包括数据定义功能,数据操纵功能,数据库运行控制功能(3) 在关系模型中,关系的一个属性对应表中的一列,也称为一个字段。
(4) 在SQL Server中使用的SQL语言叫做Transact-SQL(1) 在关系模型中,与元组相对应的概念是哪一个。
ADAB对错错对第二章数据库引擎是SQL Server 2005系统的核心服务,负责完成数据的存储、处理和安全管理。
(2) SQL Server 2005提供了Windows身份验证、混合验证两种身份验证模式。
AADC错对对错(1)请简述为什么要注册服务器?在SQL Server管理平台中注册服务器可以存储服务器的连接信息,以供将来连接该服务器时使用。
(2)请简述安装SQL Server 2005对联网软件的要求。
Microsoft Internet Explorer 6.0 SP1或更高版本。
如果只是安装客户端组件且不需要连接到要求加密的服务器,组Internet Explorer 4.01 SP2也可以满足要求;Microsoft SQL Server 2005 Reporting Services需要IIS 5.0或更高版本以及 2.0。
第三章(1) 在SQL Server 2005系统中,系统数据库master用来保存系统级信息。
(2) SQL Server 2005系统管理两种类型的文件,分别是数据文件、日志文件(3) 如果数据库的名字是MyDB,那么默认情况下主数据文件和日志文件的逻辑文件名分别是MyDB、MyDB_log(4) 数据库选项AUTO_SHRINK用于设置数据库自动收缩。
CBDA对错对错(1) 为了提高磁盘的访问效率,如何配置数据库文件组和文件。
数据库中可以包含一个主数据文件和若干个次数据文件,在主数据文件中存放数据库目录,而将数据和数据库对象存放在次数据文件中,而且应该将次数据文件和主数据文件存储在不同的驱动器上,这样配置有助于减小磁盘访问竞争。
中文版SQL Server 2005数据库应用实用教程参考答案
中文版Microsoft SQL Server 2005数据库应用实用教程参考答案第1章走进SQL Server1、70个表、17个视图、1个触发器2、按照图示命令执行。
第2章安装和配置1、(略)。
2、USE masterGOsp_configure'show advanced options', 1RECONFIGUREGOsp_configure'two digit year cutoff', 2030RECONFIGUREGO第3章Transact-SQL语言1、select Name+' '+CONVERT(varchar(30), StandardCost)from production.productwhere ProductID > 7002、select datepart(year,getdate())第4章安全性1、(略)。
2、CREATE LOGIN [ABC\Tomson]FROM WINDOWSWITH DEFAULT_DATABASE = AdventureWorksGO EXEC sp_addsrvrolemember'ABC\Tomson','sysadmin';GO第5章管理数据库文件1、USE masterGOALTER DATABASE ABCom ADD FILEGROUP ComFGGOALTER DATABASE ABCom REMOVE FILEGROUP ComFG2、USE masterGOALTER DATABASE ABCom SET ALLOW_SNAPSHOT_ISOLATION ON第6章备份和还原1、BACKUP DATABASE AdventureWorks TO DISK='C:\AdventureWorks_2008.bak'GO2、RESTORE LOG AdventureWorks FROM BKDataWITH RECOVERY,STOPAT ='October 20, 2008 1:00 AM'GO第7章表1、在AdventureWorks数据库中,打开“表”节点,选中HumanResources.Employee表,右击,从弹出的菜单中选择“编写表脚本为”“CREATE”“新查询编辑器窗口”,则可生成相应的CREATE TABLE脚本。
sql server 2005教材思考与练习答案(1-9)
Sql server 2005程序设计与管理基础同步实训教程思考与练习答案第一章一、填空题1.身份验证权限验证2. sa3. C/S4. 关系第二章一、填空题1. 数据文件事务日志文件2. 主文件组用户自定义文件组3. master model tempdb msdb4. DA TABASE5. ALTER6. DROP二、选择题1. B2. D3.C4. B5. C6. A7. C8. B9. A10.C 11. A四、实践操作题1.—创建员工管理数据库CREATE DATABASE employee_manageON PRIMARY(NAME=employee_data,FILENAME='e:\employ\employee_data.mdf',SIZE=4MB,FILEGROWTH=1MB)LOG ON(NAME=employee_log,FILENAME='e:\employ\employee_log.ldf',SIZE=1MB,FILEGROWTH=15%)GO2. --修改员工管理数据库ALTER DATABASE employee_manageADD FILE(NAME=employee_data2,FILENAME='e:\employ\employee_manag2.ndf', SIZE=2MB,FILEGROWTH=10%,MAXSIZE=50MB)GO第三章一、填空题1. TABLE2. IDENTITY3. sp_help4. 单用户single user5. 1bit 0,1,null二、选择题1. B2. D3.B4. C5. B四、实践操作题USE employee_manageGO--创建部门信息表结构CREATE TABLE depart(depart_id char(3) PRIMARY KEY,depart_name nvarchar(20) NOT NULL,note nvarchar(50))GO--创建员工信息表结构CREATE TABLE empl(empl_id char(4) PRIMARY KEY,empl_name varchar(10) NOT NULL,sex char(2),birth datetime,duty varchar(20),depart_id char(3))GO--创建请假信息表结构CREATE TABLE leave(cq_id int IDENTITY(1,1) PRIMARY KEY, empl_id char(4) NOT NULL,cq_date datetime,leave_id char(2) NOT NULL,leave_reasom nvarchar(100))GO--创建请假类型表结构CREATE TABLE leaveType(leave_id char(2) PRIMARY KEY,leave_name varchar(20) NOT NULL)GO第四章一、填空题1. from2. <> !=3. ‘s%’‘_s’4. asc desc5. A VG MAX二、选择题1. A2.D3. A4. C5. C6. A7. A8. C9. C 10. A四、实践操作题--1.录入数据表记录--录入部门信息表记录INSERT INTO departV ALUES('001','基础教研室',NULL)GOINSERT INTO departV ALUES('002','专业教研室',NULL)GOINSERT INTO departV ALUES('003','教务科',NULL)GO--录入员工信息表记录INSERT INTO emplV ALUES('0101','王林','男','1956-1-23','院长',NULL)GOINSERT INTO emplV ALUES('0102','袁媛','女','1980-3-15','管理人员','003')GOINSERT INTO emplV ALUES('0201','李敏','女','1966-7-11','教研室主任','001')GOINSERT INTO emplV ALUES('0202','张天一','男','1979-9-11',NULL,'002')GOINSERT INTO emplV ALUES('0203','叶华','女','1982-8-15',NULL,'002')GOINSERT INTO emplV ALUES('0204','朱俊','男','1981-4-13',NULL,'001')GOINSERT INTO emplV ALUES('0205','马涛','男','1971-8-25','教研室主任','002')GOINSERT INTO emplV ALUES('0206','陈琳琳','女','1981-6-19',NULL,'001')GO--录入请假类型表记录INSERT INTO leaveT ypeV ALUES('01','事假')GOINSERT INTO leaveT ypeV ALUES('02','病假')GOINSERT INTO leaveT ypeV ALUES('03','缺假')GOINSERT INTO leaveT ypeV ALUES('04','公假')GO--录入请假信息表记录INSERT INTO leaveV ALUES('0202','2009-3-12','01',NULL) GOINSERT INTO leaveV ALUES('0205','2009-3-18','04','出差天') GOINSERT INTO leaveV ALUES('0202','2009-3-25','01','病假天') GOINSERT INTO leaveV ALUES('0203','2009-3-27','01','病假半天') GOINSERT INTO leaveV ALUES('0204','2009-4-10','03','缺勤天') GOINSERT INTO leaveV ALUES('0202','2009-4-22','02',NULL) GOINSERT INTO leaveV ALUES('0206','2009-3-16','01',NULL) GOINSERT INTO leaveV ALUES('0203','2009-4-15','03','缺勤半天') GOINSERT INTO leaveV ALUES('0204','2009-4-9','02',NULL)GOINSERT INTO leaveV ALUES('0202','2009-4-27','02',NULL) GO--2.修改表结构ALTER TABLE LEA VEADD status varchar(20)GO--3.修改请假信息表记录UPDA TE leaveSET status='已登记'WHERE month(cq_date)=3GOUPDA TE leaveSET status='未登记'WHERE month(cq_date)=4GO--4.查询部门编号为的所有员工的信息SELECT*FROM emplWHERE depart_id='002'GO--5.查询年以后出生的所有员工的信息SELECT*FROM emplWHERE birth>='1980-1-1'GO--6.查询月份请事假的考勤记录信息SELECT*FROM leaveWHERE leave_id='01'AND month(cq_date)=3 GO--7.统计各请假类型的请假人数信息SELECT leave_id 请假类型,count(*)请假人数FROM leaveGROUP BY leave_idGO--8.按员工统计其请假次数SELECT empl_id 员工编号,count(*)请假次数FROM leaveGROUP BY empl_idGO--9.统计员工中的男、女人数SELECT sex 性别,count(*)人数FROM emplGROUP BY sexGO第五章一、填空题1. 逗号JOIN2. INNER JOIN OUTER JOIN CROSS JOIN3. UNION 列数4. 左外连接右外连接全外连接5. EXISTS二、选择题1. A2. D3. A4. A、B5. A、C6. D四、实践操作题--1.查询各员工的基本信息及相应的部门信息SELECT e.*,d.*FROM empl e JOIN depart dON e.depart_id=d.depart_idGO--2.查询所有请假人员的姓名、所属部门、请假日期、请假类型名称SELECT empl_name,depart_name,cq_date,leave_nameFROM empl e JOIN depart dON e.depart_id=d.depart_idJOIN leave l ON l.empl_id=e.empl_idJOIN leaveType lt ON l.leave_id=lt.leave_idGO--3.查询出未请过假的员工的员工编号、姓名、部门名称SELECT empl_id,empl_name,depart_nameFROM empl e JOIN depart dON e.depart_id=d.depart_idWHERE empl_id NOT IN(SELECT empl_id FROM leave)GO--4.查询出各部门的请假人数SELECT depart_name 部门名称,count(*)请假次数FROM empl e JOIN depart dON e.depart_id=d.depart_idJOIN leave l ON l.empl_id=e.empl_idGROUP BY depart_name第六章一、填空题1. 主键约束非空约束2. 实体完整性域完整性参照完整性3. CREATE RULE4. sp_bindefault5. 唯一约束二、选择题1. D2. A3. D4. B5. A四、实践操作题--1.设置部门信息表的部门名称为唯一约束ALTER TABLE departADD CONSTRAINT uq_bmmc UNIQUE(depart_name)GO--2.设置员工信息表的所属部门列为外键约束ALTER TABLE emplADD CONSTRAINT fk_ssbm FOREIGN KEY(depart_id) REFERENCES depart(depart_id)GO--3.设置请假信息表的员工编号列为外键约束ALTER TABLE leaveADD CONSTRAINT fk_ygbh FOREIGN KEY(empl_id) REFERENCES empl(empl_id)GO--4.设置请假信息表的请假类型列为外键约束ALTER TABLE leaveADD CONSTRAINT fk_qjlx FOREIGN KEY(leave_id) REFERENCES leaveType(leave_id)GO--5.设置请假信息表的请假日期列为检查约束ALTER TABLE leaveADD CONSTRAINT ck_qjrq CHECK(cq_date<getdate())GO--6.设置员工信息表的性别列为检查约束ALTER TABLE emplADD CONSTRAINT ck_xb CHECK(sex IN('男','女'))GO--7.设置请假信息表的请假日期列为默认约束ALTER TABLE leaveADD CONSTRAINT df_qjrq DEFAULT getdate()FOR cq_date GO第七章一、填空题1. 视图2. 基本表3. sp_help sp_helptext4. WITH ENCRYPTION5. CREATE VIEW二、选择题1. C2. D3. A4. B四、实践操作题--1.创建视图,查询所有员工的基本信息及相应的部门信息CREATE VIEW v_emplDepartASSELECT e.*,depart_name,noteFROM empl e JOIN depart dON e.depart_id=d.depart_idGO--2.创建视图,查询请假人员的基本信息及请假的详细信息CREATE VIEW v_emplLeaveASSELECT e.*,cq_id,cq_date,leave_id,leave_reasom,statusFROM empl e JOIN leave lON l.empl_id=e.empl_idGO--3.创建视图,查询所有员工的基本信息及请假的详细信息CREATE VIEW v_allEmplLeaveASSELECT e.*,cq_id,cq_date,leave_id,leave_reasom,statusFROM empl e LEFT JOIN leave lON l.empl_id=e.empl_id--4.创建视图,查询出各部门的所有员工的基本信息及请假的详细信息CREATE VIEW v_allDepartEmplLeaveASSELECT depart_name,e.*,cq_id,cq_date,leave_reasom,statusFROM empl e JOIN depart dON e.depart_id=d.depart_idLEFT JOIN leave l ON l.empl_id=e.empl_idGO--5.使用视图v_emplDepart,查询出部门WEI 001的所有员工的信息SELECT*FROM v_emplDepartWHERE depart_id='001'GO--6.使用视图v_emplDepart,统计出各部门员工的人数SELECT depart_id,count(*)部门人数FROM v_emplDepartGROUP BY depart_idGO--6.使用视图v_emplLeave,统计出各请假类型员工的人数SELECT leave_id,count(*)请假人数FROM v_emplLeaveGROUP BY leave_idGO--7.使用视图v_allDepartEmplLeave,统计出各部门员工的请假次数SELECT depart_name,count(*)请假次数FROM v_allDepartEmplLeaveGROUP BY depart_nameGO第八章一、填空题1. 数据定义语言2. 局部变量全局变量3. @@4. DECLARE5. +二、选择题1. B2. D3. C4. B5. D第九章一、填空题1. master sp_2. 输入参数输出参数3. OUTPUT4. SP_HELPTEXT5. WITH RECOMPILE二、选择题1. D2. A四、实践操作题--1.建立一个存储过程,查询某班的所有学生的基本信息。
《SQL Server 2005实用教程》习题答案
第一章一、填空题1.5 ,企业版(Enterprise Edition)、开发人员版(Developer Edition)、标准版(Standard Edition)、工作组版(Workgroup Edition)、简易版(Express Edition)。
2.数据库引擎服务(SQL Server)、代理服务(SQL Server Agent)、分析服务(SQL Server Analysis Services)、浏览器服务(SQL Server Browser)、集成服务(SQL Server Integration Services)、全文索引服务(SQL Server Full Text Search))、报表服务(SQL Server Report Server)。
3.开发人员版、标准版、工作组版、简易版。
二、判断题1.×2.√三、简答题1.可以在哪些操作系统平台下安装使用SQL Server 2005企业版?Windows 2000 Server SP4Windows 2000 Advanced Server SP4Windows 2000 Datacenter Edition SP4Windows Server 2003 SP1Windows Server 2003 Enterprise Edition SP1Windows Server 2003 Datacenter Edition SP1Windows Small Business Server 2003 Standard Edition SP1Windows Small Business Server 2003 Premium Edition SP1……等2.简述如何启动、停止数据库引擎服务。
P11第二章一、填空题1.42.8二、选择题1.C2.A三、综合题1.创建一个数据类型New_str,要求其为字符型,最大长度为12,不允许为空,写出实现的语句。
上机实验指导_实验内容和思考参考答案_SQL_Server_2005实践教程学习
数据库技术与应用实践教程-SQL Server 2005上机实验指导(实验思考)—参考答案实验1:安装及管理工具使用略。
实验2:SQL Server数据库的管理二、实验内容及步骤4.单击“新建查询”打开查询设计器窗口,在查询设计器窗口中使用Transact-SQL语句CREATE DATABASE创建studb 数据库。
然后通过系统存储过程sp_helpdb查看系统中的数据库信息。
CREATE DATABASE studbON( NAME=studb_dat,FILENAME='C:\DataBase\studb.mdf')EXEC sp_helpdb5.在查询设计器中使用Transact-SQL语句ALTER DATABASE修改studb数据库的设置,指定数据文件大小为5MB,最大文件大小为20MB,自动递增大小为1MB。
ALTER DATABASE studbMODIFY FILE (NAME=studb_data, SIZE = 5MB, MAXSIZE = 20MB, FILEGROWTH = 1MB)6.在查询设计器中为studb数据库增加一个日志文件,命名为studb_Log2,大小为5MB,最大文件大小为10MB。
ALTER DATABASE studbADD LOG FILE(NAME = studb_log2, FILENAME=studb_log2.ldf, SIZE = 5MB, MAXSIZE = 10MB)8.使用Transact-SQL语句DROP DATABASE删除student_db数据库。
DROP DATABASE student_db实验3 SQL Server数据表的管理二、实验内容及步骤5.使用Transact-SQL语句CREATE TABLE在studentsdb 数据库中创建grade表。
CREATE TABLE grade ([学号] [char] (4) NULL,[课程编号] [char] (4) NULL ,[分数] [char] (5) NULL) ON [PRIMARY]8.使用Transact-SQL语句INSERT INTO...V ALUES向studentsdb数据库的grade表插入数据:学号为0004,课程编号为0001,分数为80。
参考答案数据库技术实验指导
《数据库技术(SQL Server 2005)》实验指导 / 学年第学期姓名:______________学号:______________班级:______________指导教师:______________计算机科学与工程学院2010目录目录 2实验一 SQl Server 2005常用工具使用 3实验二数据的简单查询 6实验三数据的复杂查询12实验四管理数据库和表错误!未定义书签。
实验五操纵表中数据错误!未定义书签。
实验六 SQL Server程序设计错误!未定义书签。
实验七存储过程和自定义函数错误!未定义书签。
实验八视图和索引错误!未定义书签。
实验九触发器错误!未定义书签。
实验十数据库设计错误!未定义书签。
实验一SQl Server 2005常用工具使用一、实验目的1 . 了解SQl Server 2005包含的主要组件及其功能;2 .了解SQl Server 2005的配置管理工具;3 .熟悉SQl Server管理工作室的界面及基本使用方法;4 .了解联机帮助文档的使用,熟悉示例数据库adventureworks;5. 掌握select语句实现简单查询。
二、实验预习1 .SQL Server 各组件的主要功能是什么?2、如何安装SQL Server 2005?三、实验内容和要求1 .通过“开始”→“程序”→Microsoft SQL Server2005→“配置工具”→SQL Server Configuration Manager,打开“SQL Server配置管理工具”窗口,选择SQL Server 服务.并且通过该窗口“启动”和“停止” SQL Server 服务。
2 .通过“开始”→“程序”→Microsoft SQL Server2005→“SQL Server Management Studio”打开管理工作室窗口。
3 .打开本地服务器的属性对话框,在常规中查看以下信息:产品名称、主机操作系统、产品的版本、操作平台、主机内存等.4 .利用管理工作室访问系统自带的示例数据库adventureworks。
SQLServer2005课后实训参考答案
课后实训参考答案单元1(SQL Server概述)1、使用SQL语句。
在Sale数据库中创建名为MyDataType的用户定义数据类型,数据类型为NV ARCHAR,长度为20,该列允许为NULL。
USE SaleGOEXEC sp_addtype MyDataType,'NVARCHAR(20)','NULL' GO单元2(单表数据)使用查询窗口或sqlcmd实施查询。
本实训使用Xk数据库。
--1.查看系部编号为“03”的系部名称。
USE XkGOSELECT DepartNameFROM DepartmentWHERE DepartNo='03'GO--2.查看系部名称中包含有“工程”两个字的系的全名。
USE XkGOSELECT DepartNameFROM DepartmentWHERE DepartName LIKE'%工程%' GO--3.显示共有多少个系部。
USE XKGOSELECT'系部总数'=COUNT(*)FROM DepartmentGO--4.显示“01”年级共有多少个班级。
USE XKGOSELECT'01 级班级数'=COUNT(*)FROM ClassWHERE ClassNo LIKE'2001%'GOSELECT'01 级班级数'=COUNT(*)FROM ClassWHERE ClassName LIKE'01%'GOSELECT'01 级班级数'=COUNT(*)FROM StudentWHERE ClassNo LIKE'2001%'GO--5.查看在“周二晚”上课的课程名称和教师。
USE XKGOSELECT'课程名称'=CouName,'任课教师'=TeacherFROM CourseWHERE SchoolTime='周二晚'GO--6.查看姓“张”、“陈”、“黄”同学的基本信息,要求按照姓名降序排序查询结果。
sqlServer2005习题与答案
从学生表Student(Sno,Sname,Ssex,Sage,Sdept)中查询出全体学生的学号与姓名1. 查询全体学生的详细记录2. 显示前5条纪录3. 显示前50%条纪录4. 查询所有年龄在17岁以下的学生姓名及其年龄。
5. 某些学生选修课程后没有参加考试,所以有选课记录,但没有考试成绩。
查询缺少成绩的学生的学号和相应的课程号。
(成绩为null)6. 查所有有成绩的学生学号和课程号7. 查询学生的所有信息,按学号的降序排列1.select * from student2.select top 5 * from student3.select top 50 percent * from student4.select sname,sage from student where sage<175.select sno,cno from sc where score is NULL6.select sno,cno from sc where score is not NULL7.select * from student order by sno desc8 查询选修了课程的学生学号9. 查全体学生的姓名及其出生年份,显示两列:姓名、出生年份10. 查询年龄在15~17岁(包括15岁和17岁)之间的学生的姓名、年龄。
11. 查询年龄不在15~17岁之间的学生姓名、系别和年龄。
12. 查询年龄不在15~17岁之间的男生姓名、系别和年龄。
13. 将上题查询的结果插入一个新表中。
8.select distinct sno from sc9.select sname,2010-sage as 出生年份from student10.select sname,sage from student where sage between 15 and 1711.select sname,sdept,sage from student where sage is not between 15 and 1712.select sname,sdept,sage from student where ssex='男' and sage is not between 15 and 1713.select sname,sdept,sage into newtable from student where ssex='男' and sage is not between 15 and 171. 查询学生总人数。
SQL Server 2005实用教程试题一及答案
SQL Server 2005实用教程试题一及答案一、选择题(每题2分,共30分)下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确的选项涂写在答题卡相应位置上,答在试卷上不得分。
1. 在关系表中,如果一个字段或者几个字段组合的值可以唯一标识其对应的数据记录,则称该字段或者字段组合为()。
A. 码B. 主键C. 外键D. 字段2. 管理数据库的系统简称为()。
A. DBMSB. DBAC. DBSD. RDBMS3. 安装SQL Server 2005时,可以通过单击“要安装的组件”对话框的()按钮来自定义要安装的组件和路径。
A.下一步B.高级C.上一步D.帮助4. SQL Server 2005设计了()个不同的版本来满足用户的不同需要。
A.3B.5C.4D.65. 安装SQL Server 2005 Reporting Services需要安装()或者更高版本。
A. IE 4.0B. IE 6.0C. IIS 5.0D. Service Pack26.()是SQL Server 2005的核心管理工具,该工具可以用来配置数据库系统,操作数据库对象,设置数据库安全等。
A.事件探查器B.服务器网络实用工具C.SQL Server Management Studio。
D.客户端网络实用工具7.()是负责数据库系统日常运转的高级人员。
A.网络管理员B.DBSC.DBAD.系统管理员8.()是一个用户定义的SQL事务命令的组合,当对数据库对象进行操作时,这些事先定义的命令就会自动执行。
A. 表B.数据类型C. 用户自定义D. 触发器9. 下面()数据类型用来存储二进制数据。
A. DatetimeB. SmallmoneyC. RealD. Binary10. 下面()语句是数据查询动词。
A. SELECTB. UPDATEC. GRANTD. CREATE11. ()数据库供SQL Server Agent用来计划警报和作业。
SQL Server 2005 数据库实验问题答案
回答问题:1.你如何认识需求分析在系统开发中的地位和重要性?在开发一个系统前,需求分析可以在宏观上定义该系统的功能和性能,避免设计,编码测试的失常和重复性工作,或者没有很好的理解市场需求,从而导致系统的多余甚至错误。
需求分析可以更精准的把握住该系统的核心,在系统设计和实现上起到至关重要的作用。
2.设计ER图、关系模型分别属于数据库设计的哪一阶段?E-R图属于概念设计阶段,关系模型属于逻辑结构设计阶段。
3.主键、外键对于关系数据库的意义何在?主键主要是唯一的标示一行,同时作为一个可以被外键有效引用的对象。
主键和外键是把多个表组织为一个有效的关系数据库的粘合剂。
必须将数据库模式从理论上的逻辑设计转换为实际的物理设计。
而主键和外键的结构是这个设计过程的症结所在。
一旦将所设计的数据库用于了生产环境,就很难对这些键进行修改,所以在开发阶段就设计好主键和外键就是非常必要和值得的。
同时,也保证了数据库的完整性。
4.在数据库存储结构设计时要考虑哪些因素?确定数据的存储结构,存取路径的选择和调整,确定数据存放位置,确定存储分配。
5.在表设计时对于数据类型的选择和使用如何考虑?选择正确的数据列类型能大大提高数据库的性能和使数据库具有高扩展性,需要注意:存放到数据列中的数据类型。
数据值的取值范围。
考虑性能和处理效率。
数值操作比字符操作快。
小类型的处理速度比大类型快。
不同数据表中固定长度类型和可变长度类型的处理效率是不同的。
可变长度类型在经过删除和修改操作后容易产生碎片,降低系统性能,需定期运行OPTIMIZE TABLE命令以优化数据表。
固定长度类型由于有固定的长度,所以容易确定每条记录的起始点,可加快数据表的修复速度。
在MyISAM和ISAM表中使用固定长度类型数据列有助改善数据库性能。
在InnoDB表中,固定长度和可变长度数据列类型都以相同方式存储,所以固定长度数据列类型并没有性能优势,反而由于可度长度数据列类型由于占用存储空间较少,所以处理速度会快些。
sqlserver实验(答案)
实验1 Sql Server数据库的安装1.实验目的(1)通过安装来了解,感受SQL Server2005(2)了解SQL Server2005所支持的多种形式的管理架构,并确定此次安装的管理架构形式(3)熟悉安装SQL Server2005的各种版本所需的软、硬件要求,确定要安装的版本(4)熟悉SQL Server2005支持的身份验证种类(5)掌握SQL Server服务的几种启动方法(6)正确配置客户端和服务器端网络连接的方法(7)掌握SQL Server Management Studio的常规使用2.实验准备(1)了解SQL Server2005的各种版本及所需的软、硬件要求(2)了解SQL Server2005支持的验证种类(3)了解SQL Server2005各组件的主要功能(4)掌握在查询分析器中执行SQL语句的方法3.实验内容(1)安装SQL Server2005,并在安装时将登录身份验证模式设置为“SQL Server”和“Windows”验证,其他选择默认,并记住Sa的密码。
(2)利用SQL Server Configuration Manager配置SQL Server2005服务器(3)利用SQL Server2005创建的默认帐户,通过注册服务器向导首次注册服务器(4)试着创建一些由SQL Server2005验证的用户,删除第一次注册的服务器后用新建的帐户来注册服务器。
(5)为某一个数据库服务器指定服务器别名,后通过服务器别名注册该数据库服务器(6)熟悉和学习使用SQL Server2005的SQL Server Management Studio实验2 创建数据库和表1.实验目的(1)了解SQL Server数据库的逻辑结构和物理结构(2)了解表的结构和特点(3)了解SQL Server的基本数据类型(4)掌握在SQL Server Management Studio中创建数据库和表的方法(5)掌握使用T-SQL语句创建数据库和表的方法2.实验准备(1)要明确能够创建数据库的用户必须是系统管理员或被授权使用Create database的用户(2)创建数据库必须要确定数据库名、所有者、数据库大小(最初大小、最大大小、是否允许增长和增长的方式)和存储数据的文件(3)确定数据库包含哪些表及包含的表结构,还要了解掌握在SQL Server Management 的常用数据类型,以创建数据库的表(4)了解常用的创建数据库和表的方法3.实验内容(1)数据库分析①创建用于学生选课管理的数据库,数据库名为“student”,初始大小20M,最大50M,数据库自动增长,增长方式是按15%;日志文件大小5M,最大25M,按5M增长。
SQL-Sever-2005-习题与答案
SQL-Sever-2005-习题与答案一1.使用SQL Server管理平台中创建studentsdb 数据库,并修改studentsdb数据文件和日志的初始大小、最大文件大小、增长容量及文件路径。
2.使用Transact-SQL语句CREATE DATABASE创建studb数据库,指定数据文件大小、最大文件大小、增长容量及文件路径。
3.使用Transact-SQL语句ALTER DATABASE完成修改数据库设置、增加日志文件及更名等操作。
4.使用SQL Server管理平台中在studentsdb 数据库中创建数据表student_info(其数据结构如图1-2所示),并增加部分数据。
5.使用Transact-SQL语句CREATE TABLE在studentsdb数据库中创建grade表,其数据结构如图1-4所示。
6.使用Transact-SQL语句ALTER TABLE修改相同的所有学生的姓名、出生日期。
6.使用IN子查询,查找所修课程编号为0002、0005的学生学号、姓名、性别。
7.查询学习“C语言程序设计”课程的学生的学号、姓名、分数。
8.查询每个学生的所选课程的最高成绩,要求列出学号、姓名、课程编号、分数。
9.查询所有学生的总成绩,要求列出学号、姓名、总成绩,没有选修课程的学生的总成绩为空。
10.为grade表添加数据行:学号为0004、课程编号为0006、分数为76。
查询所有课程的选修情况,要求列出课程编号、课程名称、选修人数,curriculum表中没有的课程列值为空。
三1.使用Transact-SQL语句为studentsdb数据库的student_info表和curriculum表创建主键索引。
2.使用SQL Server管理平台按curriculum表的课程编号列创建唯一性索引。
3.使用Transact-SQL语句为studentsdb数据库的grade表的“分数”字段创建一个非聚集索引,命名为grade_index。
SQL Sever 2005 习题与答案
一1.使用SQL Server管理平台中创建studentsdb数据库,并修改studentsdb数据文件和日志的初始大小、最大文件大小、增长容量及文件路径。
2.使用Transact-SQL语句CREATE DATABASE创建studb数据库,指定数据文件大小、最大文件大小、增长容量及文件路径。
3.使用Transact-SQL语句ALTER DATABASE完成修改数据库设置、增加日志文件及更名等操作。
4.使用SQL Server管理平台中在studentsdb数据库中创建数据表student_info(其数据结构如图1-2所示),并增加部分数据。
5.使用Transact-SQL语句CREATE TABLE在studentsdb数据库中创建grade表,其数据结构如图1-4所示。
6.使用Transact-SQL语句ALTER TABLE修改grade表的“学号”列,使之为非空。
7.使用Transact-SQL语句ALTER...ADD为studentsdb数据库的grade表添加一个名为“备注”的数据列,其数据类型为VARCHAR(20)8.使用Transact-SQL语句INSERT INTO...VALUES向studentsdb数据库的grade表插入数据:学号为0004,课程编号为0001,分数为80。
9.使用Transact-SQL语句DELETE删除studentsdb数据库的grade表中学号为0004的成绩记录。
10.使用Transact-SQL语句UPDATE将studentsdb数据库的grade表中学号为0003、课程编号为0005的分数修改为90的成绩记录。
二1.在studentsdb数据库中使用SELECT语句进行基本查询。
(1) 在student_info表中,查询每个学生的学号、姓名、出生日期信息。
(2) 查询学号为0002 的学生的姓名和家庭住址。
(3) 找出所有男同学的学号和姓名。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验二2.实验内容(1)CREA TE DA TABASE StuInfoONPRIMARY (NAME = StuInfo _Data,,FILENAME = 'D:\ StuInfo.Mdf',SIZE =3MB,MAXSIZE = 10MB,FILEGROWTH =1 MB)LOG ON(NAME = StuInfo _Log,FILENAME = 'D:\ StuInfo _Log.Ldf',SIZE = 1MB,MAXSIZE =5MB,FILEGROWTH = 1MB)GO(2)--创建学生表T_StudentUSE StuinfoGOCREATE TABLE t_student(S_number char(8) NOT NULL PRIMARY KEY,S_name char(10) NOT NULL,Sex char(2) NULL CHECK(Sex='男' or Sex='女'),Birthday datetime ,Nation nvarchar(10) ,Politics varchar(10) ,Department nvarchar(12) ,Address varchar(60) ,PostalCode nvarchar(10) ,Phone varchar(24) ,)--创建课程表T_CourseUSE StuinfoGOCREATE TABLE t_course(C_number char(4) NOT NULL PRIMARY KEY,C_name char(10) NOT NULL,Teacher char(10) ,Hours int NOT NULL,Credit int ,Type nvarchar(12) ,)--创建课程表T_ScoreUSE StuinfoGOCREATE TABLE t_score(S_number char(8) NOT NULL REFERENCES t_student (S_number),C_number char(4) NOT NULL REFERENCES t_course (C_number),Score numeric(5, 1) CHECK(Score>=0 and Score<=100),CONSTRAINT PK_t_score PRIMARY KEY (S_number ,C_number) )(3)在SSMS中打开表,按照表3.15、3.16、3.167的内容直接输入数据即可。
(4)INSERT INTO t_scoreVALUES('040104','2',70)显示错误信息,不能保存该条记录。
因为T_Score表的S_Number列与表T_Student 的S_Number列存在着外键约束关系,而表T_Student不存在S_Number为040104的记录。
(5)INSERT INTO t_scoreVALUES('040104','2',70)能执行,向t_score表添加了该条数据。
(6)update dbo.t_studentset S_number='040105'where S_number='040101'显示错误信息,不能修改该条记录。
因为T_Score表的S_Number列与表T_Student 的S_Number列存在着外键约束关系,而表T_Score存在S_Number为'040101'的记录,为保证表T_Score数据的完整性,不能修改表T_Student中S_Number为'040101'的记录。
(7)delete t_coursewhere C_number='5'显示错误信息,不能删除该条记录。
因为T_Score表的C_Number列与表T_Course 的C_Number列存在着外键约束关系,为保证表T_Score数据的完整性,不能删除表T_Course中C_Number为5的记录。
(8)法一:首先删除T_Score表中C_Number=’5’的所有记录,然后再删除表T_Course 中C_Number为5的记录。
法二:修改T_Score表与T_Course表关于C_Number的外键约束,设置其“INSERT 和UPDATE规范”的“删除规则”为“层叠”。
(9)USE StuinfoALTER TABLE t_studentADD CONSTRAINT CK_Politics CHECK(Politics='中共党员' or Politics='团员' or Politics='民主党派' or Politics='群众')ALTER TABLE t_studentADD CONSTRAINT DF_Politics DEFAULT('团员') FOR Politics(10)EXEC SP_DETACH_DB 'Stuinfo', 'true'EXEC SP_ATTACH_DB 'Stuinfo','C:\StuInfo.Mdf'实验三3.实验步骤(1)USE stuinfogoSELECT * FROM t_student ORDER BY s_number DESC(2)USE stuinfogoSELECT s_name 姓名, birthday 出生日期,year(getdate())-year(birthday) 年龄,c_name 课程名称, score 成绩FROM t_student,t_course,t_scoreWHERE t_student.s_number=t_score.s_numberand t_course.c_number=t_score.c_number(3)USE stuinfogoSELECT s_name 姓名,c_number 课程编号, score 成绩FROM t_student,t_scoreWHERE t_student.s_number=t_score.s_numberand s_name='李宏'COMPUTE avg(score)COMPUTE sum(score)(4)USE stuinfogoSELECT * FROM t_studentWHERE year(getdate())-year(birthday)>20 and sex='女'(5)USE stuinfogoSELECT t_student.s_number,s_name,sum(score)FROM t_student,t_scoreWHERE t_score.s_number=t_student.s_numberGROUP BY t_student.s_number,s_nameHA VING sex='男'4.思考与练习(1)use stuinfogoSelect s_name,birthday, year(getdate())-year(birthday) 年龄from t_student Where sex='男'use stuinfogoSelect s_name,datename(year,birthday)+'年'+datename(month,birthday)+'月' as 出生年月, year(getdate())-year(birthday) 年龄from t_student Where sex='男'(2)use stuinfogoselect *,count(sex) 人数 from t_studentgroup by s_number,birthday,sex,s_name having sex='女'compute sum(count(sex))(3)use stuinfogoselect t_course.c_name 课程名称,t_score.score 成绩from t_course,t_scorewhere t_course.c_number=t_score.c_numberand c_name='SQL Server'compute avg(score)compute sum(score)goselect count(*) 'sql server及格学生人数' from t_scorewhere score>=60 and c_number='1'select count(*) 'sql server不及格学生人数' from t_scorewhere score<60 and c_number='1'(4)use stuinfogoselect c_name,sex,avg(score) 平均分,sum(score) 总分from t_student,t_course,t_scorewhere t_course.c_number=t_score.c_numberand t_student.s_number=t_score.s_numberand c_name='SQL Server'group by sex,c_name(5)Use stuinfoGoSelect t_student.s_name 姓名,t_student.sex 性别,t_course.c_name 课程名称,t_score.score 成绩From t_student, t_course, t_scoreWhere t_student.s_number=t_score.s_number andt_score.c_number=t_course.c_number and s_name like '李%' and sex='男'(6)Use stuinfoGoSelect t_student.s_name,t_course.c_name,t_score.scoreFrom t_student,t_course,t_scoreWhere t_student.s_number=t_score.s_number andt_score.c_number=t_course.c_number and score<607.Use stuinfoGoSelect top 40 percent s_number,s_name into t_student1from t_studentSelect * from t_student2实验四3.实验步骤(1) (略)(2)(3)CREA TE unique clustered INDEX i_name ON t_user(s_name)(4)use stuinfogocreate index i_t_scoreon t_user(s_number、c_number)WITHPAD_INDEX,FILLFACTOR=50,(5) sp_rename 't_user.i_name','index_s_c'(6)DBCC DBREINDEX ( 't_user',i_name,60 )(7)(8)drop index t_user.i_score实验五3.实验步骤(1)(2)use stuinfogocreate view v_stu_sex0asselect *from t_studentwhere Politics='团员' and sex='女'(3)create view v_stu_sex1asselect *from t_studentwhere Politics='团员' and sex='男'with check option(4)实验六2.实验内容(1)select getdate()(2)USE STUINFOGO--将刘致朋的出生日期由1985年5月8日更改为1985年8月5日UPDATE t_studentSET Birthday='1985-8-5'WHERE S_name='刘志鹏'--如果没有发生记录更新,则发出警告信息IF @@ROWCOUNT=0PRINT '警告:没有发生记录更新'(3)USE STUINFOGO--将黄方方的政治面貌更新为“党员”UPDATE t_studentSET Politics='党员'WHERE Politics ='团员'--检查是否出现限制检查冲突IF @@ERROR=547PRINT '出现限制检查冲突,请检查需要更新的数据限制'(4)if exists(select * from t_student where s_name='张三')select * from t_student where s_name='张三'elseprint '在数据库中无此人信息!'(5)SELECT s_number,c_name,score,等级=CASEWHEN score<60 THEN '不及格'WHEN score>=60 AND score<70 THEN '及格'WHEN score>=70 AND score<80 THEN '中等'WHEN score>=80 AND score<90 THEN '良好'WHEN score>=90 THEN '优秀'ELSE '无成绩'ENDFROM t_course JOIN t_score ON t_course.c_number=t_score.c_number where c_name='电子商务'(6)--声明游标DECLARE stu_cursor CURSORGLOBAL SCROLL DYNAMICFORSELECT t_student.s_number,s_name,c_name,scoreFROM t_student JOIN t_score ON t_student.s_number=t_score.s_numberjoin t_course on t_course.c_number=t_score.c_number --打开游标OPEN stu_cursor--第一次读取,得到结果集的首行记录FETCH NEXT FROM stu_cursor--循环读取结果集中剩余的数据行WHILE @@FETCH_STA TUS=0BEGINFETCH NEXT FROM stu_cursorEND--关闭游标stu_cursorCLOSE stu_cursor--释放(删除)游标stu_cursorDEALLOCA TE stu_cursor(7)(8)WAITFOR DELAY '00:00:05'select * from t_coursewhere type='专业核心课'实验七2.实验内容(1)错误!未找到引用源。