数据库考试复习资料

更新时间:2023-10-04 15:11:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

建库代码

create database NewDB on primary (

name='newDBdata',

filename='E:\\数据库练习资料\\newDBdata.mdf', size=3MB,

maxsize=20MB, filegrowth=10% )

log on (

name='newDBlog',

filename='E:\\数据库练习资料\\newDBlog.ldf', size=1MB, maxsize=5MB, filegrowth=1MB

修改数据库代码 use NewDB go alter database NewDB modify file ( name='newDBdata', size=50MB, filegrowth=2MB ) 使用T-SQL语句对数据库NewDB增加数据文件newDBdata1.ndf,初始大小为10MB,最大大小为50MB,按10%增长。 alter database NewDB add file ( name='newDBdata1', filename='E:\\数据库练习资料\\newDBdata1.ndf', size=10MB, maxsize=50MB, filegrowth=10% ) 删除新增的数据文件newDBdata1.ndf ALTER DATABASE NewDB1 REMOVE FILE newDBdata1 将数据库NewDB的名字改为NewDB1。alter database NewDB modify name=NewDB1 GO 1.SQL SERVER有哪些系统数据库,各自作用是什么? 答:MASTER:核心数据库 主要配合完成数据库的权限,日志,登陆信息,设定,进程管理等数据库系统与操作系统级别的服务操作 MODEL:模版数据库 主要配合完成用户自定义数据库创建时提供各种模板 MSDB:自动化任务 主要完成一些定时,预操作比如发送邮件,提示等等等等。 TEMPDB:临时缓存 NORTHWIND和PUBS:样例库 2、SQL SERVER数据库文件和日志文件各自的特点及作用是什么? (1). 主要数据文件(.mdf) 主要数据文件包含数据库的启动信息,并用于存储数据。每个数据库都有一个主要的数据文件。 (2).次要数据文件(.ndf)

次要数据文件也用来存储数据,他含有不能置于主要文件中的说有数据。如果主要文件可以包含数据中的所有数据,那么数据库就不需要次要数据文件。如果数据库很大,主要主要数据文件超过了行的限制,就需要设置多个次要的文件并将它们保存到不同的磁盘上。

3.为什么要使用辅助数据文件?数据库可以不用自动增长吗?

主要是为了数据操作简单和安全性考虑,数据库也可以设置为手动增长,知道磁盘存储不下为止。

第三章

1、常见数据库约束有哪些及其各自特点?

答:常见的约束:主键约束、外键约束、默认值约束、检查约束、非空约束、唯一值约束。 2、char、varchar、nchar、nvarchar之间区别? 答:char [ ( n ) ]:固定长度,非 Unicode 字符数据,长度为 n 个字节。n 的取值范围为 1 至 8,000,存储大小是 n 个字节。每个字符和符号占用1个字节。 varchar [ ( n | max ) ] :可变长度,非 Unicode 字符数据。n 的取值范围为 1 至 8,000。max 指示最大存储大小是 2^31-1 个字节。 nchar [ ( n ) ] :n 个字符的固定长度的 Unicode 字符数据。n 值必须在 1 到 4,000 之间(含)。存储大小为两倍 n 字节。 nvarchar [ ( n | max ) ] :可变长度 Unicode 字符数据。n 值在 1 到 4,000 之间(含)。max 指示最大存储大小为 2^31-1 字节。存储大小是所输入字符个数的两倍 + 2 个字节。3、date和datetime之间区别?money和float区别? 答:date是SQL Server 2008新引进的数据类型。它表示一个日子,不包含时间部分,可以表示的日期范围从公元元年1月1日到9999年12月31日。只需要3个字节的存储空间。 DateTime 日期和时间部分,可以表示的日期范围从公元1753年1月1日00:00:00.000 到9999年12月31日23:59:59.997 ,精确到3.33毫秒,它需要8个字节的存储空间。

money和float区别:金额的存储上可以优先money,如果金额过大采用decimal(numeric),极端的情况(数据超大)使用float(real)。 建表代码 use Marker_db create table customers ( c_id int primary key, c_name varchar(50), c_contact Varchar(50), c_city Varchar(50), c_brith varchar(50) not null,

) GO

修改数据类型

alter table customers

alter column c_name varchar(70) GO

修改字段名

EXEC sp_rename 'customers.[c_contact]', 'c_phone', 'COLUMN' GO

增加字段

alter table customers

add c_gender char(1) null GO

修改表名

EXEC sp_rename 'customers',

'customers_info' GO

删除字段

alter table customers_info drop column c_city GO

在Market中创建数据表orders

use Marker

create table orders (

O_num int primary key, O_date date,

O_id Varchar(50), )

外键

alter table orders

add constraint o_num_c_id_FK1 foreign key (o_num)

references customers_info(c_id)

删除orders表的外键约束,然后删除表customers。

1.删除外键约束

alter table orders

drop constraint o_num_c_id_FK1 2.删除表 use Marker go

drop table customers_2

第四章

简述T-SQL语句分类及其作用 数据操作语句(用于增、删、改、查)、数据定义语句(用于创建、管理数据库各种对象)、数据控制语句(用于账号管理、用户管理、角色管理)和一些附加的语言元素(用于事务处理、游标等)。参阅P94页的相关简述,学会这门课程后,要掌握所有关键字的使用。 简述什么是架构Schema?

数据库构架是一个独立于数据库用户的非重复命名空间,构架是不能嵌套的 简述SQL SERVER中最常用的3个全局变量以及全局变量和局部变量的区别

1.@@VERSION、@@LANGOAGE、@@LOCK_TIMEOUT

2.用户只能使用预先定义的全局变量,而不能修改,引用时必须以标记符@@开头,局部变量被引用时要在其名称前加上标志@,且必须先用DECLARE声明后才可以使用。

简述什么是批处理及其特点?什么是T-SQL脚本及其特点? 1)批处理就是一条或多条T-SQL语句,为一个目标执行批处理可减少系统开销,GO命令表示批处理结束,若语句中无GO命令,则按照单个批处理执行。

(2)T-SQL脚本是储存在文件中一序列的T-SQL语句,包含一个或多个批处理。脚本可用来做副本,在机器间共享,分析及学习代码。 声明整数变量@var,使用CASE流程控制语句判断@var值等于1,等于2或者两者都不等。当@var值为1时,输出字符串”var is 1”; 当@var值为2时,输出字符串”var is 2”;否则输出字符串”var is not 1 or 2”。

DECLARE @VAR int SELECT CASE

when @VAR=1 then'VAR is 1' when @VAR=2 then'VAR is 2' else 'VAR is not 1 or 2' end

编程计算1~100之间所有能被3整除的数的个数@count和总和@sum,并分别用Select语句和Print语句两种方法输出个数@count和总和@sum。

declare @i int declare @sum int declare @count int Select @i=1 Select @sum=0 Select @count=0 while @i<=100 begin

if @i%3=0

Select @sum=@sum+@i Select @count=@count+1 end

Select @i=@i+1

PRINT'总和是'+STR(@SUM) PRINT'总数是'+STR(@count)

用T-SQL语言编程输出3~100之内的素数。

declare @a int,@b int,@i int set @i=3 while @i<100 begin set @a=2 set @b=0

while (@a<@i) begin

if (@i%@a=0) begin set @b=1 break end

set @a=@a+1 end

if @b=0 print @i set @i=@i+1 end

第五章

使用数学函数进行如下运算: (1)计算18除以5的商和余数。 SELECT FLOOR(18/5),FLOOR(18%5);

(2)将弧度值PI()/4转换为角度

值。

SELECT DEGREES(PI()/4); (3)计算9的4次方值。 SELECT POWER(9,4); (4)保留浮点值3.14159小数点后面2位。

SELECT ROUND(3.14159,2);

2、使用字符串函数进行如下运算: (1)分别计算字符串“Hello World!”和“University”的长度。 SELECT LEN('Hello

World!'),LEN('University'); (2)从字符串“Nice to meet you!”中获取子字符串“meet”。

SELECT SUBSTRING('Nice to meet you!',9,4);

(3)除去字符串“h e l l o”中的空格。

SELECT REPLACE('h e l l o',' ','');

(4)将字符串“SQLServer”逆序输出。

SELECT REVERSE('SQLSserver'); (5)在字符串

“SQLServerSQLServer”中,从第4个字母开始查找字母Q第一次出现的位置。 SELECT

CHARINDEX('Q','SQLServerSQLServer',4); 3、使用日期和时间函数经行如下运算: (1)计算当前日期是一年的第几天。 SELECT

DATEPART(DAYOFYEAR,GETDATE()); (2)计算当前日期是一周中的第几个工作日。

DECLARE @week INT; SELECT @week=(SELECT

DATEPART(WEEKDAY,GETDATE()-1));

IF @week<6 IF @week>0 PRINT '今天是第

'+CONVERT(varchar,@week) +'个工作日'; ELSE

PRINT '今天是休息日';

(3)计算“1929-02-14”与当前日期之间相差的年份。 SELECT

DATEDIFF(YEAR,'1929-02-14',GETDATE())

第六章

插入dept表数据: INSERT INTO dept VALUES

(10,'ACCOUNTING','ShangHai'), 计算所有女员工(F)的工龄。 SELECT e_name 员工姓名,hireDate 入日期期,

DATEDIFF(YEAR,hireDate,GETDATE())工龄

FROM employee

WHERE e_gender='女';

使用TOP查询或者RANK查询从第3条记录开始到第6条记录。

--(1)Top:

SELECT TOP (4) e_no 员工编号 ,e_name 员工姓名,e_gender 员工性别,

dept_no 部门编号,e_job 职

位,e_salary 薪水,hireDate 入职日期

FROM employee WHERE e_no NOT IN (SELECT TOP (2) e_no FROM employee); --(2)Rank SELECT e_no 员工编号 ,e_name 员工姓名,e_gender 员工性别, dept_no 部门编号,e_job 职

位,e_salary 薪水,hireDate 入职日期

FROM (SELECT RANK() OVER (ORDER BY e_no ASC) AS num,*FROM employee) AS e1

WHERE e1.num BETWEEN '3' AND '6';

查询获得销售人员(SALESMAN)的最低工资的员工的薪水及员工编号、员工姓名、入职日期。

SELECT e_no 员工编号,e_name 员工姓名,hireDate 入职日期,e_salary 薪水 FROM employee

WHERE e_job='SALESMAN' AND e_salary=(SELECT MIN(e_salary) FROM employee WHERE e_job='SALESMAN');

查询名字以字母N或者S结尾的记录。

SELECT e_no 员工编号 ,e_name 员工姓名,e_gender 员工性别, dept_no 部门编号,e_job 职

位,e_salary 薪水,hireDate 入职日期

FROM employee

WHERE e_name LIKE'%N' OR e_name LIKE'%S';

查询在BeiJing工作的员工姓名和职务。

--方法一: SELECT e_name 员工姓名,e_job 职位

FROM employee WHERE

dept_no=(SELECT d_no FROM dept WHERE d_location='BeiJing'); 分别使用左连接和右连接和全连接方式查询员工表和部门表,显示员工详细信息及部门名称、部门地址。 (1):使用左连接方式查询employee和dept表

SELECT employee.e_no 员工编号,employee.e_name 员工姓名,employee.e_gender 性别,e_job 职位,e_salary 薪水,hireDate 入职日期, dept.d_name 部门名

称,dept.d_location 工作地点 FROM employee LEFT OUTER JOIN dept

ON employee.dept_no=dept.d_no

(2):使用右连接方式查询employee和dept表

SELECT employee.e_no 员工编号,employee.e_name 员工姓名,employee.e_gender 性别,e_job 职位,e_salary 薪水,hireDate 入职日期, dept.d_name 部门名

称,dept.d_location 工作地点 FROM employee RIGHT OUTER JOIN dept

ON employee.dept_no=dept.d_no (3):使用全连接方式查询employee和dept表

SELECT employee.e_no 员工编号,employee.e_name 员工姓名,employee.e_gender 性别,e_job 职位,e_salary 薪水,hireDate 入职日期, dept.d_name 部门名

称,dept.d_location 工作地点 FROM employee FULL OUTER JOIN dept

ON employee.dept_no=dept.d_no 查询所有2001到2005年入职的员工的信息,查询部门编号为20和30的员工信息并使用UNION合并两个查询结果。

SELECT e_no 员工编号 ,e_name 员工姓名,e_gender 员工性别, dept_no 部门编号,e_job 职

位,e_salary 薪水,hireDate 入职日期

FROM employee WHERE (SELECT

DATEPART(YEAR,hireDate)) IN(2001,2002,2003,2004,2005) UNION SELECT e_no 员工编号 ,e_name 员工姓名,e_gender 员工性别, dept_no 部门编号,e_job 职

位,e_salary 薪水,hireDate 入职日期

FROM employee

WHERE dept_no IN (20,30); 使用LIKE关键字查询员工姓名中包含字母a的记录。

SELECT e_no 员工编号 ,e_name 员工姓名,e_gender 员工性别, dept_no 部门编号,e_job 职

位,e_salary 薪水,hireDate 入职日期

FROM employee

WHERE e_name LIKE '%A%'; 分组统计并显示各个部门员工的最高工资、最低工资、平均工资,并且按平均工资升序排序。 SELECT d_name 部门名

称,MAX(e_salary) AS 最高工资,MIN(e_salary) AS 最低工资,AVG(e_salary) AS 平均工资 FROM employee LEFT OUTER JOIN dept ON

employee.dept_no=dept.d_no GROUP BY d_name

ORDER BY AVG(e_salary) ASC;

第九章

功能。类似与C语言中的指针。 事务和锁在应用上的区别是什么? 分类:SQL Server2012 支持3种游事务将一段T-SQL语句作为一个单标实现

元来处理,这些操作要么全部成功,①Transcat-SQL游标②应用程序编要么全部失败。事务包含4个特性:程接口(API)服务器游标 ③客户原子性、一致性、隔离性、和持久端游标

性,事务的执行方式分为自动提交根据游标的特点还可将游标分为4事务、显示事务、隐式事务和分布类

式事务。事务以“BEGIN TRAN”语①只进游标②静态游标 句开始,并以“COMMIT TRAN”或③动态游标④由键集驱动的游标 “ROLLBACK TRAN”语句结束。锁是另一个和事务紧密联系的概念,对使用游标的基本步骤有哪些? 于多用户系统,使用锁来保护制定游标的操作步骤:

的资源。在事务中使用锁,防止其①声明游标 ②打开游标③ 读取游他用户修改另一个事务还没有完成标中的数据

的事务中的数据,SQL Serve 中有④关闭游标⑤释放游标 多种类型的锁,允许事务锁定不同

的资源。

事务和锁有什么关系?

SQL Server 2012 中可以使用多种机制来确保数据的完整性,例如约束、触发器以及本章介绍的事务和锁等。事务和锁的关系非常紧密。事务包含一系列的操作,这些操作要么全部成功,要么全部失败,通过事务机制管理多个事务,保证事务的一致性,事务中使用锁来保护指定的资源,防止其他用户修改另一个事务还没有完成的事务中的数据。

简述事务原理,事务有哪些类型? 事务原理:事务要有非常明确的开始和结束点,SQL Server 中的每一条数据操作语句,例如SELECT 、INSERT、UPDSTE和DELETE都是隐式事务的一部分,即使有一条语句,系统也会把一条语句当作一个事务,要么执行语句,要么什么都不执行。 事务类型:

①自动提交事务:每条单独的SQL语句就是一个事务。

②显示事务:每个事务均以BEGIN TRNSACTION 语句显示开始,以

COMMIT或ROLLBACK 语句显示结束。 ③隐式事务:前一个事务完成时新事务隐式启动,每个事务仍以

COMMIT或ROLLBACK 语句显示结束 ④分布式事务:跨越多个服务器的事务。

常用的锁类型有哪些?为什么会产生死锁?如何理解锁的相容性? 锁的类型: ①更新锁:一般用于可更新的资源。 ②排他锁:用于数据修改操作。 ③共享锁:用于读取数据操作。 ④键范围锁:可防止幻读。

⑤架构锁:执行表的数据定义操作时使用架构修改锁,在架构修改锁起作用的期间,会防止对表的并发访问。

游标的含义及分类?

游标含义:游标是SQL Server 2012 的一种数据访问机制,它允许用户访问单独的数据行。在查看或处理结果集中的数据时,游标可以提供在结果集中向前或向后浏览数据的

本文来源:https://www.bwwdw.com/article/j5ad.html

Top