sql考试复习材料.doc
- 格式:doc
- 大小:106.50 KB
- 文档页数:11
《SQL SERVER数据库应用》复习资料一、考试题型及分数比例1、单项选择题(每空2分,共40分)2、填空题(每空1分,共20分)3、简答题(每题5分,共10分)4、综合应用题(每题10分,共30分)二、复习题下面按章给出第1章—第10章的复习题。
第1章数据库基础概述一、单项选择题1.数据库系统管理阶段的主要优点表现在______。
(A)数据共享性高(B)数据冗余度低(C)数据与程序的独立性高(D)以上全对答案:A2. SQL Server是一种基于______的数据库管理系统软件。
(A)层次模型(B)网状模型(C)关系模型(D)数据模型答案:C3.数据操纵语言(DML)提供用户对数据库进行数据的查询和处理操作,在SQL Server 中,通常不包括________语句。
(A)Insert (B)Update (C)Delete (D)Create答案:D4.________的主要任务是决定数据库的内容,对数据库进行修改和维护,对数据库的运行状态进行监督,并且管理用户帐号、备份和恢复数据库以及提高数据库的运行效率。
(A)系统管理员(B)数据库管理员(C)应用程序员(D)操作员答案:B5.,一个表的主键(Primary Key)是由一个或多个字段组成,其值具有唯一性,而且不允许为空(NULL),其主要作用是________。
(A)唯一地标识表中的每条记录(B)自动生成标识数据(C)快速实现记录定位(D)以上都不对答案:A6.一个数据库可能包含多个表,一般通过______使这些表之间关联起来。
(A)热键(B)快速键(C)外键(D)快捷键答案:C7.在关系数据库系统中,设计表时可对表中的一个字段或多个字段的组合设置约束条件,让DBMS检查数据是否符合约束条件,约束一般可以分为________。
(A)表级约束和字段级约束(B)主键约束和外键约束(C)唯一性约束和检查约束(D)缺省约束和空值约束答案:A8.主键约束(Primary Key)和唯一性约束(UNIQUE)都可以保证表中记录不重复,二者主要区别是________。
(一)SQL概述1.SQL的基本概况1)含义:SQL是structured query languge的缩写,它是关系数据库的标准数据语言,所有的关系数据库管理系统都支持。
2)功能:数据查询、数据操作和数据定义2.特点1)一体化:包括数据定义、查询和操作等方面功能,可以完成数据库活动中的全部工作;2)高度非过程化:只需告诉计算机用户“做什么”,SQL便可自动完成全部工作;3)非常简洁:只有为数不多的几条命令组成;4)它可以直接以命令方式使用,也可以嵌入到程序设计语言中以程序方式使用。
3.主要短语及其含义1)select-说明要查询的数据2)from-说明查询的数据来自哪些表,可对单表或多表进行查询3)where-说明查询条件,即选择元组的条件4)group by-用于对查询进行分组,可用它对数据进行分组汇总5)having-必须跟group by短语一起使用,用来限定分组必须满足的条件6)order by-用来对查询的结果进行排序.简单查询1)适用范围:即单表查询,查询的字段信息和查询条件都来自于同一张表2)语法格式:select 字段名1,…字段名n from 表名 where 条件式3)查询细节:ü distinct 去掉查询结果中的重复值ü若查询某张表的全部字段,则可把select后的字段名全部用通配符*代替即可ü union并运算可把两个select语句的查询结果合并成一个查询结果(要求是两个查询结果要具有相同的字段个数,并且对应字段的值要出自同一个值域,即具有相同的数据类型和取值范围)ü查询去向:into array 数组名——将查询结果存放于数组中into cursor 临时表文件名——将查询结果存放于临时只读文件,关闭时自动删除into dbf/table 自由表文件名——将查询结果存放于永久表中to file 文本文件名——将查询结果存放于文本文件中2.简单的联接查询1)适用范围:查询的字段信息或条件来自于多张表2)语法格式:select 字段名1,…字段名n from 表名1,…表名n where 联接条件and 其他条件3.嵌套查询1)适用范围:查询的字段信息出自于同一张表,而查询条件出自于其他表2)语法格式:select 字段名1,…字段名n from 表名1 where 外部关键字 in (select 外部关键字 from 表名2 where 条件)3)查询细节:ü几个特殊的运算符:between…and…用于查询满足某个值域范围内的记录;like用于查询与指定字段值相匹配的记录(like后所指定的字段值一定是个字符型数据;通配符%表示0个或多个字符,“_”只表示一个字符)ü排序:order by 字段名1 asce/desc,…字段名n asce/desc注意:系统默认升序,asce可省略,允许按一个或多个字段对查询结果排序ü简单计算查询:count()-计数 sum()-求和,所指字段是N型 avg()-求平均数,所指字段是N型 max()-求最大值,所指字段是N型min()-求最小值,所指字段是N型ü分组与计算查询:group by 字段名1,…字段名n having 条件表达式(注意:having 必须和group by一起使用,因为它是对分组后的结果进一步进行筛选,having条件和where 条件不矛盾,在select语句查询中是先用where子句限定元组,然后进行分组,最后再用having子句限定分组结果)ü利用空值查询:is null/is not nullü内外层互相嵌套查询:内层查询的条件需要外层查询提供值,而外层查询的条件需要内层查询的结果ü使用量词和谓词的查询:表达式运算符 any/some/all(select子查询)——其中any和some表任意一个,all 表示全部[not] exists(select子查询)——exists表示存在ü虚字段:即原表中并无此字段,是通过函数或者表达式计算所得出的字段名;其格式为:表达式/函数 as 虚字段名ü显示部分结果:top 表达式[percent] order by 字段名1,…字段名n注意:不使用percent时,在1-32767之间取值,说明显示前几条记录使用percent时,则在0.01-99.99之间取值,说明显示前百分之几的记录并且top短语要与order by短语同时使用才有效4.内联接查询:超级联接查询的一种1)适用范围:查询的字段名或查询条件来自于多张表2)语法格式:select 字段名1,…字段名n from 表名1 inner join 表名2 on 联接条件 where 条件(三)SQL的操作功能1.插入功能1)标准格式:insert into 表名(字段名1,…字段名n)values(字段值1,…字段值n)注意:此命令格式表示向表中插入记录,当插入的不是完整的记录时必须指明字段2)特殊格式:insert into 表名 from array 数组名注意:此命令格式表示从指定的数组向表中插入记录2.更新功能1)格式:update 表名 set 字段名1=表达式1,…字段名n=表达式n where 条件式注意:使用where表示更新满足条件的记录,不使用where则更新全部记录2)注意update命令与replace命令的区别:² update可对一表和多表操作,replace只能对当前一表操作² update用where接条件表达式,replace用for接条件表达式² update用=接表达式,replace用with接表达式² update用set接字段名,replace的字段名前不加set² update不用where子句就可更新全部记录,replace有all无for条件才是更新全部记录3.删除功能1)格式:delete from 表名 where 条件注意:此命令表示逻辑删除表中相应的记录,有where条件时表示逻辑删除表中满足条件的记录2)本格式可用于一表与多表,而delete for条件则只可用于当前表(四)SQL的定义功能1.表的定义,即建立表1)格式:create table 表名(字段名1 字段类型(宽度),…字段名n 字段类型(宽度))2)注意:2.表的删除1)格式:drop table 表文件名2)注意:3.表结构的修改1)添加/删除表中字段:alter table 表名 add/drop column 字段名字段类型(宽度)注意:只能一次添加一个字段,并且如果是删除字段则不需要写宽度2)修改字段类型及宽度:alter table 表名 alter 字段名新类型(新宽度)3)更新字段名:alter table 表名 rename column 原字段名 to 新字段名4)修改字段有效性:alter table 表名 alter column 字段名[null/not null][set default 表达式][set check 逻辑表达式[error 字符表达式]]alter table 表名 alter column 字段名[drop default][drop check]5)添加/删除表中表中索引:alter table 表名 add primary key/unique字段名 tag 索引名注意:primary key是主索引;unique是候选索引。
题型:填空(10’),单选(10’),判断(10’),简答题(30’),程序设计(40’):表中数据操作(30’)5-6章程序修改(10’)视图1.数据库系统(DBS)包括数据库(DB/database),数据库管理系统(DBMS),数据库管理员(BDA)。
2.数据库是长期存储在计算机内、有组织的、可共享的、统一管理的相关数据的集合。
3.数据模型分为层次模型,网状模型,关系模型。
4.实体联系模型主要要素:实体(矩形框表示),联系(菱形框表示),属性(椭圆形表示)。
5.联系的类型:“一对一(1:1)”,“一对多(1:n)”,“多对多(n:n)”。
6.关系范式:第一范式(基本),第二范式,第三范式(必须满足),BC范式,第四范式,第五范式。
7.SQL是标准的关系数据库操作语言。
8.SQL语言包括数据查询语言(Data Retrieval)、数据操作语言(DML)、数据定义语言(DDL)、数据控制语言(DCL)和事务控制语言(Transaction Control)。
9.系统数据库:master 、model 、msdb 、tempdb 。
10.数据文件包括:①主数据文件(.mdf , 数据库中只能含有一个);②次数据文件(.ndf ,可以有0~n个)。
11.SQL Server 遵循先写日志(.ldf)后操作。
12.视图被定义后便存储在数据中,通过视图看到的数据只是存放在基表中的数据。
党对通过视图看到的数据修改时,相应的基表的数据已发生变化。
当对基表的数据发生变化时,变化也尝自动反映在视图中。
13.视图的优点:①集中用户使用的数据;②屏蔽数据库的复杂性。
14.索引的类型:①聚集索引;②非聚集索引。
15.数据完整性分为4种类型:实体完整性、域完整性、引用完整性和用户自定义完整性。
16.主键约束(PRIMARY KEY)是在表中定义一个主键来唯一确定表中的每一行记录。
主键可以定义在单列上,也可以在多列上。
1.数据处理三个阶段: 人工管理阶段,文件系统阶段和数据库系统阶段2.数据库系统的组成: DBS是指在计算机系统中引入数据库后的系统构成,有计算机硬件、操作系统、DBMS、DB、应用程序和用户、以及数据库开发和管理人员等组成.3.数据模型中的基本概念以及实体的联系数据模型是数据库系统的核心和基础,任何DBMS都支持一种数据模型.任何一种数据模型都规定了一种数据结构,也即信息世界中的实体和实体间联系的表示方法.数据结构描述了系统的静态特性,是数据模型最本质的内容.数据模型还必须规定对其中数据可以执行的操作及操作规则.数据操作描述了系统的动态特性.对数据库的操作主要有数据维护和数据检索两大类,包括操作名、含义、规则等.数据模型还必须提供定义完整性约束条件的手段,并在操作中自动检查之.4.DBMS所支持的主要数据模型层次模型,网状模型,关系模型,面向对象模型. 关系模型占统治地位5.关系模型的组成:数据结构,数据操作和完整性约束.6.三类完整性约束:实体完整性,参照完整性,用户定义的完整性7.数据库系统中数据的三级模式结构:外模式,模式,内模式.9. DBMS的主要功能:1)数据库的定义、建立和维护功能。
2)数据存取功能。
3)数据库运行管理功能。
10. 数据库设计的一般策略:自顶向下合自底向上。
11. 数据库设计的步骤:1)用户需求分析。
2)信息分析和定义(概念设计),包括:视图模型化,视图分析和记总。
3)设计实现(逻辑设计),包括:模式初始设计、子模式设计、应用程序设计、模式评价、模式求精。
4)物理设计。
12. 数据库设计的主流方法:1)E-R模型加规范化关系的方法。
2)数据元素图加规范化关系的方法。
13. 5个阶段主要目标:数据库结构设计五个阶段:需求描述与分析、概念结构设计、逻辑结构设计、物理结构设计、数据库调试评价与维护。
主要目标:满足数据库中数据处理的要求,将数据和功能两方面的需求分析、设计和实现在各个阶段同时进行,相互参照和补充。
SQL复习题(附部分答案)⼀、单选题1.根据关系数据基于的数据模型——关系模型的特征判断下列正确的⼀项:(___)A.只存在⼀对多的实体关系,以图形⽅式来表⽰。
B.以⼆维表格结构来保存数据,在关系表中不允许有重复⾏存在。
C.能体现⼀对多、多对多的关系,但不能体现⼀对⼀的关系。
D.关系模型数据库是数据库发展的最初阶段。
答案[B]2、在“连接”组中有两种连接认证⽅式,其中在(___)⽅式下,需要客户端应⽤程序连接时提供登录时需要的⽤户标识和密码。
A、Windows⾝份验证B、SQL Server ⾝份验证C、以超级⽤户⾝份登录时D、其他⽅式登录时答案[B]3、关系数据库中,主键是(___),当运⽤Transact-SQL语句创建主键时,可以是(__)。
⑴ A、为标识表中唯⼀的实体 B、创建唯⼀的索引,允许空值C、只允许以表中第⼀字段建⽴D、允许有多个主键的⑵ A、create table table1(column1 char(13) not null primary key,column2 int not on primary key;B、alter table table1 with nocheck addconstraint [PK_table1] primary key nonclustered ( column1) on primary;C、alter table table1 column1 primary key ;答案[ A C]4、视图是⼀种常⽤的数据对象,可以简化数据库操作,当使⽤多个数据表来建⽴视图时,不允许在该语句中包括(___)等关键字。
A、ORDER BY,COMPUTEB、ORDER BY,COMPUTE,COMPUTR BYC、ORDER BY,COMPUTE BY,GROUP BYD、GROUP BY,COMPUTE BY答案[B ]5、在Transact-SQL语法中,SELECT语句的完整语法较复杂,但⾄少包括的部分(_1_),使⽤关键字(_2_)可以把重复⾏屏蔽,将多个查询结果返回⼀个结果集合的运算符是(_3__),如果在SELECT语句中使⽤聚合函数时,可以在后⾯使⽤⑴ A、SELECT,INTO B、SELECT,FROMC、SELECT,GROUPD、仅SELECT⑵ A、DISTINCT B、UNION C、ALL D、TOP⑶ A、JOIN B、UNION C、INTO D、LIKE⑷ A、GROUP BY B、COMPUTE BY C、HAVING D、COMPUTE 答案[B A B A ]6、SQL Server 2008是⼀个()的数据库系统。
SQL 数据库基础考试(答案见尾页)一、选择题1. SQL 中的哪个关键字用于指定查询结果的排序?A. ORDER BYB. GROUP BYC. DISTINCTD. HAVING2. 在 SQL 中,用于计算两个日期之间相差的天数的函数是什么?A. DATEADDB. DATEDIFFC. TIMESTAMPDIFFD. AVG3. SQL 中的哪个操作符用于修改现有数据?A. INSERTB. UPDATEC. DELETED. CREATE4. 在 SQL 中,用于从表中选择所有列的子查询是哪种类型?A. 单行子查询B. 多行子查询C. 子查询D. 嵌套子查询5. SQL 中的哪个关键字用于将查询结果保存到新表中?A. INSERT INTOB. CREATE TABLEC. SELECT INTOD. ALTER TABLE6. 在 SQL 中,用于限制查询结果数量的关键字是什么?A. LIMITB. OFFSETC. FETCHD. ORDER BY7. SQL 中的哪个操作符用于组合多个条件?A. ANDB. ORC. NOTD. BETWEEN8. 在 SQL 中,用于删除表中所有数据的命令是什么?A. DELETEB. DROPC. TRUNCATED. DELETE FROM9. SQL 中的哪个函数用于返回字符串的长度?A. LENGTHB. STRLENC. CHARACTER_LENGTHD. CONCAT10. 在 SQL 中,用于按列对查询结果进行分组的关键字是什么?A. GROUP BYB. ORDER BYC. DISTINCTD.HAVING11. SQL 中的哪一命令可以用来执行查询操作?A. SELECTB. INSERTC. UPDATED. DELETE12. 在 SQL 中,如果要修改表结构,应该使用哪一命令?A. ALTER TABLEB. CREATE TABLEC. DROP TABLED. REPLACE TABLE13. SQL 中的哪一命令可以用来创建一个新的数据表?A. CREATE TABLEB. ALTER TABLEC. DROP TABLED. REPLACE TABLE14. 在 SQL 中,假设你有一个名为 "students" 的表,可以通过哪一命令来查看学生的姓名和年龄?A. SELECT name, age FROM students;B. SELECT * FROM students;C. INSERT INTO students (name, age) VALUES ('张三', 20);D. DELETE FROM students WHERE age > 18;15. 在 SQL 中,如果要删除一个名为 "students" 的表,应该使用哪一命令?A. DROP TABLE students;B. DELETE TABLE students;C. CASCADE TABLE students;D. TRUNCATE TABLE students;16. SQL 中的哪一命令可以用来为表中的某一列设置默认值?A. ALTER TABLEB. CREATE TABLEC. MODIFY TABLED. ALTER COLUMN17. 在 SQL 中,如果要修改一个已存在的表的列名,应该使用哪一命令?A. ALTER TABLEB. CREATE TABLEC. MODIFY TABLED. ALTER COLUMN18. SQL 中的哪一命令可以用来排序查询结果?A. ORDER BYB. GROUP BYC. DISTINCTD. HAVING19. 在 SQL 中,假设你有一个名为 "orders" 的表,可以通过哪一命令来计算订单总金额?A. SELECT SUM(amount) FROM orders;B. SELECT AVG(amount) FROM orders;C. SELECT COUNT(orderID) FROM orders;D. SELECT MAX(amount) FROM orders;20. SQL 中的哪一命令可以用来插入一个新的记录到表中?A. INSERT INTOB. CREATEC. REPLACED. ALTER21. SQL 中的哪个关键字用于指定查询结果的排序方向?A. ORDER BYB. GROUP BYC. HAVINGD. DISTINCT22. 在 SQL 中,用于修改现有数据表结构的命令是?A. CREATE TABLEB. ALTER TABLEC. DELETE TABLED. DROP TABLE23. SQL 中的哪个函数用于返回当前日期和时间?A. NOW()B. CURRENT_DATE()C. LOCALTIME()D. DATE()24. 在 SQL 中,用于条件筛选的运算符是?A. =B. !=C. >D. <=25. SQL 中的哪个语句用于插入新的记录?A. INSERT INTOB. UPDATEC. DELETED. CREATE26. 在 SQL 中,用于删除表中所有记录的命令是?A. DELETE FROMB. DROP TABLEC. TRUNCATE TABLED. DELETE27. SQL 中的哪个运算符用于执行算术运算?A. +B. -C. *D. /28. 在 SQL 中,用于分组查询结果的运算符是?A. ORDER BYB. GROUP BYC. HAVINGD. DISTINCT29. 在 SQL 中,用于连接两个或多个表的运算符是?B. UNIONC. INTERSECTD. EXCEPT30. 在 SQL 中,如果要删除一个表,应该使用哪一命令?A. DROP TABLEB. DELETE TABLEC. TRUNCATE TABLED. DELETE31. SQL 中的哪一命令可以用来查看表的结构?A. DESCRIBE TABLEB. SHOW TABLESC. EXPLAIN TABLED. SELECT * FROM INFORMATION_SCHEMA.TABLES32. 在 SQL 中,如果要修改表中的数据,应该使用哪一命令?A. INSERTB. UPDATEC. DELETED. CREATE33. SQL 中的哪一命令可以用来从一个表复制数据到另一个表?A. INSERT INTO ... SELECTB. CREATE TABLE ... LIKEC. INSERT INTO ... VALUESD. DELETE FROM ... JOIN34. 在 SQL 中,如果要排序查询结果,应该使用哪一命令?A. ORDER BYB. GROUP BYC. HAVINGD. DISTINCT35. SQL 中的哪一命令可以用来限制查询结果的数量?B. OFFSETC. FETCHD. SKIP36. 在 SQL 中,如果要查看当前数据库,应该使用哪一命令?A. SHOW DATABASESB. USE DATABASEC. SELECT * FROM INFORMATION_SCHEMA.DATABASESD. DESCRIBE DATABASES37. SQL 中的哪一命令可以用来从表中检索所有列?A. SELECT *B. SELECT DISTINCT *C. SELECT ALL *D. SELECT *38. 在 SQL 中,哪种数据类型允许存储文本字符串?A. INTB. VARCHARC. DATED. TIME39. SQL 中的哪一命令可以用来修改现有表结构?A. CREATE TABLEB. ALTER TABLEC. DROP TABLED. REPLACE TABLE40. 在 SQL 中,哪种子查询可以在主查询中用作条件?A. 带有 EXISTS 的子查询B. 带有 IN 的子查询C. 带有 ANY 的子查询D. 带有 ALL 的子查询41. SQL 中的哪一命令可以用来删除表中的所有行?A. DELETEB. TRUNCATEC. DROPD. DELETE ALL42. 在 SQL 中,哪种类型的约束可以用来确保字段值不重复?A. 主键约束B. 外键约束C. 唯一约束D. 非空约束43. 在 SQL 中,哪种类型的约束可以用来限制字段值的取值范围?A. 主键约束B. 外键约束C. 唯一约束D. 检查约束44. 在 SQL 中,哪种命令可以用来插入新的记录?A. INSERT INTOB. REPLACE INTOC. DELETED. CREATE二、问答题1. 什么是数据库管理系统(DBMS)?2. 关系数据库模型有哪些类型?3. 什么是SQL语言?4. 什么是数据库事务?为什么事务很重要?5. 什么是数据库索引?索引有什么优点?6. 并发控制:索引有助于提高数据库系统的并发性能,避免多个并发事务之间的冲突。
一、填空题(每空1分,共10分)Select 的各子句的作用使用select语句检索行和列将 SELECT 与列标题和列计算一起使用将 DISTINCT 与 SELECT 一起使用(避免检索重复标题)使用 SELECT INTO 创建表使用相关子查询Create table语句中各类约束条件的实现关键字Primary key约束 foreign key约束 check约束 default约束 unique约束在DML触发器中,DML命令操作的数据保存在哪里deleted 和inserted 逻辑(概念)表怎么判断查询结果是否为空。
怎么判断某值X是否为空怎么实现表连接存储过程形参的定义形式数据完整性有几种实体完整性域完整性引用完整性用户自定义完整性怎么实现级联修改CASCADE关键字触发器可通过数据库中的相关表实现级联更改在函数定义中怎么定义返回值。
二、名词解释(每小题2分,3小题,共6分)数据库——最高级别的存储机制外键——外键(FK) 是用于建立和加强两个表数据之间的链接的一列或多列。
死锁——在两个或多个任务中,如果每个任务锁定了其他任务试图锁定的资源,此时会造成这些任务永久阻塞,从而出现死锁。
事务——事务是作为单个逻辑工作单元执行的一系列操作主键——表通常具有包含唯一标识表中每一行的值的一列或一组列。
这样的一列或多列称为表的主键(PK),用于强制表的实体完整性实体完整性——实体完整性将行定义为表的唯一实体三、简答题(每小题5分,3小题,共15分)索引的设计原则1了解数据库本身的特征。
2了解最常用的查询的特征3了解查询中使用的列的特征4确定哪些索引选项可在创建或维护索引时提高性能5确定索引的最佳存储位置事务的属性原子性一致性隔离持久性简述各类数据完整性及其对应的约束实现实体完整性将行定义为特定表的唯一实体域完整性指特定列的项的有效性输入或删除行时,引用完整性保留表之间定义的关系用户定义完整性使您可以定义不属于其他任何完整性类别的特定业务规则对应的约束实现是:1实体完整性约束2域完整性约束3参照完整性约束4用户自定义完整性约束索引的作用与书中的索引一样,数据库中的索引使您可以快速找到表或索引视图中的特定信息。
数据库期末复习●数据库的查询与操作1、查询所有姓“李”的学生信息2、查询Course表将所有非“信息技术”类课程的学分在原有基础上提高0.5个学分3、在XK数据库中按系部名称统计各系开设的选修课门数,最高学分,最低学分及总学分。
4、查找课程表中Kind列为“人文”或“管理”的信息。
5、将课程表中Couno列为“004”的Teacher列的值改为“张三”。
6、查询所有“00电子商务”班的学生信息7、查询出“林斌”所选修的所有课程信息8、查询出所有“信息技术”类学分为2的课程信息9、选择departno的值为’02’的数据放入到一个新表aaa中。
10、将数据库中班级表、系部表Departno列进行相等连接。
●创建一个数据库要求:包括2个数据文件(主数据文件大小15MB,增长3%,最大50MB)和1个事务日志文件(文件大小8MB,增长10MB,最大15MB)●为数据库增加数据文件文件大小10MB,增长1%,最大15MB●创建数据表,表中包括学号、姓名、年龄、是否团员,其中学号和年龄为整数,姓名最多不超过10个字,并添加至少两条纪录●设置主键约束●增加默认约束●创建一个规则并绑定到字段●编写一个简单程序,求3个数的积●利用系统函数,求数据库服务器系统日期的月份●创建一个函数,其两个值的平方和●创建一个函数,比较任意两个数的大小●创建一个视图获取数据库中所有学生的学号,姓名,性别,年龄,所在班级名称,并对创建视图的信息进行加密●创建一个存储过程,带参数统计XK数据库任意班级学生人数,要求:班级编号列作为参数●创建一个触发器,实现每次确实修改course表中的记录时,在客户端显示“有纪录被修改”的消息。
●创建一个触发器,实现每次确实删除student表中的记录时,在客户端显示“有学生被删除”的消息。
●定义一个事务。
要求向XK数据库中stucou表中的stuno,couno,willorder三列插入多行数据,若报名课程超过3门,则回滚事务,即报名无效,否则成功提交。
三、设计题一1.设有4个关系模式:供应商关系:S (SNO, SNAME, CITY),属性依次是供应商号、供应商名称和所在城市;零件关系:P (PNO, PNAME, COLOR),属性依次是零件号、零件名和颜色;工程关系:J (JNO, JNAME, CITY),属性依次是工程号、工程名和所在城市;供应关系:SPJ (SNO, PNO, JNO, QTY),属性依次是供应商号、零件号、工程号和数量。
用SQL语句实现下列操作:(1)查询S1号供应商所在城市。
(2)查询为J1号工程提供P1号零件的供应商号和供应数量,查询结果按供应数量降序排列。
(3)查询为J1号工程提供红色零件的供应商号。
(4)查询与其提供零件的供应商所在城市为同一城市的工程号。
(5)统计杭州供应商的数量。
(6)统计每个工程的零件总数。
(7)查询比S1号供应商供应的零件数量多的供应商号。
(8)删除为J1号工程提供零件的供应商信息。
2、现有关系数据库如下:数据库名:教师数据库教师表(编号char (6),姓名,性别,民族,职称,身份证号)课程表(课号char (6),名称)任课表(ID,教师编号,课号,课时数)用SQL语言实现下列功能的sql语句代码:(1)・创建上述三表的建表代码;要求使用:主键(教师表•编号,课程表•课号)、默认(民族)、非空(民族,姓名)、他(性别:性别只能是男或者女、课时数: 课时数要求在0-200 Z间,包括0和200),除指定外,其它字段类型可自定。
(2)•将下列课程信息添加到课程表的代码课号课程名称SQL Server数据库100001数据结构100002100003VB程序设计修改课号为100003的课程名称:Visual Basic程序设计删除课号为100003的课程信息(3)•检索有一门或一门以上课程课时数大于90的所有教师的信息,包括编号、姓名。
3、现有关系数据库如下:数据库名:医院数据库医生表(编号,姓名,性别,出生日期,职称)病人表(编号,姓名,性别,民族,身份证号)病历表(ID,病人编号,医生编号,病历描述)用SQL语言实现下列功能的sql语句代码:(1).创建上述三表的建表代码;要求使用:主键(医生表•编号,病人表•编号,病历表.ID).非空(职称,姓名)、检查(性别:只能取值为男或者女),字段数据类型可自选(2). 将下列医生信息添加到医生表的代码编号姓名性别出生日期职称100001 杜医生男1963-5-18 副主任医师100002 郭医生女1950-7-26 副主任医师100003 刘医生男1973-9-18 医师修改编号为100002的医生职称为'主任医师'删除编号为100003的医生信息(3).写出查询1970年以前出生的医生(4).检索有病人的医生信息。
主要是以教学管理项目数据库为例二.INSERT 记录以销售数据库员工表插入记录为例INSERT INTO [employeet]([employeeid], [employeename], [employeebirth], [password]) VALUESCOOr,李欢;4980-1-2; '123456')三.SELECT/UPDATE/DELETEINSERT INTO StuT([stuid], [stu name], [specid], [classic!], [stubirth], [stusex])VALUES (' 20070801103','束红叶','0801', ' 20070801 f ' 1987-1-1',‘ F')goselect * from stutwhere cl ass id二'200708011'g()update stutset stubirth=,1988-1-Twhere stuid二'20070801101'g()Select stut. stusex as 性别,count (*) as 人数From stutinner join classt on classt. classid^stut. classidwhere classt. classname=,07 网络 fGroup by stut.stusexgoselect sped, specnamo , sum(coursct. coursegrade)from coursetinner join specteachingplan on specteachingplan. courseid=courset. courseid where specteachingplan. specid like ‘08%’group by specteachingplan. specidgo十三create view vl31assei ect tbtempselect course ・ courseasig nid as 课不呈开设编号,tb course ・ course name as 课程,tb teacher. teachername as 任课教师,tb_student. stuname as 学牛•姓名,tb_tempselectcourse. selectdate as 选课时间from tb_tempse1 ectcourseinner join tb student on tb_student. stuid=tb_tempselectcourse・stuid i nner joi n tb courseasign ontb_courseasign. courseasignid=tb_tempselectcourse. courseasignid inner join tb_course ontb_course・courseid二tb_courseasign. courseid inner join tb teacher ontb teacher. teacherid"tb courseasign. teacherid gocreate view vl32 asselect tb_tempse 1 ectcourse. courseasignid as 课程开设编号,tb course・ coursename as 课无老tb teacher・ teachername as 彳壬课教0帀,tb_tempsel ectcourse .stuid as 学号,tb_student ・ stuname as 学生姓名,tb_class.classname as 班级,tb_tempselectcourse・ selectdate as 选课IhflhJ fromtb_tompseloctcourseinnor join tb_student on tb_studcnt. stuid=tb_tempselectcourso. stuid inner join tb class on tb_class・ classic!二tb_student・ classidi nner joi n tb courseasign ontb_courseasign. courseasignid=tb_tempselectcourse. courseasignidinner join tb_course on tb_course・courseid二tb_courseasign. courseid inner join tb_teacher on tb teacher. teacherid"tb courseasign. teacherid go十四create view v!42 asselect tb teachingevalustion. courseasignid as 课程开设编号,tb_teacher. teachername as 任课教师,tb_student. stuname as 学生姓tb_teachingevaluation.teachingattitude as 教学态度,tb_teachingevaluation. teachingcontent as 教学内容,tb_teachingevaluation. teachingmethod as 教学方法,tb teachingevaluation. spareinstruction as 作业布置,(teachingattitude+teachingcontent+teachingmethod spareinstruetion: 4 as 平均from tb_toachingcvaluationinner join tb_student on tb_student・stuid二tb_teachingovaluation. stuid inner join tb_teacher ontb teacher. teacherid =tb_teachingevaluation. teacheridgo六.存储过程1.添加学生IF EXISTS (SELECT nameFROM sysobjectsWHERE name = ,jwinsertstup'AZD type 二’P')DROP PROCEDURE jwinsertstupGOCREATE PROCEDURE jwinsertstup(@stuidd char(11), @stunamee c har(8),©specidd char (4), @classidd char (9), @stubirthh smalldatetime, ©stusexx char (1), ©sue char (1) output)ASif not exists (select stuid from stuT where stuid=@stuidd)beginINSERT INTO [bf]・[dbo]・[StuT]([stuid], [stuname], [specid], [classid], [stubirth], [stusex])VALUES(@stuidd , @stunamee , @spccidd , ©classidd , ©stubirthh , ©stusexx ) set @suc二'rendelse--print '此学生已存在不要重复添加学生'--print/selectset @suc=, O'GO一一example to execute the store procedure declare @s char(1)EXECUTE jwinsertstup ' 200408031 Of,‘ aa',' 0803,,' 20040803V , '1980 —T ,' M', @s output select @sGO七・触发器1・一请编写触发器,实现:当同学在选修某门开设课程时,自动更新“开设课程表”中的已选学生数和选满标志。
一一Create basic Instead Of TriggerIF EXISTS (SELECT nameFROM sysobjectsWHERE name = N" tcourseselect_insert,AND type = ' TR')DROP TRIGGER tcourseselect insertGOCREATE TRIGGER tcourseselect_insertON foreselecttfor insertASbegindeclare @stunum tinyint, ©selectedstunum tinyint, @stuid char(11), ©coursesetid intset @stuid=(select stuid from insorted)set @coursesetid= (select coursesetid from inserted)seiect @stunum=stunum, @selectedstunum=selectedstunum from coursesett wherecoursesetid=@coursesetidendif (@sel ectedstunum〈@stununiT)update coursesett set seiectedstunum=selectedstunum+1where coursesetid=@coursesetidi f (@selectedstunum=@stunum-1)update coursesett set selectedstunum=selectedstunum+l, fullflag=,T wherecoursesetid=@coursesetidif (©selectedstunum=@stunum)delete from foreselecttwhere coursesetid=@coursesetid and stuid=@stuidgoselect * from coursesett where coursesetid二73goinsert into foresel ectt (stuid,stuname,coursesetid, sei ectdate) values (,2004080312',‘ aa', 73, getdate 0)goselect * from coursesett where coursesetid=73go2•―请编写触发器,实现:当某位教师在其任教的课程中,在为本学期某学生、某门课程输入平时成绩、—期中成绩、期末成绩后,自动计算出该学生本门课程的总评成绩。