大二下学期SQL考试
一、考试时间:7月2日(十八周周四随堂考)
二、考试题型:
一、15道选择题(共30分)
二、10道填空题(共10分)
三、基本操作题
给出三张表,然后写出语句、加条件、表与表的连接、order by等。
四、2道应用题。
考函数、触发器、存储过程。(三选二)
三、考试重点:
第一章(不考)
第二章
2.11 系统数据库(P38)
1.master数据库:
master数据库用于记录SQL Server实例的所以系统级信息,是SQL Server的核心,不能对其进行直接修改,应当对其定期进行备份,如果master数据库变得不可用,那么SQL Server数据库引擎将无法启动。
2.model数据库:
Model数据库用作SQL Server2008实例上创建的所以数据库的模板,如果对model数据库进行了修改,都将应用于以后创建的用户数据中。
3.msdb数据库:
msdb数据库用于SQL Server2008代理计划警报和作业,是SQL Server中的一个Windows服务。用户不能再msdb数据库中执行下列操作:更改排列规则,默认排序规则为服务器排序规则;删除数据库;从数据库中删除guest用户;启用变更数据捕获;参与数据库镜像;删除主文件组、主数据文件或日志文件;重命名数据库或主文件组;将数据库设置为OFFLINE;将主文件组设置为READ_ONLY。
4.resource数据库:
resource数据库是一个只读和隐藏的数据库,它包含了SQL Server2008中的所以系统对象,resource数据库是唯一没有显示在其中的系统数据库,这是因为它在sys框架中存在。
2.1.4数据库文件及其文件组(P39)
(1)数据文件。主数据文件名称的默认后缀是.mdf;辅助数据文件是可选的,用于存放不在主数据文件中的其他数据和对象。数据库可以没有辅助数据文件,也可以有多个辅助数据文件,默认的后缀是.ndf.
SQL 语句:
创建数据库:CREATE DATABASE 数据库名称(p46)
修改数据库:ALTER DATABASE数据库名称(p49)
删除数据库:DROP DATABASE database【,…n】{表示可以有多于一个数据库名}(p52)
第三章
3.1.2表的数据类型:(p60)
3.1.3创建表(p64顶部)
CREATE TABLE SC
(SNO CHAR(5),
CNO CHAR(5),
SCORE NUMER(5,1) CHECK(SCORE>=0 AND SCORE<=100) )
3.4向表中添加数据(要会写)(p71)
3.6修改表
3.6.2使用T-SQL语句修改表(p74)
ALTER TABLE 表名
(ALTER COLUMN 列名列定义,
ADD 列名数据类型约束,
……
DROP 列名,
……
ADD CONSTRAINT 约束名约束,
……)
3.6.3使用INSERT SELECT语句(p75)
例【3-4】求每个学生的平均成绩,并按学号、姓名、平均成绩存入学生信息数据库。
首先创建一个表:
CREATE TABLE AG(
学号CHAR(8)PRIMARY KEY,
姓名CHAR(8),
平均成绩SMALLINT)
GO;
再求每个学生的平均成绩并把其插入已创建的表中:
INSERT INTO AG(学号,姓名,平均成绩)
SELECT SC.学号,MIN(姓名),AVG(成绩)
FROM Student,SC
WHERE Student.学号=SC.学号
GROUP BY SC.学号;
3.6.4使用SELECT INTO语句(p75)
例【3-5】统计每个学生未通过课程的门数,将其保存到临时表#stuexam表。显示系名、学号、姓名、未通过门数,并按系名排序。T_SQL语句如下:
SELECT MIN(系名),SC.学号,MIN(姓名),COUNT(*) 未通过门数
INTO #stuexam
FROM Student,SC
WHERE Student.学号=SC.学号AND 成绩<60
GROUP BY SC.学号
ORDER BY 系名;
第四章
4.3命令操作表数据
4.3.1使用INSERT语句插入表数据(p82)
向表中插入数据可以使用INSERT语句。INSERT语句最基本的格式如下:
INSERT table_name
VALUES(constant1,constant2,…)
该语句的功能是向由table_name指定的表中加入由VALUES指定的各列值的行。
例【4-1】向XSCJ数据库的表XS中插入如下一行数据。
001112 罗林琳计算机0 “1/30/1980 0:0:0”40
可以使用如下的T_SQL语句:
USE XSCJ
INSERT INTO XS
VALUES(‘001112’,’罗林琳’,‘计算机’,0,‘1/30/1980’,0:0:0’,40,NULL)
GO
执行结果:略。
4.3.2使用DELETE或TRANCATE语句删除数据(p86)
1、使用DELETE语句删除数据
DELETE的功能是从表中删除行,其最基本的语法格式如下:DELETE[FROM]
{table_name|view_name}
[WHERE
该语句的功能为从table_name指定的表或view_name所指的的视图中删除满足
例【4-4】将XSCJ数据库的XS表中总学分小于39的行删除。
使用如下T_SQL语句:
USE XSCJ
DELETE FROM XS
WHERE 总学分<39
GO
执行结果:略。
4.3.3使用UPDATE语句修改数据(p89)
在T_SQL中,UPDATE语句可用来修改表中的数据行。UPDATE语句的最基本格式如下:
UPDATE{table_name|view_name}
SET column_name={expression|DEFAULT|NULL}[,…n]
[WHERE
该语句的功能是:将table_name指定的表或view_name指定的视图中满足
例【4-7】将XSCJ数据库的XS表中学号为001110的学生的“备注”列值改为“三好学生”,使用如下的T_SQL语句:
USE XSCJ
UPDATE XS
SET 备注=”三好生”
WHERE 学号=001110
GO
执行结果:略。
第五章
5.2.1管理对SQL Server实例的访问(p96)
●在windows身份验证模式下,SQL Server依靠操作系统来认证请
求SQL Server实例的用户。由于已经通过了Windows的认证,因此用户不需要在连接字符串中提供任何认证信息。
●在混合身份验证模式下,用户既可以使用Windows身份验证模式,
也可以使用SQL Server身份验证模式来连接SQL Server身份验证需要用户在连接字符串中提供连接SQL Server的用户名和密码。
第六章
6.1.2 T_SQL语音的分类(p119)
SQL语句分为以下三类:
●数据操作语句(DML)用于在数据库中检索、计算、插入、编辑
和删除数据。第四章至第十章介绍了数据操作语句SELECT、INSERT、UPDATE和DELETE。第十四章介绍了语句START(或BEGIN)、COMMITH和ROLLBACK。
●数据定义语句(DDL)用于创建、修改和销毁数据表、索引、视
图等数据库对象。数据定义语句CREATE、ALTER和DROP将在随后的章节中逐一介绍。
●数据控制语句(DCL)用于授权某些与用户查看、更改、删除数据
或数据库对象。GRANT语句分配权限和角色(角色是一组权限的集合)。REVOKE语句用于取消权限。本书没有介绍GRANT和REVOKE,因为它们是数据库管理员的职责。书中介绍的所以DBMS (除了Access)都支持GRANT和REVOKE,但与SQL标准有一些差异。
6.1.3 T_SQL语法约定(p119)
1.注释:
●注释符“--”用于单行注释。使用双连字符“--”作为注释符
时,从双连字符开始到行尾的内容都是注释内容。这些注释内
容既可以与要执行的代码处于同一行,也可以另起一行。双连
字符“--”注释方式主要用于在一行中对代码进行解释和描述。
●注释符“/**/”。用于注释多行文字。在斜线星号“/**/”注释
方式中,开始注释对“/*”和结束注释对“*/”之间的所有内
容均可视为注释。这些注释字符既可用于多行文字,也可以与
执行的代码处于同一行,甚至还可以在可执行代码的内部。
6.2.3 变量(p123)
(1)变量名称
每个变量必须有一个唯一的名称,用来标记系统所开辟的存储空间。在SQL Server 2008系统中,变量的命名规则如下:
●第一个字符必须是字母、数字、下划线或@符号。需要注意的
是,符号“@”开头的变量表示局部变量、符号“@@”开头
的变量表示全局变量。
●变量名不能是T_SQL语言的系统保留字(如:IF、ELSE、
CONTINUE等),包括大写和小写形式。
●变量名中不允许出现空格或其他特殊字符。
(2)变量的值(p124)
语法格式如下;
格式一:使用SET语句赋值
SET 变量名称=表达式
格式二:使用SELECT语句赋值
SELECT 变量名称=表达式[,…n]
6.6.3 逻辑运算符(p126)
【看后面的例子,看懂就行】
表格略。
6.4 流程控制语句(p130)
6.4.1 BEGIN…END语句
6.4.2 IF…ELSE语句
例【6-6】设变量score,根据score的值判断成绩是否合格,并输出结论。
T_SQL语句如下:
DECLAER @score INT,@a NCHAR(10)
SET @score=55
IF @score>=60
SET @a=N’成绩合格’
ELSE
SET @a=N’成绩不合格’
SELECT @a
6.4.3 CASE语句
6.5.4 聚合函数(p138)
AVG:返回一组值的平均值。
COUNT: 返回一组值中项目的数量,返回值为int类型。
MAX: 返回表达式或者项目中的最大值。
MIN: 返回表达式或者项目中的最小值。
SUM: 返回表达式中所有项的和,或者只返回DISTINCT值。SUM 只能用于数字列。
6.5.5 用户自定义函数
例【6-14】创建一个内联表值函数xscj,返回指定学生的成绩。ALTER FUNCTION [dbo].[xscj](@xh varchar(12))
RETURNS TABLE
AS
RETURN
(
SELECT 选课表.学号,课程表.课程名,选课表.分数
FROM 选课表
INNER JOIN 课程表ON(课程表.课程号=选课表.课程号) WHERE[学号]=@xh
)
例【6-15】创建一个标量函数,改函数返回两个参数中的最大值。CREATE FUNCTION max2(@par1 real,@par2 real)
RETURNS real
AS
BEGIN
DECLARE @par real
IF @par1>@par2
SET @par=@par1
ELSE
SET @par=@par2
RETURN(@par)
END 返回参数
第七章
一、重点看P147-160,具体略。
二、P173习题七的第八大题。(略)
第八章
看聚集索引和非聚集索引。
第九章
9.3约束的概念和类型(p187)
在SQL Server 2008中,共有6种约束:主键约束、唯一性约束、检查约束、默认约束、外部键约束、空值约束。
第十章
10.1存储过程
例【10-1】创建名为snoquery的存储过程:通过用户输入的学生学号来查询学生的姓名、年龄、性别和所属院系。(p207)
(1)启动SSMS,展开服务器。
(2)展开所需的“数据库”文件夹,展开要在其中创建存储过程的数据库。本例中,我们展开stuinfo数据库。
(3)展开“可编程性”文件夹,在“存储过程”文件夹上单击鼠标右键,从弹出的快捷菜单中选择“新建存储过程”命令。
(4)系统弹出T_SQL语句编写窗口,其中的代码是创建存储过程的格式说明。输入如下T_SQL代码:
CREATE PROCEDURE snoquery
@xuehao char(10)
AS
SELECTE sno 学号,sname 学生姓名,sage 年龄,ssex 性别,sdept 所属院系
FROM student
WHERE sno=@xuehao
(5)代码输入结束后,只要将以上代码在“查询分析器”里在执行一次,系统就会在当前数据库中创建一个名为snoquery的存储过程。单击刷新按钮,选择stuinfo数据库,在左边的树型列表中选择“存储过程”,就可以看到属于dbo(database owner)的存储过程dbo.snoquery。
10.2触发器
10.2.1 触发器概述
触发器的种类:DML触发器和DDL触发器
10.2.2
触发器中的逻辑(虚拟)表(p213)
Insert表中存放的是更新前的记录:
Deleted表中存放的是已从表中删除的记录:
例【10-6】创建触发器stu_delete,实现如下功能:当按照学号删除student表中的某学生记录后,对应的该学生在sc表中的记录也被自动删除。
T_SQL语句如下:
USE stuinfo
GO
CREATE TRIGGER stu_Delete ON Student
FOR DELETE
AS
DELECT FROM sc WHERE sno=(SELECT sno FROM deleted) 执行后,我们查询student表和sc表,如图10-6(p215)所示,可以看到两个表中均存在学号为20070102的学生记录。
在student表中执行如下数据删除语句:
DELETE FROM student WHERE sno=’20070102’
第十一章(不考)
第十二章(不考)
第十三章(无)
附:总结
1、对象:create + datebase
alter table
drop view
DDL
2、数据:insert + datebase
update table
delete view
DML
3、where
select
from
as
for
重要的话不说三遍:(所以我说四遍)
祝大家考试顺利!
祝大家考试顺利!
祝大家考试顺利!
祝大家考试顺利!