实验十报告 创建视图
实验目的
1.掌握创建视图的SQL语句的用法。
2.掌握使用企业管管理器创建视图的方法。 3.掌握使用创建视图向导创建视图的方法。 4.掌握查看视图的系统存储过程的用法。 5.掌握修改视图的方法。 一. 实验准备
1.了解创建视图方法。
2.了解修改视图的SQL语句的语法格式。 3.了解视图更名的系统存储过程的用法。 4.了解删除视图的SQL语句的用法。 二. 实验要求
1. 用不同的方法创建视图。
2. 提交实验报告,并验收实验结果。 三. 实验内容 1. 创建视图
(1) 使用企业管理器创建视图
① 在EDUC库中以“student”表为基础,建立一个名为“V_计算机系学生”的视图。在使用该视图时,将显示“student”表中的所有字段.
兰州大学数据库实验报告
视图如下:
(2) 使用SQL语句创建视图 ① 在查询分析器中建立一个每个学生的学号、姓名、选修的课名及成绩的视图S_C_GRADE; Create VIEW S_C_GRADE AS
SELECT student.sno,sname,cname,score FROM student,course,student_course WHERE student.sno=student_course.sno AND course.cno=student_course.cno;
视图如下:
②建立一个所有计算机系学生的学号、选修课程号以及平均成绩的视图COMPUTE_AVG_GRADE; Create VIEW COMPUTE_AVG_GRADE AS
SELECT student.sno,course.cno,AVG(score) '平均成绩' FROM student,course,student_course WHERE student.sno=student_course.sno
AND course.cno=student_course.cno AND student.dno='CS' GROUP BY student.sno,course.cno;
视图如下:
2. 修改视图
(1) 使用企业管理器修改视图
在企业管理器中将视图COMPUTE_AVG_GRADE中改成建立在数学系的学生学号、选修课程号以及平均成绩的视图。(IS设为数学系)
(2) 使用SQL语句修改视图
① 在查询分析器中使用更改视图的命令将上面建立的视图“V_计算机系学生”更名为“V_计算机系男生”。
SP_RENAME 'V_计算机系学生','V_计算机系男生';
3. 删除视图
(1) 使用企业管理器删除视图
用企业管理器删除视图“V_计算机系学生”
(2) 使用SQL语句删除视图
用SQL语句删除视图COMPUTE_AVG_GRADE; DROP VIEW COMPUTE_AVG_GRADE;
实验十一 使用视图
一. 实验目的
1. 熟悉和掌握对数据表中视图的查询操作和SQL命令的使用;
2. 熟悉和掌握对数据表中视图的更新操作和SQL命令的使用,并注意视图更新与基本表更新的区别与联系
3. 学习灵活熟练的进行视图的操作,认识视图的作用 二. 实验准备
1.熟悉SQL SERVER 工作环境。 2.能连接到EDUC数据库。
3.复习有关视图操作的SQL语言命令。 三. 实验要求
1. 在实验开始之前做好准备工作。
2. 实验之后提交实验报告,思考视图和基本表的区别 四. 实验内容 一. 定义视图
在EDUC数据库中,已Student Course 和Student_course 表为基础完成一下视图定义 1. 定义计算机系学生基本情况视图V_Computer;
CREATE VIEW V_Computer AS SELECT student.* FROM student WHERE student.dno='CS';
视图如下:
2. 将Student Course 和Student_course表中学生的学号,姓名,课程号,课程名,成
绩定义为视图V_S_C_G CREATE VIEW V_S_C_G AS SELECT student.sno,sname,course.cno,course.cname,score FROM student,course,student_course WHERE student.sno=student_course.sno course.cno=student_course.cno;
AND
视图如下:
3. 将各系学生人数,平均年龄定义为视图V_NUM_AVG CREATE VIEW V_NUM_AVG AS SELECT COUNT(dno) '各系人数',AVG(sage) '平均年龄' FROM student GROUP BY dno;
视图如下:
4. 定义一个反映学生出生年份的视图V_YEAR CREATE VIEW V_YEAR AS SELECT sname,2014-sage '出生年份' FROM student;
视图如下:
5. 将各位学生选修课程的门数及平均成绩定义为视图V_AVG_S_G
CREATE VIEW V_AVG_S_G AS SELECT student.sno '学号',sname '姓名',COUNT(*) '选修门数',AVG(score) '平均成绩' FROM student,student_course WHERE student.sno=student_course.sno GROUP BY student.sno,sname;
视图如下:
6. 将各门课程的选修人数及平均成绩定义为视图V_AVG_C_G CREATE VIEW V_AVG_C_G AS SELECT cno '课程号',COUNT(cno) '选修人数',AVG(score) '平均成绩' FROM student_course GROUP BY cno;
视图如下:
二. 使用视图
1. 查询以上所建的视图结果。
所建视图结果如上题截图所示
2. 查询平均成绩为90分以上的学生学号、姓名和成绩;
SELECT 学号,姓名,平均成绩 FROM V_AVG_S_G WHERE 平均成绩>90;
3. 查询各课成绩均大于平均成绩的学生学号、姓名、课程和成绩;
SELECT V_S_C_G.sno,V_S_C_G.sname,V_S_C_G.cname,V_S_C_G.score FROM V_S_C_G,V_AVG_S_G WHERE V_S_C_G.sno=V_AVG_S_G.学号 AND V_S_C_G.score>V_AVG_S_G.平均成绩;
4. 按系统计各系平均成绩在80分以上的人数,结果按降序排列;
1.先创建学生学号-系别视图V_STUDENT CREATE VIEW V_STUDENT AS SELECT sno,dno FROM student; 2.进行查询
SELECT V_STUDENT.dno '系别',COUNT(V_STUDENT.sno) '人数' FROM V_STUDENT,V_AVG_S_G WHERE V_STUDENT.sno=V_AVG_S_G.学号 AND V_AVG_S_G.平均成绩>80 GROUP BY V_STUDENT.dno;
三. 修改视图 并查询结果; UPDATE V_IS SET sname='S1_MMM' WHERE SNO='32011'; UPDATE V_IS SET sname='S4_MMM' WHERE SNO='32014'; SELECT * FROM V_IS WHERE sno='32011' OR sno='32014'; 1. 通过视图V_IS,分别将学号为“S1”和“S4”的学生姓名更改为“S1_MMM”,”S4_MMM”
2. 通过视图V_IS,新增加一个学生记录 ('S12','YAN XI',19,'IS'),并查询结果
INSERT INTO V_IS(sno,sname,sex,dno,sage) VALUES('S12','YAN XI','女','IS','19') SELECT *
FROM V_IS
WHERE sno='S12';
3. 要通过视图V_AVG_S_G,将学号为“S1”的平均成绩改为90分,是否可以实现?并说明原因
答:不能实现,因为视图或函数'V_AVG_S_G' 包含聚合、DISTINCT 或GROUP BY 子句或者PIVOT 或UNPIVOT 运算符,所以无法进行更新。
UPDATE V_AVG_S_G SET 学号='32011' WHERE 平均成绩='90';
实验十二 更新语句
一. 实验目的
1. 熟悉使用UPDATE/INSERT/DELETE语句进行表操作; 2. 能将这些更新操作应用于实际操作中去; 二. 三. 实验准备 实验要求 1.了解这些更新语句的基本语法和用法; 1. 完成下面的实验内容,并提交实验报告; 2. 在实验报告中附上相应的代码; 四. 实验内容
1. 对于student表,将所有专业号为‘001’的,并且入学年份为2006的学生,或是专业号为‘003’,并且年龄小于20岁的学生的班级号改为‘001’。
UPDATE student SET classno='001'
WHERE (mno='001'AND YEAR(sctime)='2006')OR(mno='003'AND (year(getdate())-year(sdate))<20);
2. 对于student表,删掉所有年龄小于20岁,并且专业号为‘003’的学生的记录。
DELETE FROM student WHERE mno='003'AND (year(getdate())-year(sdate))<20
3. 对于student表,插入一条新记录,它的具体信息为,学号:20071100
11、姓名:张
三、性别:男、出生日期:1988080
8、院系编号:‘001’、专业编号: ‘001’、班级号:‘001’、入学时间:20070901。 INSERT INTO student(sno,sname,sex,sdate,dno,mno,classno,sctime) VALUES('2007110011','张三','男','1988-8-8','001','001','001','2007-9-1');
4. 对于student表,将入学时间最晚的学生和年龄最小的学生的联系方式去掉。
UPDATE student SET tel=null
WHERE sctime>=ALL(select sctime FROM student) OR year(sdate)>=ALL(select year(sdate) from student)
5. 对于student表,将平均年龄最小的一个院系的院系编号改为‘008’。
UPDATE student SET dno='008' where dno in( SELECT top 1 dno FROM student
GROUP BY dno
ORDER BY AVG(year(getdate())-year(sdate)) )
T-SQL编程
一、【实验目的】
1、掌握T_SQL编程的基本语法
2、常用函数的使用方法
二、【实验要求】
1、使用查询分析器练习T-SQL编程方法
2、练习函数的使用
三、【实验准备】
1、复习与本次实验内容相关知识
2、预习相关函数(请预查阅CONVERT、DATENAME、GFTDATE函数的用法)
四、【实验内容】
1、条件结构
自己编写一段程序判断一个年份(比如1900年)是否是闰年,是则显示1900年为闰年,否则显示1900年不是闰年.
DECLARE @year INT SELECT @year=2014 if @year%4=0 and @year%100<>0 print CONVERT(CHAR(4),@year)+'是闰年' else print CONVERT(CHAR(4),@year)+'不是闰年'
2、循环结构 (1)下面是计算1~100和的循环结构,执行之,体会循环结构程序,注意语句块标志BEGIN ... END
DECLARE @SUM INT,@I INT SELECT @I=1,@SUM=0 WHILE @I<=100 BEGIN SELECT @SUM=@SUM+@I SELECT @I=@I+1 END PRINT '1...100的和为:'+CONVERT(CHAR(4),@SUM)
(3) 编写一个程序用于计算10的阶乘
DECLARE @SUM INT,@I INT SELECT @I=1,@SUM=1 WHILE @I<=10 BEGIN SELECT @SUM=@SUM*@I SELECT @I=@I+1 END PRINT '阶乘!的结果为:'+CONVERT(CHAR(10),@SUM)
(4) 自己编制一个程序,要求其能打印出100内的素数(只能被其自身和1整除的数).--循环结构+条件结构
SELECT main.number FROM master..spt_values AS main WHERE type='P'
AND number BETWEEN 3 AND 100 AND NOT EXISTS ( SELECT 1 FROM master..spt_values AS sub WHERE
type='P'
AND sub.number BETWEEN 2 AND main.number - 1 AND main.number % sub.number = 0)
3、CASE结构
(1)下面SQL查询图书的信息,并根据图书定价判断是否适合作为教材
select 书名, 出版社, 作者, case
when 定价>50 then '定价太高,不适合作教材'
else '定价' + CAST(定价 as varchar(5)) + ',可以作教材'
end 可否作为教材 from 图书
(2) 请自己编程实现各位同学的成绩以等级分显示即:90分及以上为优,80分及以上到90以下为良,70分及以上到80分以下为中,60分及以上到70分以下为及格,其余为不及格. SELECT student.sno ,sname ,cname, CASE WHEN student_course.score >=90 THEN '优' when student_course.score>=80 and student_course.score <=90 THEN '良'
when student_course.score>=70 and student_course.score <=80 THEN '中'
when student_course.score>=60 and student_course.score<=70 THEN '及格'
else '不及格' END GRADE FROM student_course,course,student WHERE student_course.cno=course.cno AND student_course.sno=student.sno
4、函数使用
下面查询,显示当前日期,显示格式为:"今天是XXXX年XX月XX日,星期X",执行之,体会系统函数的用法.
SELECT '今天是'+DATENAME(YEAR,GETDATE())+'年' +DATENAME(MONTH,GETDATE())+'月' +DATENAME(DAY,GETDATE())+'日,' +DATENAME(WEEKDAY,GETDATE())
实验四使用SQL语句修改SQL Server数据库
1、实验目的:
(1) 了解SQL Server数据库的逻辑结构和物理结构;
(2) 掌握使用SQL语句修改数据库的方法;
2、实验准备:
(1)要明确能够修改数据库的用户必须是系统管理员,或者是被授权使用CREATE DATABASE语句的用户;
(2)修改数据库必须要明确:除存储位置,即物理文件名不能修改外,其它项均可以修改,包括数据库名、数据库大小和增长量等数据;
(3)了解使用SQL语句修改数据库的方法。
3、实验内容:
(1)删除实验三中创建的数据库;
(2)用自己名字创建一个数据库,包含一个主数据文件data1和一个日志文件log1,最大值都是5M;增长量分别为10%和1M;存储在自己的文件夹下;
(3)添加一个数据文件data2,最大值为3M;
(4)添加一个日志文件log2,最大值为4M;
(5)添加一个文件组group1;
(6)添加一个次数据文件data3放在文件组group1中;
(7)修改数据文件data2,将最大值改为5M;
(8)删除日志文件log1;
(9)删除次数据文件data
3、data2;
(10)修改文件组,将group1改名为group2;
(11)删除文件组group2;
(12)将log2的增长量改为1M。
(13)缩小该数据库的大小,保留自由空间1M,保留释放的文件空间。
(14)将数据库的日志文件log2缩小到3M。
(15)将数据库更名为stud+自己的名字。
SQL Server 2008 数据库的管理
(二)
一、T-SQL 概述
1.SQL:Structured Query Language:结构化查询语言,现在已经作为国际计算机查询语言的通用标准,92年美国国家标准局ANSI推出ANSI SQL 92标准,我们安装的sql server 2008所用的标准就是ANSI SQL 92标准的一个扩展集,叫做T-SQL。 2.T-SQL T-SQL:Transact-SQL,是SQL的一个扩展集,对功能有了很大的补充,例如变量说明,流程控制,功能函数等。
二、T-SQL的语言主要组成部分 1.DML(数据操作语言)
用于查询、插入、修改、和删除数据库中的数据。 SELECT、INSERT、UPDATE 、DELETE等
2、DDL(数据定义语言)
用于在数据库系统中创建数据库、表、视图、索引等 CREATE DATABASE DROP DATABASE等
3、DCL(数据控制语言) 用来控制存取许可、存取权限等 GRANT,REVOKE等 4.其他
海标扩变量说明、内部函数等其他的命令。
二、数据库的相关概念和命名规则
1、物理存储结构
数据库文件在磁盘上的存储形式
主数据文件:
*.mdf,用来存储数据库的启动信息,存储部分或者全部的数据。一个数据库只能有一个主数据文件。
辅助数据文件:*.ndf,用来存储主数据文件未能存储的数据。一个数据库可以有很多个ndf,也可以一个都没有。
日志文件:*.ldf,用来存储数据库的更新等日志信息,当数据库损坏的时候管理员可以通过日志文件来进行恢复。曾删改都会被记录在日志文件中。查询是不会被记录在日志中。一个数据库必须有一个日志文件。
文件组:类似于文件夹,用来方便管理文件,分为主文件组和次文件组,日志不属于任何一个文件组。(查看测试1数据库)
2、逻辑存储结构
有数据表,视图,索引等国中不同的数据对象组成,分别用来存储特定信息并支持特定功能。
3、数据库明明规则
第一个字符必须是字母或者”_”、”@”、”#”。数据库名称不能直接是T-SQL的保留字。不允许嵌入空格或其他特殊字符。
4、数据库的分类 (1)系统数据库
master:非常重要的数据库,记录了数据库的系统级别信息,包括所有的登陆账户,系统配置以及数据库和数据库文件的存放位置和初始化信息等等。
usemaster--纸箱操作的数据库
select*fromsysdatabases--查询系统表sysdatabases中的所有数据
model:模板数据库,当我们创建新数据库的时候会有一个模板,模板就存放在model数据库中
msdb:备份和还原数据库的时候使用的。
Tempdb:临时数据库,存储临时表和临时数据过程,过程当程序结束后就会消失。
Resource:隐藏的数据库,是无法看到的,包含了SQL server的系统对象,在物理存储结构上实在resource数据库中的额。但是逻辑上他会出现在每个数据库的sys架构当中。
(2)用户数据库(日文翻译的书经常叫做平民数据库):用户自己创建的数据库。
三、使用T-SQL视图创建数据库
1、单一文件组的数据库。例如:使用管理器创建一个电子商城E_Market数据库,要求如下(只有一个primary文件组)
数据库名称为E_Market,包含一个数据文件,初始容量大小为5M,文件按15%自动增长,最大容量为100M 一个日志文件,初始容量大小为1M,不启用自动增长,所有文件存放在E盘,project目录下。
说明:建完数据库后,右键单击数据库名称,选择属性—选项 (1)兼容级别:高版本的数据库是可以兼容低版本数据库的,可以根据自己的需要自行设定
(2)限制访问:三种状态,默认是multi user,是不限制访问的,single user是当我们对数据库进行维护的时候,旺旺只会同意自己访问对数据库进行维护,single user就是这时候使用的,restricted user 是只允许特定用户访问数据库。
(3)数据库的只读状态,制度数据库不能再被写入数据,只能读取数据。
创建数据库是需要指定哪些属性
文件名称,存放位置,非配的初始空间,属于哪个文件组 文件增长,文件容量设置 兼容级别:版本号 数据库是否只读 限制访问的三种模式 2.创建多个文件组的数据库。
例如:使用管理器创建一个DemoDB数据库,要求如下
数据库的名称为DemoDB,包含一个数据文件,除是容量为10M,文件按10%自动增长,最大容量为500M。
第二个文件组FG,辅助数据文件为FG_DemoDB,初始大小为10M,不启用自动增长。
一个日志文件,出事容量大小为5M,不启用自动增长,所有文件存放在E:\project目录下。
顺序:首先创建数据库DemoDB,设置大小和自动增长以及存放位置,更改日志文件大小和自动增长以及存放位置。 进入文件组,新建文件组FG。
回到文件,创建文件FG_DemoDB,修改文件组、大小、增长以及存放位置,设置改文件属于文件组FG。
四、使用SQL语句创建数据库
1.创建一个数据文件和一个日志文件的数据库 题目要求同上
USEmaster--当前指向的操作的数据库 GO CREATEDATABASEE_Market ONPRIMARY--主文件组 (
) NAME='E_Market_data',--逻辑文件名
FILENAME='E:\project\E_Market_data.mdf', --物理文件名 SIZE=5MB,--初始大小
MAXSIZE=100MB,--最大容量 FILEGROWTH=15%--增长率
LOGON--日志文件 (
NAME='E_Market_log', FILENAME='E:\project\E_Market_log.ldf', SIZE=5MB, FILEGROWTH=0--未启用自动增长 )
Go 注意:每句语句后面跟的是英文的逗号,最后一句不用逗号,开始的go和最后的go是告诉数据库将两个go之间的代码当做一段语句块执行,因为我们创建数据库是要求主文件和日志文件同事存在的,所以要同事执行。
2.创建多个文件组的数据库。 题目同上
USEmaster--当前指向的操作的数据库 GO CREATEDATABASEE_Market ONPRIMARY--主文件组 (
NAME='E_Market_data',--逻辑文件名
FILENAME='E:\project\E_Market_data.mdf', --物理文件名 SIZE=5MB,--初始大小 MAXSIZE=100MB,--最大容量 FILEGROWTH=15%--增长率
), FILEGROUPFG--创建了一个次文件组 (
NAME='E_Market2_data', FILENAME='E:\project\E_Market2_data.ndf', SIZE=4MB, FILEGROWTH=10% ) LOGON--日志文件
( NAME='E_Market_log', FILENAME='E:\project\E_Market_log.ldf', SIZE=5MB, FILEGROWTH=0--未启用自动增长
), ( NAME='E_Market2_log', FILENAME='E:\project\E_Market2_log.ldf', SIZE=3MB, FILEGROWTH=10%, MAXSIZE=100MB ) GO 注意:如果只有一个primary文件组写完文件组后不用在最后添加英文的逗号,如果需要写一个此文件组,则需要在写完主文件组后添加英文的逗号,然后继续写filegroup。 3.向现有数据库添加文件组和文件 (1)利用视图添加文件组和文件
找到E_Market数据库,右键单击该数据库—属性—文件组—添加—写好文件组名fg2. 选择文件—添加—文件名等属性 (2)利用SQL语句添加文件
useE_Market
alterdatabasee_marketaddfilegroupfg1--添加文件组fg1 go alterdatabasee_marketaddfile--向刚创建的文件组fg1添加文件 ( name='fg1_e_market_data', filename='e:\project\fg1_e_market_data.ndf', size=5mb, filegrowth=10%
)tofilegroupfg1 go --将fg1文件组设置为默认文件组 alterdatabasee_market modifyfilegroupfg1default go 4.删除数据库
(1)利用sql语句删除数据库
USEmaster--当前指向的操作的数据库
GO IFEXISTS(SELECT*FROMsysdatabasesWHEREname='E_Market')
DROPDATABASEE_Market--删除数据库 GO 注意:特别小心删除数据库的操作,如果执行则会从磁盘上将所有数据库文件都删除,一旦删除是无法恢复的。 (2)完整的创建数据库的方法
USEmaster--当前指向的操作的数据库
GO IFEXISTS(SELECT*FROMsysdatabasesWHEREname='E_Market')
DROPDATABASEE_Market--删除数据库 --创建数据库
CREATEDATABASEE_Market ONPRIMARY--主文件组 ( NAME='E_Market_data',--逻辑文件名
--物理文件名
FILENAME='e:\project\E_Market_data.mdf', SIZE=5MB,--初始大小 MAXSIZE=100MB,--最大容量 FILEGROWTH=15%--增长率
), FILEGROUPFG--创建了一个次文件组 (
) NAME='E_Market2_data', FILENAME='e:\project\E_Market2_data.ndf', SIZE=4MB, FILEGROWTH=10% LOGON--日志文件
( NAME='E_Market_log', FILENAME='e:\project\E_Market_log.ldf', SIZE=5MB, FILEGROWTH=0--未启用自动增长
), ( NAME='E_Market2_log', FILENAME='e:\project\E_Market2_log.ldf', SIZE=3MB, FILEGROWTH=10%, MAXSIZE=100MB ) GO SELECT*FROMsysdatabases
实验九:T-SQL语言、存储过程及数据库的安全性
一、实验目的
1. 掌握数据变量的使用;
2. 掌握各种控制语句及系统函数的使用;
3. 掌握存储过程的实现;
4. 掌握混合模式下数据库用户帐号的建立与取消方法;
5. 掌握数据库用户权限的设置方法;
6. 掌握在企业管理器中进行备份、恢复操作的步骤;
二、实验学时
2学时
三、实验要求
1. 了解T-SQL支持的各种基本数据类型及变量的使用;
2. 了解T-SQL各种运算符、控制语句及函数的功能及使用方法;
3. 掌握存储过程的编写和运行方法
4. 熟悉数据库完全备份及恢复的方法;
5. 了解SQL Server 2008系统安全;
6. 熟悉数据库用户、服务器角色及数据库角色的用法
7. 完成实验报告。
四、实验内容
以student数据库为基础数据,完成以下内容
1. 变量及函数的使用:
1)创建局部变量@xh(学号)并赋值,然后输出数据表student中所有等于该值的学生的学号、姓名、性别、所属院系及年龄等信息;
2)将学号为200515008的学生的姓名赋值给变量@name;
3)计算学生信息表student中学生最高年龄和最低年龄之差,并将结果付给@cz;
4)定义一函数,按系别统计当前所有学生的平均年龄,并调用该函数。
5)定义一函数,通过姓名查询某学生的学号、性别、年龄、系别、选修课程名及成绩。
2. 编写并执行存储过程
(1) 创建一个无参存储过程pr_StuScore,查询以下信息:班级、学号、姓名、性别、课程名称、考试成绩。
(2) 创建一个带参数的存储过程stu_info,该存储过程根据传入的学生编号在
student表中查询此学生的选修课程及成绩信息。
(3) 创建一个带参数的存储过程StuScoreInfo2,该存储过程根据传入的学生
编号和课程名称查询以下信息:班级、学号、姓名、性别、课程名称、考试成绩。
(4) 编写带参数的存储过程,根据传入的课程名称统计该课程的平均成绩。
3. *对数据库student进行完全备份和恢复操作;
4.*以系统管理员身份登录到SQL Server服务器,在SQL Server2008界面中实现以下操作
1) 在当前计算机中增加一个用户zhang,密码为secret。使此用户通过windows
模式下登录SQL Server服务器,登录名为zhang;
2) 新建以混合模式登录SQL Server服务器的用户登录名分别为stu
1、stu2和
stu3,登录密码为secret,默认登录数据库为student;
3) 在数据库student中创建用户zhang,登录帐号为zhang;
4) 在数据库student中创建用户stu
1、stu2和stu3,登录帐号为stu
1、stu2
和stu3;
5) 给数据库用户zhang赋予创建数据表的权限;
6) 给数据库用户stu1赋予对sc表进行插入、修改、删除操作权限;
7) 给数据库用户stu2和stu3赋予对student表、course表所有操作权限及查
询sc的操作权限,并允许再授权给其他用户;
8) 撤销数据库用户stu2对student表和course表的删除操作的权限;
五、实验步骤
3. 对数据库student进行完全备份和恢复操作;
1)对数据库student进行完全备份操作;
以管理员账号登录SQL Server并运行SQL Server资源管理器;以下方法任选其一
方法1:利用资源管理器进行备份
(1)打开【对象资源管理器】,在【服务器对象】节点下找到【备份设备】节点,单击鼠标右键,弹出右键菜单,选择【新建备份设备】菜单,弹出新建备份设备窗口。输入备份设备逻辑名称data_backup,并指定备份设备的物理路径,例如“D:\backup\data_full.bak”,单击【确定】。
(2)连接到相应的SQL Server服务器实例之后,在【对象资源管理器】中,单击服务器名称以展开服务器树。找到【数据库】节点展开,选择STUDENT
数据库,单击鼠标右键,在弹出的快捷菜单中选择【任务】—>【备份】命令。
(3)在【备份数据库】对话框中的【数据库】下拉列表中选择的数据库名STUDENT。在【备份类型】下拉列表中选择备份类型为“完整”,在【名称】文本框中输入备份集的名称STUDENT_BAK,在【备份集过期时间】选项中指定备份集过期时间为30天,在“选择页”窗格中,单击【选项】,在【可靠性】选项中选择“完成后验证备份”选项,最后单击【确定】按钮。
方法2:用T-SQL语句进行数据库完全备份
使用逻辑名STUDENTBAK创建一个命名的备份设备,并将数据库STUDENT完全备份到该设备。在查询分析器的窗口输入如下的语句并执行:
USE master
EXEC sp_addumpdevice ‘disk’,’ STUDENTBAK’,’D:\backup\ STUDENTBAK.BAK’
BackUp DataBase STUDENT To STUDENTBAK
2)在资源管理器中进行数据库恢复;
(1)展开【数据库】节点,用鼠标右键单击STUDENT,在弹出的快捷菜单中选择【属性】命令。打开“数据库属性”对话框,在“选择页”列表中,单击“选项” 。在“恢复模式”下拉列表中选择【完整】恢复模式。
(2)用鼠标右键单击STUDENT,在弹出的快捷菜单中选择【任务】—>【还原】—>【数据库】命令。打开“还原数据库”对话框。在“常规”选项卡上,“目标数据库”下拉列表框中选择STUDENT。在“目标时间点”文本框中,使用默认值“最近状态”。在“选择用于还原的备份集”表格中,选择用于还原的备份,单击“确定”按钮。
4.*以系统管理员身份登录到SQL Server服务器,在SQL Server2008界面中实现以下操作
1) 在当前计算机中增加一个用户zhang,密码为secret。使此用户通过windows
模式下登录SQL Server服务器,登录名为zhang; 在计算机中增加用户的方法如下:单击【开始|管理工具】,选择【计算机管理】,在【计算机管理】的窗口中单击左边的【本地用户和组】,在右侧【用户】文件夹上单击右键,选择菜单上的【新用户】,然后在弹出的【新用户】对话框中键入您准备使用的用户名、密码,然后清除【用户下次登录时须更改密码】复选框的选中状态,再单击【创建】按钮,然后单击【关闭】按钮关闭对话框。
创建windows身份验证登陆用户方法:在【对象资源管理器】中,展开【安全性】节点,然后右键单击【登录名】,在弹出的快捷菜单中选择【新建登录名】。在“登录名-新建”对话框中单击【登录名】后面的搜索按钮,选择
【高级】,在弹出的对话框中选择【立即查找】,在搜索结果中选择已经建立的用户名,单击【确定】按钮,回到“登录名-新建”对话框中,最后单击确定按钮完成创建。
2) 新建以混合模式登录SQL Server服务器的用户登录名分别为stu
1、stu2和
stu3,登录密码为secret,默认登录数据库为student;
创建SQL Server身份验证登陆用户方法:在【对象资源管理器】中,展开
【安全性】节点,然后右键单击【登录名】,在弹出的快捷菜单中选择【新建登录名】。在“登录名-新建”对话框中选择SQL Server身份验证选项,在【登录名】后面输入用户名,在密码及确认密码后面输入密码。取消【强制密码过期】选项,单击【确定】按钮。
3) 在数据库student中创建用户zhang,登录帐号为zhang;
在【对象资源管理器】中展开student数据库节点,展开【安全性】节点,在用户上单击鼠标右键选择【新建用户】命令,在弹出的新建对话框中单击
【登陆名】后面的搜索按钮,在弹出的【选择登录名】对话框中单击【浏览】按钮,在相应的账号前面选中并单击【确定】按钮,最后在用户名后面输入用户名称,单击【确定】按钮完成创建。
CREATEUSERzhang for login zhang
4) 在数据库student中创建用户stu
1、stu2和stu3,登录帐号为stu
1、stu2
和stu3;
CREATEUSERstu1 for login stu1
5) 给数据库用户zhang赋予创建数据表的权限;
在student数据库安全性节点下的用户名上单击鼠标右键,选择【属性】,在打开的对话框中选择【安全对象】页,单击右边的【搜索】按钮,在弹出的【添加对象】对话框中直接单击【确定】按钮,然后单击【对象类型】按钮,弹出【选择对象类型】对话框,选中【数据库】,单击【确定】按钮。再在选择对象对话框中单击【浏览】,在student数据库前面选中,单击【确定】。最后在【安全对象】页下方的student的权限中创建表选项后的【授予】复选框中选中,单击【确定】完成设置。
GRANTcreatetabletozhang
6) 给数据库用户stu1赋予对sc表进行插入、修改、删除操作权限;
GRANT insert,update,delete ONsc to stu
17) 给数据库用户stu2和stu3赋予对student表、course表所有操作权限及查
询sc的操作权限,并允许再授权给其他用户;
GRANTALL PRIVILEGESONStudent,CourseTOstu2,stu3
WITH GRANT OPTION
8) 撤销数据库用户stu2对student表和course表的删除操作的权限;
RevokedeleteON Student,CourseFROM stu2 CASCADE
实验2SQL Server数据库的管理
1.实验目的
(1)了解SQL Server 数据库的逻辑结构和物理结构的特点。
(2)掌握使用SQL Server管理平台对数据库进行管理的方法。
(3)掌握使用Transact-SQL语句对数据库进行管理的方法。
2.实验内容及步骤
(1)在SQL Server管理平台中创建数据库。
① 运行SQL Server管理平台,在管理平台的对象资源管理器中展开服务器。
② 右击“数据库”项,在快捷菜单中选择“新建数据库”菜单项。在新建数据库对话框的数据库名称文本框中输入学生管理数据库名studentsdb,单击“确定”按钮。
(2)选择studentsdb数据库,在其快捷菜单中选择“属性”菜单项,查看“常规”、“文件”、“文件组”、“选项”、“权限”和“扩展属性”等页面。
(3)打开studentsdb数据库的“属性”对话框,在“文件”选项卡中的数据库文件列表中修改studentsdb数据文件的“分配的空间”大小为2MB。指定“最大文件大小”为5MB。修改studentsdb数据库的日志文件的大小在每次填满时自动递增5%。
(4)单击“新建查询”打开查询设计器窗口,在查询设计器窗口中使用Transact-SQL语句CREATE DATABASE创建studb数据库。然后通过系统存储过程sp_helpdb查看系统中的数据库信息。
(5)在查询设计器中使用Transact-SQL语句ALTER DATABASE修改studb数据库的设置,指定数据文件大小为5MB,最大文件大小为20MB,自动递增大小为1MB。
(6)在查询设计器中为studb数据库增加一个日志文件,命名为studb_Log2,大小为5MB,最大文件大小为10MB。
(7)使用SQL Server管理平台将studb数据库的名称更改为student_db。
(8)使用Transact-SQL语句DROP DATABASE删除student_db数据库。
3.实验思考
(1)数据库中的日志文件是否属于某个文件组?
(2)数据库中的主数据文件一定属于主文件组吗?
(3)数据文件和日志文件可以在同一个文件组吗?为什么?
(4)删除了数据库,其数据文件和日志文件是否已经删除?是否任何人都可以删除数据库?
(5)能够删除系统数据库吗?