数据库原理实验报告

时间:2024.4.13

数据库原理及应用

实验报告

   目:触发器与存储过程

   业:计算机科学与技术

   级:   1020542     

   号:      09       

   名:    杨生涛     

太原工业学院计算机工程系

20##124

一、实验目的与要求

使学生加深对触发器和存储过程的创建和使用。

二、实验内容

(1)    触发器的使用

a)        在数据表“学生”中创建update触发器,级联更新“选课”表中相应的记录信息

b)        利用delete表,将“学生”表中被删除的学生记录存储到“学生备份”表中,以供日后的数据查询和分析

(2)    存储过程的使用

a)        在student数据库中,建立一个存储过程,要求统计计算机系学生的人数,并将结果返回给用户

b)        在student数据库中,建立一个存储过程,要求

l  统计成绩大于等于90分学生的人数

l  统计成绩大于等于80并且小于90分学生的人数,并将结果返回给用户

三、解决方案

1)      触发器的使用

a)        在数据表“学生”中创建update触发器,级联更新“选课”表种相应的记录信息。

create trigger st_update

 on student for  update as

 declare @bsno char(9),@asno char(9)

 print '使用update触发器级联更新sc表中相关的行-开始'

 select @bsno=sno from deleted

 print '更新前的学号:'+@bsno

select @asno=sno from inserted

 print '更新后的学号:'+@asno

 update sc set sno=@asno where sc.sno=@bsno

 print '使用update触发器级联更新sc表中相关的行-结束'

update student set sno='102055222' where sno = '102055223'

b)        利用Delete表,将“学生”表中被删除的记录存储到“学生备份”表中,以供日后的数据查询和分析。

            use student

go

if exists (select * from dbo.Student where sno =

 object_id(N'[dbo].[sc_back]') and OBJECTPROPERTY(sno, N'IsUserTable') = 1)

drop table [dbo].[sc_back]

GO

CREATE TABLE [dbo].[sc_back] (

       [sno] [char] (9) NOT NULL ,

       [cno] [char] (3) NOT NULL ,

       [grade] [int] NULL

) ON [PRIMARY]

if exists(select name from sysobjects where name='sc_delete' and type='tr')

 drop trigger sc_delete1

go

create trigger sc_delete

 on sc for  delete as

  print '使用delete触发器备份删除sc表中相关的行--开始'

 insert into sc_back

  select * from deleted

 print '使用delete触发器备份删除sc表中相关的行--结束'

2)      存储过程

a)        在student数据库中,建立一个存储过程,要求统计计算机系学生的人数,并将人数返回给用户。

use student

GO

CREATE PROCEDURE PROC_ST03 @sdept varchar(10),@num smallint output

 AS

  select @num= count(*) from student where sdept=@sdept

GO

use student

go

declare @sd varchar(10),@n smallint

set @sd='05'

exec PROC_ST03 @sd,@n output

print convert(varchar(6),@n)

go

b)      在Student数据库中,建立一个存储过程要求统计成绩大于等于90分学生人数;统计成绩大于等于80并且小于90分学生的人数,并将人数返回给用户。

              use student

GO

CREATE PROCEDURE PROC_ST05 @n1 smallint output,@n2 smallint output

 AS

  select @n1= count(*) from sc where grade>=90

  select @n2= count(*) from sc where grade>=80 and grade<90

use student

GO

declare @n1 smallint,@n2 smallint

exec PROC_ST05 @n1 output, @n2 output

print convert(varchar(6),@n1)

print convert(varchar(6),@n2)

go

四、实验结果

1)  触发器的应用

2)  存储过程

     

五、出现的问题及解决的方法


第二篇:数据库原理实验报告


实  验  一

实验项目名称: SQL Server 2000系统的配置及基本操作

实验主要内容及方法  熟悉实验环境实验主要内容及方法  熟悉实验环境

实验要求:

1、了解SQL Server 2000的启动,熟悉如何在SQL Server 2000图形环境下建立数据库和表。

2、了解SQL Server 2000系统的相关服务及常用工具。

实验设备:装有SQL SERVER 2000的电脑

实验步骤:

1、启动和停止SQL Server

a.用服务管理器启动和停止SQL Server

选择菜单“程序|Microsoft SQL Server|服务管理器”。

b.自动启动SQL Server

使用手动启动弹出“SQL Server服务管理器”后,选择复选框“当启动OS时自动启动服务”后,下次开机时系统即可自动启动SQL Server。

c.用操作系统控制面板中的服务管理程序启动和停止SQL Server

(1)  择菜单“程序|管理工具|服务”,弹出“服务”对话框。

(2)  鼠标右击要启动的服务器名称,即:MSSQLSERVER,弹出菜单后,选择“启动”菜单项,就可启动SQL Server;类似的方法,可以停止SQL Server。

2、使用企业管理器

a.启动企业管理器

选择菜单“程序|Microsoft SQL Server|服务管理器”。

b.启动和停止SQL Server

在企业管理器中所要启动的服务器上点鼠标右击,从快捷菜单中选择“连接”,即可启动并连接;类似的方法,可以停止SQL Server。

c.浏览master 和pubs数据库的结构

3、使用查询分析器

a.启动查询分析器

选择“程序|Microsoft SQL Server|查询分析器”菜单后,弹出“连接到SQL Server服务器”对话框。

用户输入SQL Server服务器的名称和身份验证后,即可进入查询分析器。注:身份验证可以使用“Windows身份验证”或“SQL Server身份验证”。

b. 从表中查询数据:

首先选择当前使用的数据库为pubs,然后在查询分析器的查询窗口中输入SQL语句

Select * from titles

点击按钮,执行该SQL语句,观察执行结果。

执行结果:(服务器: 消息 208,级别 16,状态 1,行 1;对象名 'pubs' 无效。)

c.练习T-SQL中的函数

如求200的平方根

在查询分析器的查询窗口中输入

select sqrt(200)

go

观察执行结果。

执行结果:(14.142135623730951)

实验总结:

1、了解SQL Server 2000的启动。

2、了解SQL Server 2000系统的相关服务及常用工具。

实  验  二

实验项目名称  sql数据定义语言的应用

实验主要内容及方法  数据库、数据表、视图、索引的定义、删除及修改

实验要求:

1、解并掌握SQL查询分析器及企业管理器的使用。

2、握数据库、基本表、索引的定义、删除与修改。

实验目的:熟练掌握库、表的定义、删除与修改,为后继学习作准备。

实验设备:装有SQL SERVER 2000的电脑

实验步骤:

对于如下给定的数据表格进行实验

表中数据可以自行给定。

一、定义数据库

1.用企业管理器创建数据库

创建一个名称为Test的数据库,数据文件的初始大小设为5MB,文件增长增量设为2MB,文件增长方式设为自动增长,文件的增长上限设为50MB;日志文件的初始大小为10MB,文件增长增量为1MB,文件的增长限制设为100MB。

具体创建步骤如下:

1)进入SQL Server企业管理器

2)展开目录树,在“数据库”选项上单击右键,选择“新建数据库”。

该窗口有3个选项卡:常规、数据文件和事务日志。输入数据库名称:Test,点击数据文件选项卡,在数据文件中,你可以设定数据文件的名称,所在目录以及文件的大小等信息。完成后点击事务日志选项卡, 事务日志中,你可以设定日志文件的名称,所在目录以及文件的大小等信息。接受系统的缺省值,点击确定按钮,完成数据库的新建。

2.用T-SQL语言创建数据库

CREATE DATABASEdatabase_name

其他配置可以采用默认设置。

[练习]:按以上要求,在查询分析器中用T-SQL语言创建数据库“Test”,写出SQL语句。

Create database test

执行结果:

CREATE DATABASE 进程正在磁盘 'test' 上分配 0.75 MB 的空间。

CREATE DATABASE 进程正在磁盘 'test_log' 上分配 0.49 MB 的空间。

3.查看并修改数据库的属性

(1)进入企业管理器,鼠标右键单击数据库“Test”,选择“属性”,查看选项。

将数据库Test数据文件的初始大小改为20MB,最大值改为80MB,数据增长改为5%。

二、定义基本表

例1  建立表1.1所示的学生表Students,每个属性名的意义为Sno-学号、Sname-姓名、Ssex-性别、Sage-年龄、Sdept-所在系。这里要求Sno和Sname不能为空值,且取值唯一。

CREATE TABLE Students                      /*列级完整性约束条件*/

    (Sno  CHAR(5) NOT NULL,              /* Sno不能为空值*/

    Sname  CHAR(20) NOT NULL,           /*Sname不能为空值*/

    Ssex  CHAR(2),

    Sage  INT,

    Sdept  CHAR(15),

    CONSTRAINT un_Sno UNIQUE(Sno),        /* Sno取值唯一的约束*/

    CONSTRAINT un_Sname UNIQUE(Sname));  /* Sname取值唯一的约束*/

在查询分析器中输入以上代码,点击执行按扭,即可得到空表Students.

说明:在Microsoft SQL Server 2000的查询分析器(Query Analyzer)中使用单条SQL语句,其末尾不需要分号“;”作为命令结尾标记。通常,SQL Server 2000对大多数末尾带有分号的SQL命令都能顺利执行,但对少数的SQL命令,末尾若带分号,则SQL Server 2000会给出错误信息提示。

例2 建立表1.2所示的课程表Courses,其属性名意义分别为Cno-课程号, Cname-课程名, Pre_Cno-先修课程号, Credits-学分。

CREATE TABLE Courses

   (Cno  CHAR(5) NOT NULL,             /* Cno不能为空值*/

    Cname  CHAR(20) NOT NULL,           /*Cname不能为空值*/

    Pre_Cno CHAR(5),

    Credits  INT,

    CONSTRAINT un_Cno UNIQUE(Cno));        /*Cno取值唯一的约束*/

例3 建立表1.3所示的成绩表Sc。其中的属性名意义分别为Sno-学号,Cno-课程号和Grade-考试成绩。

 CREATE TABLE Sc              

    ( Sno  CHAR(5) NOT NULL,                 /* Sno不能为空值*/

     Cno  CHAR(5) NOT NULL,                 /* Cno不能为空值*/

     Grade  INT,

     CONSTRAINT Sno_Cno UNIQUE(Sno,Cno));   /*Sno+Cno取值唯一的约束*/

三、 修改基本表

例4  向基本表Students中增加“入学时间”属性列,其属性名为Sentrancedate,数据类型为DATETIME型。

ALTER TABLE Students ADD Sentrancedate DATETIME

例5 将Sage(年龄)的数据类型改为SMALLINT型。

ALTER TABLE Students ALTER COLUMN Sage SMALLINT

例6  删除Sname(姓名)必须取唯一值的约束。

ALTER TABLE Students DROP CONSTRAINT un_Sname

A注意:SQL Server 20## 增加了删除属性的命令。比如,删除属性列Sentrancedate的命令为:

LTER TABLE Students DROP COLUMN Sentrancedate;

说明:⑴ 为了保证后面例子能够顺利运行,请大家一定将属性列Sentrancedate从Students表中删除。

⑵ 为了调试SQL语句方便,这里没有在表Sc中增加参照完整性约束,甚至没有定义主键。

四、 删除基本表

例7  删除Students表。

DROP TABLE  Students;

说明:此表删除后,请立即用例1将其建立起来,以便后面的例子使用。

五、 建立索引

例8 为学生选课数据库中的Students,Courses,Sc三个表建立索引。其中Students表按Sno(学号)升序建唯一索引,Courses表按Cno(课程号)升序建唯一索引,Sc表按Sno(学号)升序和Cno(课程号)号降序建唯一索引。其语句为:

CREATE UNIQUE INDEX Stu_Sno ON Students(Sno);

CREATE UNIQUE INDEX Cou_Cno ON Courses(Cno);

CREATE UNIQUE INDEX Rep_Scno ON Sc(Sno ASC, Cno DESC);

例9 在基本表Students的Sname(姓名)和Sno(学号)列上建立一个聚簇索引,而且Students中的物理记录将按照Sname值和Sno值的升序存放。其语句为:

CREATE CLUSTERED INDEX Stu_Sname_Sno ON Students(Sname, Sno);

六、删除索引

例10  删除基本表Sc上的Rep_SCno索引。

DROP INDEX Sc.Rep_Scno;

七、建立视图

例11 建立数学系学生的视图,并要求进行修改和插入操作时仍需保证该视图只有数学系的学生,视图的属性名为Sno,Sname,Sage,Sdept。

CREATE  VIEW  C_Student

AS

SELECT  Sno, Sname, Sage, Sdept

FROM  Students

WHERE  Sdept=’数学’

WITH CHECK OPTION

例12  建立学生的学号(Sno)、姓名(Sname)、选修课程名(Cname)及成绩(Grade)的视图。

本视图由三个基本表的连接操作导出,其SQL语句如下:

CREATE VIEW  Student_CR

AS

SELECT  Students.Sno, Sname, Cname, Grade

FROM  Students, Sc, Courses

WHERE  Students.Sno= Sc.Sno AND Sc.Cno=Courses.Cno

例13  定义一个反映学生出生年份的视图。

CREATE VIEW Student_birth(Sno, Sname, Sbirth)

AS  SELECT  Sno, Sname, 1996-Sage

FROM  Students

八、删除视图

例14  删除视图Student_CR。

DROP VIEW Student_CR;


实  验   三

实验项目名称  sql 数据操纵语言的应用(6课时,综合)

实验主要内容及方法  数据的各种操纵方法

实验要求:

(1)  掌握sql数据插入、修改、删除和查询语句的一般格式。

(2) 掌握sql数据插入、修改、删除和查询使用方法。

实验目的:熟练掌握四大语句的使用。

实验设备:装有SQL SERVER 2000的电脑

实验步骤:

一、插入数据

1)采用insert语句将实验二给定的表格中数据插入数据库。

表一:

INSERT  INTO Students  VALUES('S01','王平','男','21','信息')

INSERT  INTO Students  VALUES('S02','刘华','女','19','信息')

INSERT  INTO Students  VALUES('S03','范君','女','18','计算机')

INSERT  INTO Students  VALUES('S04','李伟','男','19','计算机')

INSERT  INTO Students  VALUES('S05','黄河','男','18','数学')

INSERT  INTO Students  VALUES('S06','长江','男','20','数学')

INSERT  INTO Students  VALUES('S07','文涛','男','17','信息')

INSERT  INTO Students  VALUES('S08','杨丽','女','18','历史')

INSERT  INTO Students  VALUES('S09','欧浩','男','21','中文')

INSERT  INTO Students  VALUES('S10','刘洪','男','19','历史')

表二:

insert into Courses(Cno,Cname,Credits)

VALUES ('C01','英语',4)

insert into Courses VALUES('C02','数据结构','C05',2)

insert into Courses VALUES('C03','数据库','C02',2)

insert into Courses VALUES('C04','DB_设计','C03',3)

insert into Courses (Cno,Cname,Credits)VALUES('C05','C++',3)

insert into Courses VALUES('C06','网络原理','C07',3)

insert into Courses VALUES('C07','操作系统','C05',3)

表三:

INSERT  INTO Sc VALUES('S01','C01',92)

INSERT  INTO Sc VALUES('S01','C03',84)

INSERT  INTO Sc VALUES('S02','C01',90)

INSERT  INTO Sc VALUES('S02','C02',94)

INSERT  INTO Sc VALUES('S02','C03',82)

INSERT  INTO Sc VALUES('S03','C01',72)

INSERT  INTO Sc VALUES('S03','C02',90)

INSERT  INTO Sc VALUES('S04','C03',75)

   

(2)  在数据库中定义一个关系History_Student,其关系模式与Students完全一样,试将关系Students中的所有元组插入到关系History_Student中去。

建立History_Student表

create table History_Student

             (Sno  CHAR(5) NOT NULL,         /* Sno不能为空值*/

    Sname  CHAR(20) NOT NULL,           /*Sname不能为空值*/

    Ssex  CHAR(2),

    Sage  INT,

Sdept  CHAR(15),);

查询Students,并将查询结果插入History_Student表。

insert

into History_Student(Sno,Sname,Ssex,Sage,Sdept)

select Sno,Sname,Ssex,Sage,Sdept

from Students

二、修改数据

1)将学号为“S03”的学生年龄改为22岁,即要修改满足条件的一个元组的属性值。

update Students

set Sage=22

where Sno='S03'

2)将所有学生的年龄增加1岁。即要修改多个元组的值。

update Students

set Sage=Sage+1

3)将数学系所有学生的成绩置零。

注意:由于学生所在系的信息在Students表中,而学习成绩在Sc表中,因此,可以将SELECT子查询作为WHERE子句的条件表达式。

update Sc

set grade=0

where '数学'=

(select Sdept

from Students

where Students.Sno=Sc.Sno)

三、删除数据

1)删除学号为“S04”的学生选修的课号为“C02”的记录。

delete

from sc

where sno='s04' and cno='c02'

2)删除所有学生的选课记录。

delete

from sc

3)删除数学系所有学生的选课记录。

delete

from sc

where '数学'=

(select sdept

from students

where students.sno=sc.sno)

四、 查询数据

1、无条件查询

1) 查询全体学生的详细记录

select *

from students

2)查询全体学生的姓名(Sname)、学号(Sno)、所在系(Sdept)。

select sname,sno,sdept

from students

3)查询全体学生的姓名(Sname)、出生年份及学号(Sno)。

提示:由于SELECT子句的<目标列表达式>不仅可以是表中的属性列,也可以是表达式,故可以查询经过计算的值。

select sname,20##-sage

from students

4)查询全体学生的姓名、出生年份和学号,要求用小写字母表示学号中的字母。

select sname,20##-sage, lower(sno)

from students

2、条件查询

1)查询数学系全体学生的学号(Sno)和姓名 (Sname)。

select sno,sname

from students

where sdept='数学'

2)查询所有年龄在18-22岁(包括18岁和22岁)之间的学生姓名(Sname)及年龄(Sage)。

select sname,sage

from students

where 18<=sage and sage<=22

3)查询年龄不在18-22岁之间的学生姓名(Sname)及年龄(Sage)。

select sname,sage

from students

where sage not between 18 and 22

4)查询自动化系、数学和计算机系学生的学号(Sno)、姓名(Sname)和性别(Ssex)。

select sno,sname,ssex

from students

where sdept in('自动化系','数学','计算机')

5)查询既不是信息系、数学系、也不是计算机系的学生的姓名(Sname)和性别(Ssex)。

select sname,ssex

from students

where sdept not in('信息','数学','计算机')

6)查询所有姓刘的学生的姓名(Sname)、学号(Sno)和性别(Ssex)。

select sname,sno,ssex

from students

where sname like'刘%'

7)查询课程名为“DB_设计”的课程号(Cno)和学分(Credits)。

select cno,credits

from courses

where cname='DB_设计'

8)假设某些学生选修课程后没有参加考试,所以有选课记录,但没有考试成绩。试查询缺少成绩的学生的学号(Sno)和相应的课程号(Cno)。

select sno cno

from sc

where grade is null

9)查询所有有成绩的学生学号(Sno)和课程号(Cno)。

select sno,cno

from sc

where grade is not null

3、查询结果排序

1)查询选修了C03号课程的学生的学号(Sno)和成绩(Grade),并按成绩降序排列。

select sno,grade

from sc

where cno='c03'

order by grade desc

2)查询全体学生情况,查询结果按所在系的系名(Sdpet)升序排列,同一系中的学生按年龄(Sage)降序排列。

select *

from students

order by sdept, sage desc

4、集函数的使用

1)查询学生总人数。

select count(*)

from students

2)查询选修了课程的学生人数。

select count(distinct sno)

from sc

3)计算选修C01号课程的学生平均成绩。

select avg(grade)

from sc

where cno='c01'

4)查询选修C01号课程的学生最高分数。

select max(grade)

from sc

where cno='c01'

5、查询结果分组

1)求各个课程号(Cno)及相应的选课人数。

SELECT Cno , COUNT(Sno)

FROM Sc

GROUP BY Cno;

2)查询选修了3门或3门以上课程的学生学号(Sno)。

select sno

from sc

group by sno

having count(*)>=3

6、不同表之间的连接查询

1)查询每个学生及其选修课程的情况。

提示:本查询实际上是涉及Students与Sc两个表的连接操作。这两个表之间的联系是通过公共属性Sno实现的。

select students.*,sc.*

from students,sc

where students.sno=sc.sno

2)查询每个学生的学号(Sno)、姓名(Sname)、选修的课程名(Cname)及成绩(Grade)。

select students.sno,sname,cname,grade

from students,sc,courses

where students.sno=sc.sno and sc.cno=courses.cno

7、自身连接

1)查询每一门课的间接先修课(即先修课的先修课)。

在Courses表关系中,只有每门课的直接先修课信息,而没有先修课的先修课。要得到这个信息,必须先对一门课找到其先修课,再按此先修课的课程号,查找它的先修课程。这就需要要将Courses表与其自身连接。为方便连接运算,这里为Courses表取两个别名分别为A,B。

SELECT A.cno,A.cname,B.Pre_Cno

FROM Courses A, Courses B

WHERE A.Pre_Cno =B.Cno;

8、带谓词IN的嵌套查询

1)查询选修了编号为“C02”的课程的学生姓名(Sname)和所在系(Sdept)。

select sname,sdept

from students

where sno in

(select sno

from sc

where cno='c02')

2)查询与“李伟”在同一个系学习的学生学号(Sno)、姓名(Sname)和系名(Sdept)。

select sno,sname,sdept

from students

where sdept in

(select sdept

from students

where sname='李伟')

3)查询选修了课程名为“数据结构”的学生学号(Sno)和姓名(Sname)。

select sno, sname

from students

where sno in

(select sno

from sc

where cno in

(select cno

from courses

where cname='数据结构'))

9、带有比较运算符的嵌套查询

1)将查询与“李伟”在同一个系学习的学生学号(Sno)、姓名(Sname)和系名(Sdept)。

改为带有比较运算符的嵌套查询。

提示:由于一个学生只可能在一个系学习,因此子查询的结果是一个值,因此可以用=代替IN。

select sno,sname,sdept

from students

where sdept=

(select sdept

from students

where sname='李伟')

10、 带谓词ANY或ALL的嵌套查询

1)查询非自动化系的不超过自动化系所有学生的年龄的学生姓名和年龄。

select sname,sage

from students

where sage<all

(select sage

from students

where sdept='自动化')

and sdept!='自动化'

11、带谓词EXISTS的嵌套查询

1)查询所有选修了编号为“C01”课程的学生姓名(Sname)和所在系(Sdept)。

select sname,sdept

from students

where exists

(select *

from sc

where sno=students.sno and cno='c01')

2)查询与“李伟”在同一个系学习的学生学号(Sno)、姓名(Sname)和系名(Sdept)。

SELECT Sno, Sname, Sdept

FROM Students A

WHERE EXISTS

(SELECT *

FROM Students B

WHERE B.Sdept=A.Sdept AND B.Sname='李伟');

3)查询选修了所有课程的学生姓名(Sname)和所在系。

select sname,sdept

from students

where not exists

(select *

from courses

where not exists

(select *

from sc

where sno=students.sno

and cno=courses.cno))

实  验  四

实验项目名称  sql的数据控制语言及数据库的保护 (2课时,验证)

实验主要内容及方法  数据控制语言,与用户、权限管理

实验要求:

(1) 掌握用户的创建,删除,权限的授予、收回。

(2)掌握数据库的备份和还原。

实验目的:熟练掌握授权与撤权。

实验设备:装有SQL SERVER 2000的电脑

实验步骤:

一、用户管理

1.用企业管理器管理SQL Server登录

A. 增加一个Windows NT用户或用户组

1.选择Windows NT用户或用户组

2.设置登录用户的服务器角色为系统管理员

3.设置登录用户可访问的数据库为DBS。一个登录用户可以访问很多个数据库,可以在这里指定,指定后在相应的数据库中建立了相应的数据库用户。

4.按下“确定”,即可建立一个Windows NT用户,然后,可以在企业管理器中检验登录用户是否已经建立。

B. 增加一个SQL Server用户

1.增加一个SQL Server用户,用户名为“lwh”,密码为“lwhpass”。

打开Windows NT/安全性,右击登陆选择新建登陆,输入登陆名,选择SQL Sever身份验证,并输入密码

2.设置登录用户的常规属性

C. 修改用户

如:修改SQL Server用户lwh的属性。

右键点击登陆中的lwh,选择属性,即可修改

D. 删除用户

右键点击登陆中的lwh,选择删除

2、用查询分析器管理SQL Server登录

A. 增加一个Windows NT用户或用户组

如:增加一个Windows NT用户为“B029\sjxy”,授予登录访问权。

exec sp_grantlogin 'B029\sjxy'

B. 增加一个SQL Server用户

如:增加一个SQL Server用户,用户名为“lwh”,密码为“lwhpass”。

exec sp_addlogin 'lwh','lwhpass'

C. 删除用户

如:删除Windows NT用户“B029\sjxy”。

exec sp_revokelogin 'B029\sjxy'

 如:删除SQL Server用户lwh。

3.用企业管理器管理数据库用户

 A.增加一个数据库用户

打开数据库,右键点击“用户”,选择数据库用户。

B. 删除一个数据库用户

右键点击所选择的用户,再选择删除即可。

4、用查询分析器管理数据库用户

A.    增加一个数据库用户

在master中增加用户BUILTIN\Administrators

use master

go

exec sp_grantdbaccess 'BUILTIN\Administrators', 'BUILTIN\Administrators'

B.     删除一个数据库用户

将用户BUILTIN\Administrators从master 中删除。

use master

go

exec sp_revokedbaccess  'BUILTIN\Administrators'

二、权限管理

1.用企业管理器管理权限

在SQL Server中通过两种途径可实现对语句权限和对象权限的管理,从而实现对用户权限的设定。这两种途径分别为面向单一用户和面向数据库对象两种权限设置。

A. 面向单一用户的权限设置

为某一用户设置其对当前数据库所有对象的访问权限。如:设置数据库dbs的dbo用户的权限。

右键点击所选择的用户,再选择属性,在常规中的登陆名后点击权限即可设置。

B. 面向数据库对象的权限设置

为某一数据库对象设置当前数据库所有用户对其的访问权限。如:设置数据库dbs中数据表Course的权限。

右击表course,选择“所有任务”“管理权限”即可设置。

2、用查询分析器管理权限

利用企业管理器建立U1,U2,U3,U4,U5用户,启动查询分析器,用GRANT语句

对数据库存取权限进行授权操作。

(1)  利用查询分析器对这些用户进行授权.并加以验证

a.       把查询Student表的权限授给用户U1。

GRANT   SELECT

      ON      Students

      TO   U1

b.把对表和Course表的全部操作权限授予用户U2和U3

GRANT All PRIVILEGES

 ON  Courses

 TO U2, U3 

c.把对表Sc的查询权限授予所有用户。

GRANT SELECT

      ON  SC

         TO PUBLIC;

d.把查询Student表和修改学生学号的权限授给用户U4

GRANT UPDATE(Sno), SELECT

         ON  Students

         TO U4;

e.把对表SC的INSERT权限授予U5用户,并允许将此权限再授予其他用户

GRANT INSERT

      ON TABLE SC

      TO U5

WITH GRANT OPTION;

(2)利用查询分析器对这些用户进行收权.并加以验证.

a.把用户U4修改学生学号的权限收回                    

REVOKE UPDATE(Sno)

         ON Students

         FROM U4;

b.收回所有用户对表sc的查询权限

REVOKE SELECT

         ON  SC

         FROM PUBLIC;

c.把用户U5对SC表的INSERT 权限收回

REVOKE INSERT

         ON  SC

         FROM U5

CASCADE       

三、数据库备份

1.用企业管理器进行备份

在SQL Server中无论是数据库备份,还是事务日志备份、差异备份、文件或文件组备份都执行相同的步骤。

选择要备份的数据库右击看有任务/备份数据库,再依次选择备份方式,备份目的及重写方式。

四.数据库还原

1.      用企业管理器进行恢复

选择要还原的数据库右击看有任务/还原数据库,

指定还原的数据库名称、还原的数据库文件(以前的备份数据库文件)、还原方式(以前的备份方式)等。

更多相关推荐:
数据库原理实验报告

数据库原理实验报告学号姓名班级指导教师孟凡荣中国矿业大学计算机科学与技术学院20xx年3月数据库原理教师成绩评定表评定成绩的依据基础理论及基本技能的掌握独立解决实际问题的能力研究内容的理论依据和技术方法取得的主...

数据库原理实验报告(2)

南京晓庄学院数据库原理与应用课程实验报告实验二数据库的创建管理备份及还原实验所在院系数学与信息技术学院班级学号姓名1实验目的1掌握分别使用SQLServerManagementStudio图形界面和Transa...

数据库原理课程设计报告

《数据库系统原理课程设计报告》企业进销存管理系统系别:信息工程学院班级:计科091专业:计算机科学与技术20XX年11月15日1引言1.1问题描述随着市场竞争的不断加剧,作为中小企业也迫切需要规范管理。然而目前…

叠加原理实验报告

叠加原理实验报告1)(中国石油大学(华东),理学院,物理与光电工程系,应用物理学1402班)一、实验目的验证线性电路叠加原理的正确性,加深对线性电路的叠加性和齐次性的认识和理解。二、原理说明叠加原理指出:在有多…

数据库原理实验报告(1)

河南省高等教育自学考试实验报告册计算机及应用专业本科段数据库原理姓名赫秋扬准考证号01051020xx14所属地市河南省郑州市实验地点实验日期实验总成绩指导教师签名实验单位实验室意见主考院校审核意见河南科技大学...

《数据库原理与应用》实验报告一(1)

金融学院实验报告课程名称数据库原理与应用第1页共2页第2页共2页第3页共2页第4页共2页第5页共2页

数据库原理及应用实验报告 3

实验成绩数据库系统原理及应用实验报告三专业班级计科卓1101学号20xx16910233姓名范晓曈指导教师苏小玲20xx年10月25日实验三名称TSQL简单数据库查询一实验内容及要求1在实验二创建的数据库的基础...

数据库原理实验报告(4)

南京晓庄学院数据库原理与应用课程实验报告实验四查询设计实验所在院系数学与信息技术学院班级学号姓名1实验目的1了解查询的目的掌握SELECT语句的基本语法和查询条件的表示方法2掌握数据排序和数据联接查询的方法3掌...

数据库原理课程设计报告格式(含任务书)

科技学院课程设计报告20xx20xx年度第1学期名称数据库原理课程设计院系班级学号学生姓名指导教师设计周数1成绩日期20xx年6月8日数据库原理课程设计任务书一目的与要求1这门课是为计算机科学与技术专业的学生在...

数据库原理实验报告-T-SQL编程

XX大学XX学院1图1图22用户存储过程的编辑修改首先创建存储过程selectstudents在此基础上将该过程更改为检索计算机专业的学生信息用修改过程命令重新定义该存储过程21输入以下代码alterproce...

数据库原理及应用实验报告 7

数据库系统原理及应用实验报告七专业班级计算机科学与技术学号20xx16910233姓名范晓曈指导教师苏小玲20xx年11月28日实验七名称SQLServer触发器和游标一实验内容及要求使用教材建立的studen...

数据库原理与应用综合实验报告

华北科技学院计算机学院综合性实验实验报告课程名称数据库原理与应用D实验学期20xx至20xx学年第2学期学生所在院部计算机学院年级20xx级专业班级信管B111班学生姓名林枕祥学号20xx07034116任课教...

数据库原理实验报告(26篇)