SQL_Server_SQL实验与练习题参考答案
- 格式:doc
- 大小:172.00 KB
- 文档页数:14
--创建数据库USE[master]GOCREATEDATABASE[test]ONPRIMARY(NAME=N'test',FILENAME=N'D:\SQL\DataBase\test.mdf',SIZE=3072KB,MAXSIZE=UNLIMITED,FILEGROWTH= 1024KB)LOG ON(NAME=N'test_log',FILENAME=N'D:\SQL\DataBase\test_log.ldf',SIZE= 1024KB,MAXSIZE= 2048GB,FILEGROWTH= 10%)GOALTERDATABASE[test]SETCOMPATIBILITY_LEVEL= 90GOIF (1 =FULLTEXTSERVICEPROPERTY('IsFullTextInstalled'))beginEXEC[test].[dbo].[sp_fulltext_database]@action='enable'endGOALTERDATABASE[test]SETANSI_NULL_DEFAULTOFFGOALTERDATABASE[test]SETANSI_NULLSOFFGOALTERDATABASE[test]SETANSI_PADDINGOFFGOALTERDATABASE[test]SETANSI_WARNINGSOFFGOALTERDATABASE[test]SETARITHABORTOFFGOALTERDATABASE[test]SETAUTO_CLOSEOFFGOALTERDATABASE[test]SETAUTO_CREATE_STATISTICSONGOALTERDATABASE[test]SETAUTO_SHRINKOFFGOALTERDATABASE[test]SETAUTO_UPDATE_STATISTICSONGOALTERDATABASE[test]SETCURSOR_CLOSE_ON_COMMITOFFGOALTERDATABASE[test]SETCURSOR_DEFAULTGLOBALGOALTERDATABASE[test]SETCONCAT_NULL_YIELDS_NULLOFFGOALTERDATABASE[test]SETNUMERIC_ROUNDABORTOFFGOALTERDATABASE[test]SETQUOTED_IDENTIFIEROFFGOALTERDATABASE[test]SETRECURSIVE_TRIGGERSOFFGOALTERDATABASE[test]SETDISABLE_BROKERGOALTERDATABASE[test]SETAUTO_UPDATE_STATISTICS_ASYNCOFF GOALTERDATABASE[test]SETDATE_CORRELATION_OPTIMIZATIONOFF GOALTERDATABASE[test]SETTRUSTWORTHYOFFGOALTERDATABASE[test]SETALLOW_SNAPSHOT_ISOLATIONOFFGOALTERDATABASE[test]SETPARAMETERIZATIONSIMPLEGOALTERDATABASE[test]SETREAD_COMMITTED_SNAPSHOTOFFGOALTERDATABASE[test]SETREAD_WRITEALTERDATABASE[test]SETRECOVERYSIMPLEGOALTERDATABASE[test]SETMULTI_USERGOALTERDATABASE[test]SETPAGE_VERIFY CHECKSUMGOALTERDATABASE[test]SETDB_CHAININGOFFGO--创建表USE testCREATETABLE emp(EMPNO NUMERIC(5, 0)NOTNULL,ENAME NVARCHAR(10),JOB NVARCHAR(9),MGR NUMERIC(5, 0),HIREDATE DATETIME,SAL NUMERIC(7, 2),COMM NUMERIC(7, 2),DEPTNO NUMERIC(2, 0),)CREATETABLE dept(DEPTNO NUMERIC(2),DNAME NVARCHAR(14),LOC NVARCHAR(13),)--插入数据INSERTINTO EMP VALUES(7369,'SMITH','CLERK', 7902,'2000-12-17', 800,NULL, 20)。
实验二4.create database studbSp_helpdb5. alter database studbmodify file(name=studb,size=5MB,maxsize=20MB,filegrowth=1MB)7. ALTER DATABASE studbMODIFY NAME=student_db8. DROP DATABASE student_db实验三5. USE students_dbGOCREATE TABLE grade(学号char(4),课程编号char(4),分数decimal(5))E studentdbGOINSERT gradeV ALUES(‘0004’,’0001’,’80’)9. USE studentdbGOALTER TABLE curriculumALTER COLUMN 课程编号char(4) NOT NULL 10. USE studentdbGOALTER TABLE gradeALTER COLUMN 分数real11. USE studentdbGOALTER TABLE student_infoALTER COLUMN 姓名。
不会12. USE studentdbGODELETE FROM gradeWHERE学号='0004'13. USE studentdbGOUPDATE grade SET 分数=90WHERE 学号='0003' and 课程编号='0005'14. USE studentdbGOALTER TABLE grade ADD 备注V ARCHAR(20) NULL15. USE studentdbGODROP TABLE grade实验四2(1)select 学号,姓名,出生日期from student_info(2)select 姓名,家庭住址from student_info where学号='0002'(3)select 学号,姓名from student_info where 性别='男'3(1)select 学号,分数from grade where分数between 80 and 90(2)select avg(分数) from grade where 课程编号='0003'(3)select 课程编号,count(课程编号) as 人数from grade group by 课程编号(4)select 姓名,出生日期from student_info order by出生日期desc(5)select 学号,姓名from student_info where 姓名like '张%'4(1)SELECT 姓名,出生日期FROM student_info WHERE性别=(SELECT 性别FROM student_info WHERE 姓名='刘卫平')(2)SELECT 学号,姓名,性别FROM student_info WHERE student_info.学号IN (SELECT 学号FROM grade WHERE 课程编号IN ('0002', '0005'))(3)SELECT 课程编号,分数FROM grade WHERE 学号='0001' AND 分数>ANY(SELECT 分数FROM grade WHERE 学号='0002')(4)SELECT 课程编号,分数FROM grade WHERE 学号='0001' AND 分数>ALL(SELECT 分数FROM grade WHERE 学号='0002')5(1)SELECT student_info.学号,姓名,分数FROM student_info,gradeWHERE student_info.学号=grade.学号AND 分数BETWEEN 80 AND 90(2)SELECT student_info.学号,姓名,分数FROM student_infoINNER JOIN grade ON student_info.学号=grade.学号INNER JOIN curriculum ON 课程名称='C语言程序设计'(3)SELECT student_info.学号,student_info.姓名,curriculum.课程名称,grade.分数FROM student_infoINNER JOIN grade ON student_info.学号=grade.学号and 性别='男'INNER JOIN curriculum on curriculum.课程编号=grade.课程编号(4)SELECT student_info.学号,max(grade.分数)FROM student_infoINNER JOIN grade ON student_info.学号=grade.学号group by student_info.学号(5)SELECT student_info.学号,sum(grade.分数)FROM student_infoleft outer JOIN grade ON student_info.学号=grade.学号group by student_info.学号(6)第一步insert gradevalues ('0004','0006','76')第二步SELECT curriculum.课程编号,curriculum.课程名称,count(grade.学号) as 选修人数FROM graderight outer JOIN curriculum on curriculum.课程编号=grade.课程编号group by curriculum.课程编号,curriculum.课程名称6 unionselect 课程编号as u_编号,课程名称as u_名称from curriculum7delete from totalgradewhere 总成绩is null实验五1ALTER TABLE student_infoADDCONSTRAINT student_idxPRIMARY KEY CLUSTERED (学号)ALTER TABLE curriculumADDCONSTRAINT curriculum_idxPRIMARY KEY CLUSTERED (课程编号)2无3CREATE NONCLUSTERED INDEX grade_index ON grade(分数)4CREATE UNIQUE INDEX grade_id_c_ind ON grade(学号,课程编号)5sp_helpindex grade6无7sp_rename 'grade.grade_index','grade_ind', 'INDEX'8DROP INDEX grade.grade_indsp_helpindex grade9execute sp_fulltext_database 'enable'10execute sp_fulltext_catalog 'FT_stu','create'exec sp_fulltext_table'student_info','create','FT_stu','PK_student_info'11execute sp_fulltext_column 'student_info','家庭住址','add'execute sp_fulltext_table 'student_info','activate'12execute sp_fulltext_catalog 'FT_stu','start_full'13SELECT 姓名,家庭住址FROM student_infoWHERE CONTAINS(家庭住址,'25号')1415无16create view v_stu_casselect student_info.学号,student_info.姓名,grade.课程编号from student_info inner joingrade onstudent_info.学号=grade.学号select 学号,姓名,课程编号from v_stu_c where 学号='0003'17create view v_stu_casselect student_info.学号,student_info.姓名,curriculum.课程名称,grade.分数from student_infoinner join grade on student_info.学号=grade.学号inner join curriculum on grade.课程编号=curriculum.课程编号select 学号,姓名,课程名称,分数from v_stu_g where 学号='0001'18alter view v_stu_casselect grade.学号,姓名,count(grade.课程编号)as 课程数目from student_info inner join grade on student_info.学号=grade.学号group by grade.学号,姓名19ALTER VIEW v_stu_i(学号,姓名,性别)AS SELECT 学号,姓名,性别FROM student_info20sp_rename v_stu_i,v_stu_info21insert into v_stu_ivalues ('0015','陈婷','女')22delete from v_stu_gwhere 学号='0015'23update v_stu_gset 分数=84 where 姓名='刘卫平'and 课程名称='高等数学' 24drop view v_stu_c,v_stu_g实验六1(1) SELECT*INTO stu_phone FROM student_infoALTER TABLE stu_phone ADD 电话号码CHAR(7)NULL(2) CREATE rule phone_ruleAS@phone LIKE '[0-9][0-9][0-9][0-9][0-9][0-9][0-9]'(3) sp_bindrule phone_rule,'stu_phone.电话号码'(4)应修改括号中的第三个字符串为7位0~9数字3Create rule stusex_ruleAs @stusex in (‘男’,’女’)sp_bindrule stusex_rule,'stu_phone.性别'4Sp_help stusex_ruleSp_helptext stusex_ruleSp_rename stusex_rule,'stu_s_rule'5sp_unbindrule'stu_phone.性别'Drop rule stu_s_rule6(1) --创建日期型默认对象df_dateCREATE default df_dateAS '2006-4-12'GO----创建字符型默认对象df_charCREATE DEFAULT df_charas 'unknown'GO--创建货币型默认对象df_moneyCREATE DEFAULT df_moneyAS $100GO(2) CREATE TABLE stu_fee(学号char(10)NOT NULL,姓名char(8)NOT NULL,学费money,交费日期datetime,电话号码char(7))(3) Sp_bindefault df_money,'stu_fee.学费'GOSp_bindefault df_date,'stu_fee.交费日期'GOSp_bindefault df_char,'stu_fee.电话号码'GO(4) INSERT INTO stu_fee(学号,姓名)values('0001','刘卫平')INSERT INTO stu_fee(学号,姓名,学费)values('0001','张卫民',$120)INSERT INTO stu_fee(学号,姓名,学费,交费日期)V ALUES('0001','马东',$110,'2006-5-12')(5) sp_unbindefault 'stu_fee.电话号码'drop DEFAULT df_charsp_unbindefault 'stu_fee.学费'gosp_unbindefault 'stu_fee.交费日期'godrop DEFAULT df_date,df_moneygo8 ALTER TABLE student_info ADD 院系CHAR(7)Gocreate default stu_d_dfas '信息院'gosp_bindefault stu_d_df,'student_info.院系'gosp_unbindefault 'student_info.院系'godrop default stu_d_dfgo9(1)create table stu_con(学号char(4)constraint pk_sid primary key,姓名char(8) constraint uk_name unique,性别char(2) constraint df_sex default '男',出生日期datetime constraint ck_beday check (出生日期>'1988-1-1'),家庭住址varchar(50))(2) insert stu_convalues('0009','张晓东','','1989-4-6','')goinsert stu_convalues('0010','李梅','女','1983-8-5','')goinsert stu_convalues('0011','王强','','1988-9-10','')goinsert stu_convalues('0012','王强','','1989-6-3','')go所影响的行数为1 行)服务器: 消息547,级别16,状态1,行1INSERT 语句与COLUMN CHECK 约束'ck_beday' 冲突。
数据库原理与应用教程―SQL Server习题解答1.数据库的发展历史分哪几个阶段?各有什么特点?答:数据库技术经历了人工管理阶段、文件系统阶段和数据库系统三个阶段。
1)人工管理阶段这个时期数据管理的特点是:数据的独立性差,数据不能被长期保存,数据的冗余度大等给数据的维护带来许多问题。
2)文件系统阶段程序与数据有了一定的独立性,程序和数据分开存储,然而依旧存在数据的冗余度大及数据的不一致性等缺点。
3)数据库系统阶段数据库系统的特点如下:(1)数据结构化(2)较高的数据共享性(3)较高的数据独立性(4)数据由DBMS统一管理和控制…2.简述数据、数据库、数据库管理系统、数据库应用系统的概念。
答:数据是描述事物的符号记录,是信息的载体,是信息的具体表现形式。
数据库就是存放数据的仓库,是将数据按一定的数据模型组织、描述和存储,能够自动进行查询和修改的数据集合。
数据库管理系统是数据库系统的核心,是为数据库的建立、使用和维护而配置的软件。
它建立在操作系统的基础上,位于用户与操作系统之间的一层数据管理软件,它为用户或应用程序提供访问数据库的方法,包括数据库的创建、查询、更新及各种数据控制等。
凡使用数据库技术管理其数据的系统都称为数据库应用系统。
3.简述数据库管理系统的功能。
答:数据库管理系统是数据库系统的核心软件,一般说来,其功能主要包括以下5个方面。
(1) 数据定义和操纵功能(2) 数据库运行控制功能(3) 数据库的组织、存储和管理(4) 建立和维护数据库(5) 数据通信接口4.简述数据库的三级模式和两级映像。
答:为了保障数据与程序之间的独立性,使用户能以简单的逻辑结构操作数据而无需考虑数据的物理结构,简化了应用程序的编制和程序员的负担,增强系统的可靠性。
通常DBMS将数据库的体系结构分为三级模式:外模式、模式和内模式。
模式也称概念模式或逻辑模式,是对数据库中全部数据的逻辑结构和特征的描述,是所有用户的公共数据视图。
2013年(下)全国信息技术水平考试数据库应用系统设计技术水平证书(SQL Server)考试试卷第一大题:单选题(30 分)1. (1分)数据模型的三要素不包括()。
(A) 数据结构(B) 数据操作(C) 数据完整性约束(D) 数据恢复2. (1分)数据的存储结构与数据逻辑结构之间的独立性称为数据的()。
(A) 结构独立性(B) 物理独立性(C) 逻辑独立性(D) 分布独立性3. (1分) 如果对于实体集A中的每一个实体,实体集B中可有多个实体与之联系;反之,对于实体集B中的每一个实体,实体集A中也可有多个实体与之联系。
则称实体集A与B具有()。
(A) 1:1联系(B) 1:n联系(C) n:m联系(D) 多种联系4. (1分)当对关系R和S使用自然联接时,一般要求R和S至少含有一个共同的()。
(A) 元组(B) 关键字(C) 记录(D) 属性5. (1分)若关系模式R(A,B,C,D,E)上的函数依赖集F={AB->C,A->D,A->E},为了满足BCNF,可以将R分解为()。
(A) R1(A,B,C,D) R2(A,E)(B) R1(A,B,C) R2(A,D,E)(C) R1(A,B,C) R2(D,E)(D) R1(A,B) R2(A,C,D,E)6. (1分) SQL语言查询一次的结果是一个()。
(A) 元组(B) 表(C) 属性(D) 数据库7. (1分)在关系模式R(U,F)中,如果X→Y,且存在X的真子集X1,使X1→Y,则称函数依赖X→Y为()。
(A) 平凡函数依赖(B) 部分函数依赖(C) 完全函数依赖(D) 传递函数依赖8 . (1分)在Transact-SQL中,下列命令能让程序完全跳出循环的是()。
(A) CASE(B) WAIT(C) BREAK (D) CONTINU E9 . (1分) 在Transact-SQL中,下列选项不属于数值型数据类型的是()。
--------------------------------------装--------------------------------------订------------------------------线----------------------------------------选择题(每题2分,共计100分)1.在SQL Server中,要防止大于100的数被保存到int类型的列,可以使用()。
A.主键约束B.限制约束C.外键约束D.检查约束2.在SQL Server中,下面关于数据完整性的描述正确的是()。
[选两项]A.如果数据库中没有重复的数据,数据就是完整的B.维护数据完整性就是保证数据的准确性C.数据库中数据越详细越符合数据完整性D.维护数据完整性可以保证数据的一致性,避免出现没有意义的数据3.在SQL Server 2005中,有系统数据库和用户数据库,下列不属于系统数据库的是()。
A.masterB.modelC.msdbD.pubs4.在SQL Sever 2005中,假设表 users 包含主键列 id ,那么执行”update users set id=20 whereid=30”,执行的结果可能有()。
A.如果表中含有id为30的记录,但不包含id为20的记录,则更新失败B.执行出错,因为主键列不可以被更新C.如果表中同时含有id 为20和id 为30的记录,则更新失败。
D.如果表中不包含id为20 和id 为30 的记录,则更新一行记录5.在SQL Server 2005数据库中,使用update语句更新数据库表中的数据,以下说法正确的是()。
A.每次只能更新一行数据B.每次可更新多行数据C.如果没有数据项被更新,将提示错误消息D.更新数据时,必须带有WHERE条件句子6.关于数据完整性,以下说法正确的是()。
[选两项]A.引用完整性通过主键和外键之间的引用关系实现B.引用完整性通过限制数据类型、检查约束等实现C.数据完整性是通过数据操纵者自身对数据的控制来实现的D.如果两个表中存储的信息相互关联,那么只要修改了一个表,另外一个表也要做出相应的修改,则称该这两个表中的数据具备完整性7.关于标识列,以下说法正确的是()。
《SQL 数据库管理与开发教程与实训》试题<A 卷>一、单项选择题<每小题1分,共10分>1.下列四项中,不属于数据库特点的是〔 C 〕.A.数据共享B.数据完整性C.数据冗余很高D.数据独立性高2.下列四项中,不属于SQL2000实用程序的是〔 D 〕.A.企业管理器B.查询分析器C.服务管理器D.媒体播放器3.SQL Server 安装程序创建4个系统数据库,下列哪个不是〔 C 〕系统数据库.4.〔 A 〕是位于用户与操作系统之间的一层数据管理软件,它属于系统软件,它为用户或应用程序提供访问数据库的方法.数据库在建立、使用和维护时由其统一管理、统一控制.A .DBMSB .DBC .DBSD .DBA 5.在SQL 中,建立表用的命令是 < B >. A.CREATE SCHEMAB.CREATE TABLE C.CREATE VIEWD.CREATE INDEX6.SQL 语言中,条件年龄 BETWEEN 15 AND 35表示年龄在15至35之间,且< A >.A.包括15岁和35岁B.不包括15岁和35岁C.包括15岁但不包括35岁D.包括35岁但不包括15岁7.下列四项中,不正确的提法是< C >.A.SQL 语言是关系数据库的国际标准语言B.SQL 语言具有数据定义、查询、操纵和控制功能C.SQL 语言可以自动实现关系数据库的规范化D.SQL 语言称为结构查询语言8.在MS SQL Server 中,用来显示数据库信息的系统存储过程是< D >.A. sp_dbhelpB. sp_dbC. sp_helpD. sp_helpdb9.SQL 语言中,删除表中数据的命令是< A >.A. DELETEB. DROPC. CLEARD. REMOVE10.SQL 的视图是从〔 C 〕中导出的.A. 基本表B. 视图C. 基本表或视图D. 数据库三、填空题<每空1分,共20分>1.数据库系统具有数据的_外模式___、_模式________和内模式三级模式结构.2.SQL Server 2000局部变量名字必须以_________开头,而全局变量名字必须以_________开头.3.语句 select ascii<'D'>, char<67> 的执行结果是:_______68__和____C_____.4.语句 select lower<'Beautiful'> , rtrim<'我心中的太阳 '> 的执行结果是:_____beautiful_______和__我心中的太阳________.5.选择运算是根据某些条件对关系做______分割;投影是根据某些条件对关系做______分割.6.关系运算主要有________、________和连接.7.完整性约束包括______完整性、______完整性、参照完整性和用户定义完整性.8.在SQL Server 2000中,数据库对象包括__表____、_视图_____、触发器、过程、列、索引、约束、规则、默认和用户自定义的数据类型等.9.语句 select day<'2004-4-6'>, len<'我们快放假了.'> 的执行结果是:_6________和________7_.10.语句 select round<13.4321,2>, round<13.4567,3>的执行结果是:_13.4300________和_______13.4570__.五、设计题<共50分>现有关系数据库如下:数据库名:我班同学数据库同学表<学号 char<6>,##,性别,年龄,民族,##号,宿舍号>宿舍表<宿舍号 char<6>,宿舍 >用SQL语言实现下列功能的sql语句代码:2.创建数据表[宿舍表]代码<3分>;宿舍表<宿舍号 char<6>,宿舍 >要求使用:主键<宿舍号>、宿舍:以633开头的7位同学表<学号 char<6>,##,性别,年龄,民族,##号,宿舍号>要求使用:主键<学号>、外键<宿舍号>、默认<民族>、非空<民族,##,年龄>、唯一<##号>、检查<性别>4.将下列宿舍信息添加到宿舍表的代码<8分>宿舍号宿舍101 6331157102 6331777修改宿舍号为101的宿舍:6331158删除宿舍号为102的宿舍信息5.创建视图[同学表视图]代码<5分>;同学表视图<学号, ##, 性别, 年龄, 民族, ##号, 宿舍号, 宿舍 >7.从同学表中查询女同学的最大年龄、最小年龄、平均年龄.<5分>8.创建带参数的存储过程[某宿舍同学]:##, 性别, 宿舍执行此过程,查询'101'宿舍情况 <8分>9.设置一SQL身份验证的用户账户:登录名:U班主任,密码:888,数据库用户名:U读者,权限:可查询查询本数据库中所有表、视图、内嵌表值函数的数据,执行所有的存储过程.请写出账户、权限设置的T_SQL脚本.<9分>一、三、《SQL数据库管理与开发教程与实训》试题<B卷>马建鹏老师一、单项选择题<每小题1分,共10分>1.〔〕是位于用户与操作系统之间的一层数据管理软件,它属于系统软件,它为用户或应用程序提供访问数据库的方法.数据库在建立、使用和维护时由其统一管理、统一控制.A.DBMSB.DBC.DBSD.DBA2.下列四项中,不属于SQL2000实用程序的是〔〕.A.企业管理器B.查询分析器C.服务管理器D.媒体播放器3.SQL Server安装程序创建4个系统数据库,下列哪个不是〔〕系统数据库.A. masterB. modelC. pubD. msdb4.下列哪个不是sql 数据库文件的后缀.A..mdfB..ldfC..tifD..ndf5.数据定义语言的缩写词为 < >.6.SQL语言中,条件年龄 BETWEEN 15 AND 35表示年龄在15至35之间,且< >.A.包括15岁和35岁B.不包括15岁和35岁C.包括15岁但不包括35岁D.包括35岁但不包括15岁7.SQL的视图是从〔〕中导出的.A. 基本表B. 视图C. 基本表或视图D. 数据库8.在SQL语言中,建立存储过程的命令是<>A、CREATE PROCEDUREB、CREATE RULEC、CREATE DURED、CREATE FILE9.SQL语言中,删除表中数据的命令是< >.A. DELETEB. DROPC. CLEARD. REMOVE10.在MS SQL Server中,用来显示数据库信息的系统存储过程是< >.A. sp_dbhelpB. sp_dbC. sp_helpD. sp_helpdb三、填空题<每空1分,共20分>1.SQL Server 2000局部变量名字必须以_________开头,而全局变量名字必须以_________开头.2.语句 select ascii<'D'>, char<67> 的执行结果是:_________和_________.3.语句 select lower<'Beautiful'> , rtrim<'我心中的太阳 '> 的执行结果是:____________和___________.4.选择运算是根据某些条件对关系做______分割;投影是根据某些条件对关系做______分割.5.关系运算主要有________、________和连接.6.完整性约束包括_______完整性、______完整性、参照完整性和用户定义完整性.7.T-SQL 语言中,有_________运算、字符串连接运算、比较运算和_________运算.8.语句 select day<'2004-4-6'>, len<'我们快放假了.'> 的执行结果是:_________和_________.9.语句 select floor<17.4>, floor<-214.2>, round<13.4382,2>, round<-18.4562,3>的执行结果是: _________、_________、_________和_________.五、设计题<共45分>现有关系数据库如下:数据库名:学生成绩数据库学生信息表<学号 char<6>,##,性别,民族,##号>课程信息表<课号 char<6>,名称>成绩信息表<ID,学号,课号,分数>用SQL语言实现下列功能的sql语句代码.1.创建数据库[学生成绩数据库]代码<2分>.2.创建数据表[课程信息表]代码;〔2分〕课程信息表<课号 char<6>,名称>要求使用:主键<课号>、非空<名称>3.创建数据表[学生信息表]代码;〔4分〕学生信息表<学号 char<6>,##,性别,民族,##号>要求使用:主键<学号>、默认<民族>、非空<民族,##>、唯一<##号>、检查<性别>4.创建数据表[成绩信息表];〔5分〕成绩信息表<ID,学号,课号,分数>要求使用:外键<学号,课号>、检查<分数>,自动编号<ID>5.将下列课程信息添加到课程信息表的代码〔8分〕课号名称100101 西班牙语100102 大学英语修改课号为100102的课程名称:专业英语删除课号为100101的课程信息6.创建视图[成绩信息表视图]的代码;〔5分〕成绩信息表视图<学号,##,课号,课程名称,分数>7.从学生信息表中查询姓刘的女同学的情况:##、性别、民族.〔2分8.查询有一门或一门以上课程成绩小于60分的所有学生的信息,包括学号、##.〔4分〕9.创建带参数的存储过程[某门课程高低均分]、执行该过程的代码〔7分〕存储过程功能:查询某门课程的最高分、最低分、平均分;执行该过程,查询所有修’专业英语’这门学生的最高分、最低分、平均分;10设置一SQL身份验证的用户账户:登录名:U院长,密码:888,数据库用户名:U读者,权限:可查询查询本数据库中所有表、视图、内嵌表值函数的数据,执行所有的存储过程.请写出账户、权限设置的T_SQL脚本.<6分>一、五、《SQL数据库管理与开发教程与实训》试题<C卷>杜兆将老师一、单项选择题<每小题1分,共10分>1.下列四项中,不属于数据库特点的是〔〕.A.数据共享B.数据完整性C. 数据冗余很高D.数据独立性高2. 目前〔〕数据库系统已逐渐淘汰了网状数据库和层次数据库,成为当今最为流行的商用数据库系统.A.关系B.面向对象C.分布3. 数据库设计中的概念结构设计的主要工具是〔〕.A.数据模型B.E—R模型 C.新奥尔良模型D.概念模型4. 〔〕是位于用户与操作系统之间的一层数据管理软件,它属于系统软件,它为用户或应用程序提供访问数据库的方法.数据库在建立、使用和维护时由其统一管理、统一控制.A.DBMSB.DBC.DBSD.DBA5. 在SQL中,建立视图用的命令是 < >.A.CREATE SCHEMAB.CREATE TABLEC.CREATE VIEWD.CREATE INDEX6. SQL语言中,条件"年龄BETWEEN 20 AND 30"表示年龄在20至30之间,且< >.A.包括20岁和30岁B.不包括20岁和30岁C.包括20岁但不包括30岁D.包括30岁但不包括20岁8. 在MS SQL Server中,用来显示数据库信息的系统存储过程是< >.A. sp_dbhelpB. sp_dbC. sp_helpD. sp_helpdb9. SQL语言中,删除一个表的命令是< >.A. DELETEB. DROPC. CLEARD. REMOVE10.SQL的视图是从〔〕中导出的.A.基本表B. 视图 C. 基本表或视图D. 数据库三、填空题<每空1分,共20分>1. 数据库系统具有数据的___________、_________和_________三级模式结构.2. SQL Server 2000局部变量名字必须以_________开头,而全局变量名字必须以_________开头.3. 语句 select ascii<'C'>, char<68>, len<'你是BigTiger '> 的执行结果是:_________、_________和_________.4. 语句select upper<'beautiful'> ,ltrim <'我心中的太阳'> 的执行结果是:____________和___________.5. 关系运算主要有________、________、________.6. 选择运算是根据某些条件对关系做______分割;投影是根据某些条件对关系做______分割.7. 索引的类型主要有__和_ __.8. 在SQL Server 2000中,数据库对象包括数据表、______、______、触发器、规则、默认和用户自定义的数据类型等.五、设计题<共50分>现有关系数据库如下:数据库名:学生成绩数据库学生表<学号 char<6>,##,性别,民族,##号>课程表<课号 char<6>,名称>成绩表<ID,学号,课号,分数>用SQL语言实现下列功能的sql语句代码:1.创建数据库[学生成绩数据库]代码<2分>;create database [学生成绩数据库]gouse [学生成绩数据库]go2.创建[课程表]代码<2分>;课程表<课号 char<6>,名称>CREATE TABLE 课程表〔course CHAR<6>,PRIMARY KEY,Name CHAR<6>,NOT NULL,〕;要求使用:主键<课号>、非空<名称>3.创建[学生表]代码<6分>;学生表<学号 char<6>,##,性别,民族,##号>要求使用:主键<学号>、默认<民族>、非空<民族,##>、唯一<##号>、检查<性别>4.创建[成绩表]代码<4分>;成绩表<ID,学号,课号,分数>要求使用:主键<课号>、外键<成绩表.学号,成绩表.课号>、检查<分数>,自动编号<ID>5.将下列课程信息添加到课程表的代码<8分>课号课程名称100001 大学语文100002 大学英语100003 西班牙语修改课号为100002的课程名称:实用英语删除课号为100003的课程信息6.写出创建:成绩表视图<学号,##,课号,课程名称,分数>的代码;<4分>7.写出创建:某门课程成绩内嵌表值函数以与检索的代码;<6分>检索:所有修实用英语这门学生的成绩;8.写出创建:某门课程高低均分计算某门课程成绩最高分、最低分、平均分存储过程以与执行的代码;<6分>执行:所有修实用英语这门学生的最高分、最低分、平均分;9.检索姓李的女同学的情况:##、性别、民族.<2分>10.检索有一门或一门以上课程成绩大于等于90分的所有学生的信息,包括学号、##.<4分>11.设置一SQL身份验证的账户:登录名:U领导,密码:888,数据库用户名:U读者,权限:可查询查询本数据库中所有表、视图、内嵌表值函数的数据.请写出账户、权限设置的T_SQL脚本.<6分>《SQL数据库管理与开发教程与实训》试题<C卷>参考答案一、1.C 2.A 3. B 4.A 5.C 6.A 7. 8.D 9.B 10.C二、1. N 2.N 3.Y 4.N 5.N 6.N 7. Y 8.N 9.N 10.Y三、1. 外模式、模式、内模式.2. ,3. 67, D, 124. BEAUTIFAL,我心中的太阳5. 选择、投影、连接.6. 水平, 垂直7. 聚簇索引非聚簇索引8. 视图、存储过程五、设计题1.create database [学生成绩数据库]gouse [学生成绩数据库]go2. create table 学生表<[学号] char<6> primary key,[##] nchar<4> not null,[性别] nchar<1> check<[性别] in <'男', '女'>>,[民族] nchar<8> default '汉族' not null,[##号] char<18> unique>3. create table 课程表<[课号] char<6> primary key,[名称] char<40> not null>4. create table 成绩表<ID integer IDENTITY<1, 1>,[学号] char<6> references 学生表<学号>,[课号] char<6> references 课程表<课号>,[分数] integer check<[分数] between 0 and 100>>5.insert 课程表 values<'100001', '大学语文'>insert 课程表 values<'100002', '大学英语'>insert 课程表 values<'100003', '西班牙语'>update课程表 set 名称='实用英语' where 课号='100002'delete课程表 where 课号='100003'6. create view [成绩表视图] asselect 成绩表.学号,##,成绩表.课号,名称课程名称,分数from 成绩表,学生表,课程表where 成绩表.学号=学生表.学号and 成绩表.课号=课程表.课号create view [成绩表视图] asselect 成绩表.学号,##,成绩表.课号,名称课程名称,分数from 成绩表 join 学生表 on 成绩表.学号=学生表.学号join 课程表 on 成绩表.课号=课程表.课号7. create function [某门课程成绩]<课程名 varchar<40>>returns table asreturn <select 学号,##,课程名称,分数 from 成绩表视图where 课程名称=课程名>create function [某门课程成绩]<课程名 varchar<40>>returns table asreturn <select * from 成绩表视图where 课程名称=课程名>select * from [某门课程成绩]<'实用英语'>8.create procedure [某门课程高低均分]课程名 varchar<40> asselect 课程名称, 最高分=max<分数>、最低分=min<分数>、平均分=avg<分数> from 成绩表视图where 课程名称 = 课程名execute [某门课程高低均分] '实用英语'9.select ##, 性别, 民族 from 学生表 where ## like '李%' and 性别='女'10. select 学号, ## from 学生表 where学号 in <select distinct 学号 from成绩表 where分数>=90>11.use [学生成绩数据库]exec sp_addlogin 'U领导', NULL, '学生成绩数据库', '简体中文'exec sp_password NULL, '888', 'U领导'exec sp_grantdbaccess 'U领导', 'U读者'exec sp_addrolemember 'db_datareader', 'U读者'use [学生成绩数据库]exec sp_addlogin 'U领导', '888', '学生成绩数据库'exec sp_grantdbaccess 'U领导', 'U读者'exec sp_addrolemember 'db_datareader', 'U读者'《SQL数据库管理与开发教程与实训》试题<D卷>刘占文老师一、单项选择题<每小题1分,共10分>1.数据库应用系统是由数据库、数据库管理系统〔与其开发工具〕、应用系统、〔〕和用户构成.A.DBMSB.DBC.DBSD.DBA2.数据库管理系统的英文缩写是〔〕.A.DBMSB.DBSC.DBAD.DB3.在关系运算中,选取符合条件的元组是〔〕运算.A.除法B.投影C.连接D.选择4.数据库设计中的逻辑结构设计的任务是把〔〕阶段产生的概念数据库模式变换为逻辑结构的数据库模式.A.需求分析B.物理设计C.逻辑结构设计D.概念结构设计5.一个规范化的关系至少应当满足〔〕的要求.A.一范式B.二范式C.三范式D.四范式6.在实际数据库设计中,"学号"通常作为〔〕存在.A.数据结构B.数据存储C.数据项目D.处理过程7.SQL Server 2000中删除表中记录的命令是〔〕.A.DELETEB.SELECTC.UPDATED.DROP8.运行命令SELECT ASCII〔‘Alklk’〕的结果是〔〕.A.48B.32C.90D.659.在SQL中,建立视图用的命令是 < >.A.CREATE SCHEMAB.CREATE TABLEC.CREATE VIEWD.CREATE INDEX10.在MS SQL Server中,用来显示数据库信息的系统存储过程是< >.A. sp_dbhelpB. sp_dbC. sp_helpD. sp_helpdb三、填空题<每空1分,共20分>1.数据库三个要素是__________、__________和_____________.2. 语句 select year<'1931-9-18'> 的执行结果是____________.3.__________是指保证指定列的数据具有正确的数据类型、格式和有效的数据范围.4.__________是特殊类型的存储过程,它能在任何试图改变表中由触发器保护的数据时执行.5.事务<Transaction>可以看成是由对数据库的若干操作组成的一个单元,这些操作要么______,要么________<如果在操作执行过程中不能完成其中任一操作>.6. SQL Server 2000 采用的身份验证模式有________________模式和________模式.7.用户访问SQL Server数据库时,经过了两个_______验证和________验证安全验证阶段.8.SQL Server 2000提供的数据库备份方法有_______数据库备份和________数据库备份、____________备份和________________备份.9.SQL Server代理主要由______、______和警报来组成.10.SQL Server复制把服务器分为______服务器、______服务器和订阅服务器三种. 五、设计题<1—6题每空2分,第7题10分,共40分>1.计算1+2+3+……+100的和,并使用PRINT显示计算结果.DECLARE I int,sum int,csum char<10>SELECT I=1,sum=0WHILE I<=________BEGINSELECT sum= __________SELECT I=I+1ENDSELECT csum=convert<char<10>,sum>__________ ’1+2+3+……+100=’+ csum2.使用SQL语句创建一个班级表CLASS,属性如下:CLASSNO,DEPARTNO,CLASSNAME;类型均为字符型;长度分别为8、2、20且均不允许为空.CREATE ________ CLASS<CLASSNO ______<8> NOT NULL,DEPARTNO CHAR <2> NOT NULL,CLASSNAME CHAR <____> NOT NULL〕3.声明一个名为CRSCOURSE的游标,并利用游标遍历,显示整个结果集.USE XKDECLARE COUNO VARCHAR<3>,COUNAME VARCHAR<20>_________________________FORSELECT COUNO,COUNAME FROM COURSE ORDER BY COUNO_________________________FETCH NEXT FROM CRSCOURSE INTO COUNO,COUNAMEWHILE FETCH_STATUS=0BEGINPRINT ’课程号:’+ COUNO +’课程名称:’+ CouNameFETCH NEXT FROM CRSCOURSE INTO COUNO,COUNAMEEND_________________________DEALLOCATE CRSCOURSSE4.使用SQL语句在XK数据库中创建一个名为V_STUDENT的视图,该视图仅查看"STUDENT"表中"00电子商务"班的学生信息.USE XKCREATE ____________ V_STUDENTASSELECT *FROM ____________WHERE CLASSNO=’20000001’5.使用SQL语句在XK数据库中创建一个名为P_STUDENT的存储过程,该存储过程返回"STUDEND"表中所有班级代码为200000001的记录.USE XKCREATE ____________ P_STUDENTASSELECT *____________ STUDENTWHERE CLASSNO=’20000001’6.创建触发器TEST,要求每当在STUDENT表中修改数据时,将向客户端显示一条"记录已修改"的消息.USE XK_________________ON STUDENT_________________ASPRINT ‘记录已修改’7.定义事务向[学生]数据库的[选课表]中插入学号=‘20030021’的多条记录,并检验若报名课程超过4门,则回滚事务,即报名无效,否则成功提交.选课表<学号,课号,报名号>假设要插入的记录为以下三条:‘20030021’,‘01’,1 ‘20030021’,‘02’,2 ‘20030021’,‘03’,3根据以上要求编写程序,并指出本题定义的事务是否成功提交.《SQL数据库管理与开发教程与实训》试题<D卷>参考答案一、单项选择题1.D 2.A 3.D 4.D 5.C 6.C 7.D 8.D 9.C 10.D二、判断题1.N 2.N 3.N 4.Y 5.Y 6.N 7.Y 8.N 9.Y 10.N三、填空题1.数据结构、数据操作、完整性约束2.19313.域完整性4.触发器5.都完成、都取消6.Windows身份验证、混合7.身份、权限8.完整、差异、事务日志、文件和文件组9.操作员、作业10.发布、分发五、设计题1.100 sum+i print2.table char 203.Declare crscourse cursoropen crscourseclose crscourse4.viewstudent5.procedurefrom6.Alter trigger testfor update7.Use 学生Begin transactionInsert 选课表<学号,课程号,报名号> values<‘20030021’,‘01’,1>Insert 选课表<学号,课程号,报名号> values<‘20030021’,‘02’,2>Insert 选课表<学号,课程号,报名号> values<‘20030021’,‘03’,3>Declare num intSet num=<select count<*> from 选课表 where 学号=‘20030021’>If num>4beginRollback transactionPrint ‘超过报名门数!’endElseBeginmit transactionPrint ‘报名成功!’endgo本题定义的事务成功提交.《SQL数据库管理与开发教程与实训》试题<E卷>刘占文老师三、填空题<每空1分,共20分>1.SQL语言主要由组成.2.SQLServer2000采用的身份验证模式有Windows身份验证模式和_________模式.3.语句 SELECT<7+3>*4-17/<4-<8-6>>+99%4的执行结果是_____________.4. ________是由一个或多个数据表〔基本表〕或视图导出的虚拟表.5._____________用于保证数据库中数据表的每一个特定实体的记录都是惟一的.6.索引的类型有______________和非聚集索引.7._________是已经存储在SQL Server服务器中的一组预编译过的Transact-SQL语句.8.触发器定义在一个表中,当在表中执行________、________或delete操作时被触发自动执行.9.事务的ACID属性是指________性、________性、_______性和_______性.10.数据库管理系统的安全性通常包括两个方面,一是指数据________的安全性,二是指数据_______的安全性.11.SQL Server代理主要由________、操作员和________来组成.12.SQL Server复制有快照复制、________复制和________复制3种类型.五、设计题<每小题5分,共40分>现有关系数据库如下:数据库名:学生成绩数据库用SQL语言实现下列功能的sql语句代码:1.创建数据库[学生成绩数据库]代码<2分>;2.创建[课程表]代码<2分>;课程表<课号 char<6>,名称>要求使用:主键<课号>、非空<名称>3.创建[学生表]代码<2分>;学生表<学号 char<6>,##,性别,民族>要求使用:主键<学号>、默认<民族>、非空<民族,##>、检查<性别>4.创建[成绩表]代码<2分>;成绩表<学号,课程号,分数>要求使用:外键<成绩表.学号,成绩表.课程号>、检查<分数>5.将下列课程信息添加到课程表中课号课程名称100001 大学语文100002 大学英语6.写出创建成绩表视图<学号,##,课程号,课程名称,成绩>的代码;7.写出创建分数存储过程用于计算某门课程成绩最高分、最低分、平均分8.检索姓李的女同学的信息:##、性别、民族.9.设置SQL身份验证的账户:登录名:U领导密码:888数据库用户名:U读者权限:可查询查询本数据库中所有表的数据.10.《SQL数据库管理与开发教程与实训》试题<E卷>参考答案一、单项选择题1.C 2.A 3.D 4.D 5.B 6.C 7.A 8.D 9.B 10.D二、判断题1.N 2.Y 3.Y 4.N 5.N 6.Y 7.Y 8.N 9.N 10.Y三、填空题1.数据定义语言<DDL>、数据操作语言<DML>2.混合3.354.视图5.实体完整性6.聚集索引7.存储过程8.insert、update9.原子、一致、独立、持久10.访问、运行11.作业、警报12.事务、合并五、设计题1.create database [学生成绩数据库]gouse [学生成绩数据库]go2. create table课程表<[课程号] char<6> primary key,[课程名称] char<40> not null[任课教师] char<4>>3. create table 学生表<[学号] char<6> primary key,[##] nchar<4> not null,[性别] nchar<1> check<[性别] in <'男', '女'>>,[民族] nchar<8> default '汉族' not null>4. create table成绩表<[学号] char<6> references 学生表<学号>,[课程号] char<6> references 课程表<课号>,[成绩] integer check<[成绩] between 0 and 100>>5.insert 课程表 values<'100001', '大学语文'>insert 课程表 values<'100002', '大学英语'>insert 课程表 values<'100003', '西班牙语'>6.create view [成绩表视图] asselect 学号,##,课程号,课程名称,成绩 from 成绩表,学生表where 成绩表.学号=学生表.学号select 学号,##,课程号,课程名称,成绩 from 成绩表 join 学生表on 成绩表.学号=学生表.学号7.create procedure [分数]课程名 nchar<16> asselect 课程名称, 最高分=max<分数>、最低分=min<分数>、平均分=avg<分数> from 成绩表视图where 课程名称 = 课程名8.select ##, 性别, 民族 from 学生表 where ## like '李%' and 性别='女' 9.use [学生成绩数据库]exec sp_addlogin 'U领导', '888', '学生成绩数据库', '简体中文'exec sp_grantdbaccess 'U领导', 'U读者'exec sp_addrolemember 'db_datareader', 'U读者'10.Begin transactionInsert 成绩表<学号,课程号,分数> values<‘20030021’,’001’,80>Insert 成绩表<学号,课程号,分数> values<‘20030021’,’002’,90>Insert 成绩表<学号,课程号,分数> values<‘20030021’,’003’,80>Insert 成绩表<学号,课程号,分数> values<‘20030021’,’004’,70>Declare num intSet num=<select count<*> from 成绩表 where 学号=‘20030021’>If num>4Rollback transactionElsemit transactiongo《SQL数据库管理与开发教程与实训》试题<F卷>郭鲜凤老师一、单项选择题<每小题1分,共10分>1.SQL Server系统中的所有服务器级系统信息存储于哪个数据库〔〕.A. masterB. modelC. tempdbD. msdb2.下列标识符可以作为局部变量使用〔〕.A. MyvarB. My varC. @MyvarD. @My var3.以下关于主键的描述正确的是〔〕.A.标识表中唯一的实体B.创建唯一的索引,允许空值C.只允许以表中第一字段建立D.表中允许有多个主键4.为数据表创建索引的目的是〔〕.A.提高查询的检索性能B.创建唯一索引C.创建主键D.归类5.下列哪个不是sql 数据库文件的后缀.A..mdfB..ldfC..dbfD..ndf6.在SQL SERVER服务器上,存储过程是一组预先定义并〔〕的Transact-SQL语句.A.保存B.编译C.解释D.编写7.数据定义语言的缩写词为 < >.8.以下关于外键和相应的主键之间的关系,正确的是< >.A.外键并不一定要与相应的主键同名B.外键一定要与相应的主键同名C.外键一定要与相应的主键同名而且唯一D.外键一定要与相应的主键同名,但并不一定唯一9.在数据库设计中使用E-R图工具的阶段是< >.A.需求分析阶段B.数据库物理设计阶段C.数据库实施D.概念结构设计阶段10.在T-SQL语言中,修改表结构时,应使用的命令是〔〕A.UPDATEB. INSERTC. ALTERD. MODIFY三、填空题<每空1分,共30分>1. 目前最常用的数据库有层次数据库、_________数据库和_________数据库,其中_________数据库是目前应用最广泛的一种数据库.2. 关系数据模型的逻辑结构是__________,关系中的列称为________,行称为________.3. 关系数据库模型的数据操作主要包括插入、________、________和________数据.4. SQL、DCL和DML缩写词的意义是___________语言、___________语言和___________语言.5.实体之间的联系类型有三种,分别为________、________和________.6.数据库系统的三级模式结构和两级数据映像确保了数据的________独立性和________独立性.7.SQL Server 2000提供的数据库备份方法有_______数据库备份和________数据库备份、____________备份和________________备份.8.SQL Server代理主要由______、______和_____来组成.9.SQL Server复制把服务器分为______服务器、______服务器和_____服务器三种.10.在SQL中,create view、alter view和drop view命令分别为________、________和________视图的命令.五.设计题<每小题5分,共40分>有一个[学生课程]数据库,数据库中包括三个表:学生表:Student由学号<Sno>、##<Sname>、性别<Ssex>、年龄<Sage>、所在系<Sdept>五个属性组成,记为:Student<Sno,Sname,Ssex,Sage,Sdept>,Sno 为关键字.课程表:Course由课程号<o>、课程名<ame>、先修课号<Cpno>、学分<Ccredit>四个属性组成,记为: Course<o,ame,Cpno,Ccredit> o为关键字.成绩表:SG由学号<Sno>、课程号<o>、成绩<Grade>三个属性组成,记为:SG<Sno,o,Grade> <SNO, O> 为关键字.用SQL语言实现下列功能:1.建立学生表[Student],其中学号属性不能为空,并且其值是唯一的.2.查考试成绩有不与格的学生的学号.3.将学号为05001学生的年龄改为22岁.。
SQL-Server实验答案上海师范大学计算机系目录第一部分企业管理器的使用 (3)试验一注册服务器.................................................................................. 错误!未定义书签。
试验二创建数据库.................................................................................. 错误!未定义书签。
试验三创建表.......................................................................................... 错误!未定义书签。
实验四数据输入...................................................................................... 错误!未定义书签。
实验五登录到数据库服务器.................................................................. 错误!未定义书签。
第二部分SQL语言 (3)第二部分SQL语言 (3)试验一数据库创建 (3)试验二创建表 (3)试验三创建数据完整性 (5)试验四数据完整性试验 (6)试验五索引 (10)试验六更新数据 (11)试验七 Sql 查询语句 (12)试验八视图 (15)试验九安全性控制实验 (16)试验十存储过程 (17)试验十二触发器 (21)试验十二恢复技术 (25)试验十三事务 (26)试验十四锁 (27)第一部分企业管理器的使用第二部分SQL语言试验一数据库创建目的:1掌握利用SQL语言进行数据库的创建、维护。
2 sp_helpdb 命令要求:1 创建数据库 2 修改数据库 3 删除数据库一建立school 数据库1 使用查询分析器创建数据库 schoolCreate DataBase school2 使用 SP_helpdb 查询数据库 School 的信息3 使用SQL-Server 的企业管理器查看数据库 school 的信息。
sql_server实验指导课后答案一、实验目的1、掌握SQL Server的安装及配置;2、掌握SQL Server的基本操作;3、掌握SQL Server的数据库管理;4、掌握SQL Server的数据库设计;5、掌握SQL Server的数据库查询;6、掌握SQL Server的数据库维护;7、掌握SQL Server的数据库安全管理。
二、实验内容1、安装SQL Server首先,我们需要下载SQL Server安装文件,然后双击安装文件,按照提示安装SQL Server,安装完成后,我们就可以使用SQL Server了。
2、配置SQL Server在安装完成后,我们需要配置SQL Server,配置SQL Server的方法有很多,比如设置SQL Server的安全性、设置SQL Server的连接属性、设置SQL Server的数据库文件位置等等。
3、基本操作在配置完成后,我们就可以使用SQL Server进行基本操作了,比如创建数据库、创建表、插入数据、更新数据、删除数据等等。
4、数据库管理在使用SQL Server进行基本操作后,我们还可以使用SQL Server进行数据库管理,比如创建视图、创建存储过程、创建触发器等等。
5、数据库设计在使用SQL Server进行数据库管理后,我们还可以使用SQL Server进行数据库设计,比如设计数据库模式、设计数据库索引、设计数据库视图等等。
6、数据库查询在使用SQL Server进行数据库设计后,我们还可以使用SQL Server进行数据库查询,比如使用SELECT语句查询数据、使用JOIN语句查询数据、使用GROUP BY语句查询数据等等。
7、数据库维护在使用SQL Server进行数据库查询后,我们还可以使用SQL Server进行数据库维护,比如备份数据库、恢复数据库、优化数据库等等。
8、数据库安全管理在使用SQL Server进行数据库维护后,我们还可以使用SQL Server进行数据库安全管理,比如设置用户权限、设置数据库安全策略、设置数据库审计等等。
--以默认方式创建stu001数据库create database stu001--打开stu001数据库use stu001--创建学生表XScreate table xs(学号char(7)not null primary key,姓名char(8)not null,性别bit not null default 1,出生日期smalldatetime not null,班级char(5)default'41021',总学分tinyint default 0,备注text null)--创建课程表KCcreate table kc(课程号char(3)not null primary key,课程名char(20)not null,开课学期tinyint not null default 1 check(开课学期>=1 and开课学期<9 ),学分tinyint not null default 0,学时tinyint not null)--创建学生与课程表xs_kccreate table xs_kc(学号char(7)not null references xs(学号),课程号char(3)not null references kc(课程号),成绩tinyint null default 0 check(成绩>=0 and成绩<=100),学分tinyint null default 0primary key(学号,课程号))--修改学生情况表(XS)的“出生日期”字段,使其数据类型改为datetime,且允许为空use stu001alter table xsalter column出生日期datetime null--删除学生与课程表(XS_KC)中的“学分”字段alter table xs_kc drop constraint DF__xs_kc__学分__0AD2A005alter table XS_kc drop column学分--修改学生情况表(XS),删除“班级”字段,增加一“专业”字段(varchar(20), 默认值为“计算机”)alter table xs drop constraint DF__xs__班级__7E6CC920alter table xs drop column班级alter table xs add专业varchar(20)default'计算机'--向数据库STUxxxx的XS表、KC表和XS_KC表中插入或修改成数据insert into xs(学号,姓名,性别,出生日期,专业,总学分,备注)values('4102101','王林',1,'1983-1-23','计算机',40,NULL)insert into xs(学号,姓名,性别,出生日期,专业,总学分,备注)values('4102102','吴荣华',0,'1984-3-28','计算机',44,NULL)insert into xs(学号,姓名,性别,出生日期,专业,总学分,备注)values('4202103','张强',1,'1981-11-19','电子',null,NULL)insert into xs(学号,姓名,性别,出生日期,专业,总学分,备注)values('4202110','王向荣',1,'1980-12-9','电子',50,NULL)insert into xs(学号,姓名,性别,出生日期,专业,总学分,备注)values('4202221','李丽',0,'1982-7-30','电子',null,NULL)insert into xs(学号,姓名,性别,出生日期,专业,总学分,备注)values('4302101','刘明',1,'1982-10-18','自控',38,NULL)insert into xs(学号,姓名,性别,出生日期,专业,总学分,备注)values('4402130','叶凡',1,'1983-11-18','数学',46,'转专业学习')insert into kc(课程号,课程名,开课学期,学时,学分)values('101','计算机基础',1,48,3)insert into kc(课程号,课程名,开课学期,学时,学分)values('102','C语言',2,80,5) insert into kc(课程号,课程名,开课学期,学时,学分)values('103','数据库',4,64,4) insert into kc(课程号,课程名,开课学期,学时,学分)values('201','离散数学',6,64,4)insert into kc(课程号,课程名,开课学期,学时,学分)values('202','计算机网络',7,64,4)insert into kc(课程号,课程名,开课学期,学时,学分)values('301','软件工程',6,64,4)insert into xs_kc(学号,课程号,成绩)values('4102101','101',80)insert into xs_kc(学号,课程号,成绩)values('4102101','102',89)insert into xs_kc(学号,课程号,成绩)values('4102101','103',78)insert into xs_kc(学号,课程号,成绩)values('4102102','101',57)insert into xs_kc(学号,课程号,成绩)values('4102102','102',67)insert into xs_kc(学号,课程号,成绩)values('4202103','103',90)insert into xs_kc(学号,课程号,成绩)values('4202110','101',85)insert into xs_kc(学号,课程号,成绩)values('4202110','102',91)insert into xs_kc(学号,课程号,成绩)values('4202221','101',69)insert into xs_kc(学号,课程号,成绩)values('4402130','101',78)insert into xs_kc(学号,课程号,成绩)values('4402130','103',74)--(一)简单查询--1.查询XS表中各个同学的所有信息。
SQLSERVER2008实用教程实验参考答案(实验4)实验4 数据库的查询和视图一、SELECT语句的基本使用1. 查询Employees表中所有数据2. 查询Employees表中指定字段数据3. 查询Employees表中的部门号和性别,要求使用Distinct消除重复行4. 使用WHERE子句查询表中指定的数据查询编号为’000001’的雇员的地址和电话查询月收入高于2000元的员工号码查询1970年以后出生的员工的姓名和住址5. 使用AS子句为表中字段指定别名查询Employees表中女雇员的地址和电话,并将列标题显示为地址和电话查询Employees表中男雇员的姓名和出生日期,并将列标题显示为姓名和出生日期6. 使用使用CASE子句查询Employees表中员工的姓名和性别,要求Sex值为1时显示“男”,为0时显示“女”查询Employees表中员工的姓名、住址和收入水平,2000元以下显示为低收入,2000~3000地显示为中等收入,3000元以上显示为高收入。
7. 使用SELECT语句进行简单计算计算每个雇员的实际收入8. 使用内置函数获得员工总数计算Salary表中员工月收入的平均数获得Employees表中最大的员工号码计算Salary表中所有员工的总支出查询财务部雇员的最高和最低实际收入9. 模糊查询找出所有姓王的雇员的部门号找出所有地址中含有“中山”的雇员的号码及部门号找出员工号码中倒数第二个数字为0的员工的姓名、地址和学历10. Between…And…和Or的使用找出收入在2000~3000元之间的雇员编号找出部门为“1”或“2”的雇员的编号11. 使用INTO子句,由源表创建新表由表Salary创建“SalaryNew”表,要求包括编号和收入,选择收入在1500元以上的雇员由表Employees创建“EmployeesNew”表,要求包括编号和姓名,选择所有男员工二、子查询的使用1. 查找在财务部工作的雇员情况2. 用子查询的方法查找所有收入在2500以下的雇员的情况3. 查找财务部年龄不低于研发部雇员年龄的雇员姓名4. 用子查询的方法查找研发部比所有财务部雇员收入都高的雇员的姓名5. 查找比所有财务部的雇员收入都高的雇员的姓名6. 用子查询的方法查找所有年龄比研发部雇员年龄都大的雇员的姓名三、连接查询的使用1. 查询每个雇员的情况及薪水的情况2. 查询每个雇员的情况及其工作部门的情况3. 使用内连接的方法查询名字为“王林”的雇员所在的部门4. 使用内连接的方法查找出不在财务部工作的所有雇员信息5. 使用外连接方法查找出所有员工的月收入6. 查找财务部收入在2000元以上的雇员姓名及其薪水详情7. 查询研发部在1976年以前出生的雇员姓名及其薪水详请四、聚合函数的使用1. 求财务部雇员的平均收入2. 查询财务部雇员的最高和最低收入3. 求财务部雇员的平均实际收入4. 查询财务部雇员的最高和最低实际收入5. 求财务部雇员的总人数6. 统计财务部收入在2500元以上的雇员人数五、GROUP BY、ORDER BY子句的使用1. 查找Employees表中男性和女性的人数2. 按部门列出在该部门工作的员工的人数3. 按员工的学历分组,排列出本科、大专、硕士的人数4. 查找员工数超过2的部门名称和雇员数量5. 按员工的工作年份分组,统计各个工作年份的人数,例如工作1年的多少人,工作2年的多少人6. 将雇员的情况按收入由低到高排列7. 将员工信息按出生时间从小到大排列8. 在ORDER BY 子句中使用子查询,查询员工姓名、性别和工龄信息,要求按实际收入从大到小排列六、视图的使用1. 创建视图(1)在数据库YGGL上创建视图Departments_View,视图包含Department表的全部列(2)创建视图Employees_Departments_View,视图包含员工号码、姓名、所在部门名称(3)创建视图Employees_Salary_View,视图包含员工号码、姓名和实际收入三列2. 查询视图从视图Employees_Salary_View中查询出姓名为“王林”的员工的实际收入3. 更新视图(1)向视图Departments_View中添加一条记录(‘6’,‘广告部’,‘广告业务’)执行完命令后,分别查看Departments_View和Department表中发生的变化(2)尝试向Employees_Departments_View中添加一条记录,看看会发生什么情况(3)尝试向Employees_Salary_View中添加一条记录,看看会发生什么情况(4)将视图Departments_View中,部门号为‘6’的部门名称修改为‘生产车间’(5)删除视图Departments_View中最新增加的的一条记录4. 删除视图Employees_Departments_View5. 在界面工具中操作视图一、SELECT语句的基本使用1. 查询Employees表中所有数据SELECT*FROM Employees;2. 查询Employees表中指定字段数据SELECT EmployeeID,Name,DepartmentID FROM Employees;3. 查询Employees表中的部门号和性别,要求使用Distinct消除重复行SELECT Distinct DepartmentID,Sex FROM Employees;4. 使用WHERE子句查询表中指定的数据查询编号为’000001’的雇员的地址和电话Select Address,PhoneNumber FROM Employees WHERE EmployeeID='000001';查询月收入高于2000元的员工号码SELECT EmployeeID FROM Salary WHERE InCome>2000;查询1970年以后出生的员工的姓名和住址SELECT Name,Address FROM Employees WHERE YEAR(Birthday)>'1970'; SELECT Name,Address FROM Employees WHERE Birthday>'1970';5. 使用AS子句为表中字段指定别名查询Employees表中女雇员的地址和电话,并将列标题显示为地址和电话SELECT Address AS地址,PhoneNumber AS电话FROM Employees;查询Employees表中男雇员的姓名和出生日期,并将列标题显示为姓名和出生日期SELECT Name AS姓名,Birthday AS出生日期FROM Employees WHERE Sex=1;6. 使用使用CASE子句查询Employees表中员工的姓名和性别,要求Sex值为1时显示“男”,为0时显示“女”SELECT Name AS姓名,CASEWHEN Sex=1 THEN'男'WHEN Sex=0 THEN'女'ENDAS性别FROM Employees;查询Employees表中员工的姓名、住址和收入水平,2000元以下显示为低收入,2000~3000地显示为中等收入,3000元以上显示为高收入。