–三、實驗步驟:
–1、事務操作
–在選修資料庫中,以Student(sno,sname,ssex,sage,sdept),Course(cno,cname,cpno,credit),SC(sno,cno,grade)表創建下列事務,
–(1)將學生“吳敏”的“計算機基礎”的課程成績改為77分,
DECLARE @sno char(9),@cno char(5)
select @sno=sno from student where sname='吳敏'
select @cno=cno from course where cname='計算機基礎'
BEGIN TRANSACTION
UPDATE SC
SET grade=77
WHERE sno =@sno and cno=@cno
COMMIT TRAN ;
select sc.*,s.sname from sc left join student s on s.sno=sc.sno;
–(2)將課程“資料結構”和“計算機基礎”的課程號互換,
DECLARE @cno1 char(5),@cno2 char(5)
select @cno1=cno from course where cname='資料結構'
select @cno2=cno from course where cname='計算機基礎'
BEGIN TRANSACTION
UPDATE Course
SET cname='計算機基礎'
WHERE cno=@cno1
UPDATE Course
SET cname='資料結構'
WHERE cno=@cno2
COMMIT TRAN;
select *from course;
–(3)將學生“吳敏”選修的“計算機基礎”課程轉給“李勇”,“資料結構”轉給“王敏”,
DECLARE @cno11 char(5),@cno22 char(5) ,@grade1 int,@grade2 int,@sno1 char(9),@sno2 char(9),@sno3 char(9)
select @sno1=sno from student where sname='吳敏'
select @sno2=sno from student where sname='李勇'
select @sno3=sno from student where sname='王敏'
select @cno11=cno from course where cname='資料結構'
select @cno22=cno from course where cname='計算機基礎'
select @grade1=grade from sc where cno=@cno11
select @grade2=grade from sc where cno=@cno22
BEGIN TRANSACTION
delete sc where sno=@sno1 and cno in(@cno11,@cno22)
insert into sc values(@sno2,@cno22,@grade2)
insert into sc values(@sno1,@cno11,@grade1)
COMMIT TRAN;
select sc.*,s.sname,c.cname from sc ,course c, student s where s.sno=sc.sno and c.cno=sc.cno;
–2、安全管理
–(1)創建一個Windows認證的登錄賬戶newuser,并定義資料庫用戶new_user,允許該用戶對選修資料庫進行查詢,
exec sp_addlogin newuser,'123456';
exec sp_grantdbaccess newuser,new_user ;
grant select on student to new_user;
grant select any table to new_user; -- 所有表的select 權限賦予user
–(2)創建一個Windows認證的登錄賬戶student,并定義資料庫用戶student_user,設定允許該用戶對選修資料庫進行查詢,對SC的grade列進行插入、修改和洗掉,
exec sp_addlogin student,'123456';
exec sp_grantdbaccess student,student_user ;
grant select on sc to student_user;
grant insert,update,delete on sc(grade) to student_user;
–3、資料庫的備份與恢復
–(1)對學生選修資料庫進行完整備份、差異備份、事務日志備份和檔案組備份,
– 創建備份設備
BACKUP DATABASE SC to disk=‘D:\sc\sc.bak’ with init,
name=‘D:sc\back_sc’;
BACKUP DATABASE SC TO disk=‘D:\sc\sc_backup.bak’;
BACKUP DATABASE SC TO disk=‘D:\sc\firstbackup’ with differential,noinit ;
BACKUP LOG SC TO disk=‘D:\sc\firstbackup’ with noinit ;
BACKUP DATABASE SC FILEGROUP=‘Secondary’ TO disk=‘firstbackup’ with noinit ;
資料備份先貼著吧,我也不知道咋做
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/233098.html
標籤:其他
