SQL Server 实验
第二章:管理数据库和表实例
1.         创建数据库(两种方法:图形界面和Transact-SQL语句)请用语句创建名为mydatabase的数据库,并要求设置其保存路径为f盘,数据文件初始大小为100mb,最大为5000mb,增长为100mb,日志文件初始大小为50mb,最大为2000mb,增长为50mb
Create database mydatabase
On
(name=’mydatabase_dat’,
Filename=’f:\sql\mydatabase_dat.mdf’,
Size=100,
Maxsize=5000,
Filegrowth=100)
Log on
(name=’mydatabase_log’,
Filename=’f:\sql\mydatabase_log.ldf’,
Size=50,
Maxsize=2000,
Filegrowth=50)
2.         自行完成数据库的管理,包括属性配置、收缩数据库、分离数据库、附加数据库
3.         mydatabase中创建表(两种方法:图形界面和Transact-SQL语句),请用语句创建名为学生成绩表的一个表,表中包含学号、姓名、性别、语文、数学,(数据类型自行定义),并需要设置主键
Create table 学生成绩表
(姓名 varchar(12),
性别 varchar(4),
语文 int,
数学 int,
学号 varchar(12))
4.         向表中插入记录(图形界面和transact语句两种方法都进行尝试),这里不再演示
5.         更改表中的记录(图形界面和transact语句两种方法都进行尝试)
6.         删除表中的记录(图形界面和transact语句两种方法都进行尝试)
7.         SSMS管理控制台中导入数据库NorthWind,完成如下要求:
1)        查询供应商表: A 返回所有行,并将结果放入新表中 B 返回供应商ID,公司名称,地址  C 返回地区为华南、西南、华东的所有记录 D 返回所有传真为空的所有记录 E
2)        查询产品表:A 查询全部,但只返回前30%记录   B 返回产品ID,产品名称,供应商ID,单价,库存量 C 查询单价大于20,并按降序排序    D 查询库存量大于5且小于100  E 查询所有油类产品(有油字符的)  F 查询单价小于15或者大于40
3)        复杂查询:
Ø  返回产品名称,公司名称,单价,并按升序排列(利用供应商表和产品表):
select 产品.产品名称,产品.单价,供应商.公司名称from 产品,供应商
where 产品.供应商ID=供应商.供应商ID order by 单价
Ø  返回公司名称,货主名称,姓氏,名字(利用订单,雇员,客户表,请使用别名)
            select 客户.公司名称,订单.货主名称,雇员.姓氏,雇员.名字
from 客户,订单,雇员
where 订单.客户ID=客户.客户ID and 订单.雇员id=雇员.雇员id
 
查询尊称为“女士”的雇员姓氏,名字,货主城市,以及雇员ID和公司名称
select 雇员.姓氏,雇员.名字,订单.货主城市,订单.雇员id,客户.公司名称from 雇员,订单,客户
where 雇员.雇员id=订单.雇员id
and 客户.客户id=订单.客户id and 订单.雇员id in(select 雇员id from 雇员where 尊称='女士')
order by 雇员id desc
 
第三章:安全管理
1.   windows身份验证:
Sp_grantlogin ‘login’
例子:允许test域用户xzsqlusers组连接SQL服务:
允许本地组Users连接SQL服务
sp_grantlogin ‘test\xz’
sp_grantlogin ‘test\sqlusers’
sp_grantlogin ‘BUILTIN\users’
go

 
Sp_denylogin ‘login’
 例子:
         禁止test域用户xzsqlusers组连接SQL服务:
         禁止本地组Users连接SQL服务
    sp_denylogin ‘test\xz’
    sp_denylogin ‘test\sqlusers’
    sp_denylogin ‘BUILTIN\users’
    go
删除登录标识:
Sp_revokelogin ‘login’
例子:
sysxlogins系统表中删除xzsqlusers
   sp_revokelogin ‘test/xz’
   sp_revokelogin ‘test/sqlusers’
   go
创建SQL登录标识:
Exec  Sp_addlogin ‘login’
  ‘password’
  ‘database’
  ‘language’
  ‘sid’
  ‘encryption_option’
举例:Exec Sp_addlogin test1
Exec Sp_addlogin test2, password, northwind
      修改登录标识:
Exec Sp_password ‘oldpsw’,’newpsw’,’login’
Exec Sp_defaultdb ‘login’,’database’
Exec Sp_defaultlanguage  ‘login’,’language
删除SQL登录标识:
exec sp_droplogin login
2.   数据库角色:
创建和删除自定义角色:
Sp_addrole  ‘role’, ‘owner’
   Role为创建的角色
   Owner为角色的拥有者,默认为dbo
Sp_droprole ‘role’
Use northwind
Go
Sp_addrole ‘sales’, ‘dbo’
Go
Sp_addrole ‘manager’
Go
Sp_droprole ‘manager’
Go
为固定服务器角色添加删除成员:
Sp_addrole  ‘role’, ‘owner’
   Role为创建的角色
   Owner为角色的拥有者,默认为dbo
Sp_droprole ‘role’
为数据库角色添加删除成员:
Sp_addrolemember ‘role’, ‘account’
Sp_droprolemember ‘role’, ‘account’
   Role为固定或自定义数据库角色
   AccountSQL登录标识或NT帐号
管理数据库用户:
Sp_grantdbaccess ‘login’, ‘name_in_db’
Sp_revokedbaccess ‘name_in_db’
   Login为登录标识
   Name_in_db为在数据库里的用户帐号,默认为同名
 
3.   权限授予、拒绝、回收
northwind的订单表的select许可授予所有用户:
Use northwind
Go
Grant select
        on 订单
        to public
go
sales表的数据修改许可授予自定义角色salesmanger
Grant insert,update,delete
        on sales
        to salesmanger
Go
允许用户xz查看publishers表的所有内容,但只允许修改pub_id列:
Grant select,update{pub_id}
        on publishers
        to xz
Go
 
 
 
第四章 备份与还原
1Transanct-SQL语句创建备份设备:
Sp_addumpdevice ‘devicetype’, ‘logical_name’,‘physical_name’
Devicetype:备份设备类型
    disk:硬盘文件
    tape:磁带设备
    pipe:命名管道
Logical_name:备份设备的逻辑名称
Physical_name:物理名称
1
Use master
Go
Sp_addumpdevice ‘disk’,  ‘backup1’,
       ‘d:\mssql7\backup\backup1.dat’
Go
2
Use master
Go
Sp_addumpdevice ‘disk’,  ‘backup2’,
       ‘\\xz\backup\backup2.dat’
Go
2、查看备份设备
Sp_helpdevice [‘name’]
v  指定设备的name,可以查看该设备
v  不指定,查看服务器上所有设备
v  返回的cntrltype参数:
       0:数据库设备
       2:硬盘备份设备
       34:软盘备份设备
       5:磁带备份设备
3、删除备份设备
v  Sp_dropdevice ‘device’,  [‘delfile’]
v  Device:设备的逻辑名称
v  Delfile:可选项,指定是否删除对应的物理文件
v  例:
     use master
       go
       sp_dropdevice ‘backup’, ‘delfile’
       go
4、备份数据库
v  Backup database 数据库名 to 设备名
例如:
Use master
Go
Backup database pubs to backup1
Go
5、备份数据库文件和文件组
v  Backup database 数据库名
       file=‘文件名’|filegroup=‘文件组名’
       to 设备名
6备份事务日志
v  Backup log 数据库名
       with no_log
       to 设备名
7、数据库恢复
restore database 数据库名 from 设备名
8恢复事务日志
Restore log 数据库名from 备份设备名