1、 ? 例3-12创建把讲授c5课程的教师的工资增加100元。 /*t表(教师基本情况表)的结构为t(tno,tn,sex,age,prof,sal,dept)分别表示教师的编号,姓名,性别,年龄,职称,工资,系别。tc表(教师授课表)的结构为tc(tno,cno)分别表示教师的编号,课程编号。 update t set sal=sal+100 where tno in (select t.tno from t,tc where t.tno=tc.tno and o=c5) /*通过连接查询找到讲授c5课程的教师编号。 下面是删除一行记录的例子。 例3-14 删除张益琳教师的记录。 delete
2、 from t where tn= 张益琳 例3-16 删除李明同学选课的记录。 delete from sc where sno= (select sno from s where sn= 李明) 三、数据控制语言 数据控制语言(dcl)是用来设置或更改数据库用户或角色权限的语句,包括grant, deny,revoke等语句。在默认状态下,只有sysadmin,dbcreator,db_owner或 db_securityadmin等人员才有权力执行数据控制语言。 3.1 语句权限与角色的授予 sql语言使用grant语句为用户授予语句权限的语法格式为: grant <语句权限>
3、;|&角色& ,&+ to &用户名&|public,& with admin option 其语义为:将指定的语句权限授予指定的用户或角色。其中: (1)pulbic代表数据库中的全部用户; (2)with admin option为可选项,指定后则允许被授权的用户将指定的系统特权或角色再授予其他用户或角色。 例3-17 给用户 mary 和 john 以及 windows nt 组 corporatebobj 授予多个语 句权限。 grant create database, create table to mary, john, corporatebobj 例3-18 为用户zhangy
4、ilin授予create table的语句权限。 grant create table to zhangyilin 同语句权限的授予类似,sql语言使用grant语句为用户授予对象权限,其语法格 式为: grant all|&对象权限&(列名,列名+)+*,&+on &对象名&将指定的操作对象的对象权限授予指定的用户或角色。 (1)all代表所有的对象权限。 (2)列名用于指定要授权的数据库对象的一列或多列。如果不指定列名,被授权的用户将在数据库对象的所有列上均拥有指定的特权。实际上,只有当授予insert、update权限时才需指定列名。 (3)on子句用于指定要授予对象权限的数据库对象名,
5、可以是基本表名、视图名等。 (4)with admin option为可选项,指定后则允许被授权的用户将权限再授予其他用户或角色。 例3-19 在权限层次中授予对象权限。首先,给所有用户授予 select 权限,然后, 将特定的权限授予用户 mary,john 和 tom。 grant select on s to public grant insert, update, delete on s to mary, john, tom 例3-20 将查询t表和修改教师职称的权限授予user3,并允许将此权限授予其他 用户。 grant select,update(prof) on t to us
6、er3 with admin option 上例中,user3具有此对象权限,并可使用grant命令给其他用户授权,如下例, user3将此权限授予user4: on t to user4 数据库管理员可以使用revoke语句收回语句权限,其语法格式为: revoke & from & 例:收回用户zhangyilin所拥有的create table的语句权限。 revoke create table from zhangyilin 所有授予出去的权力在必要时都可以由数据库管理员和授权者收回,收回对象权限仍然使用revoke语句,其语法格式为: 例3-21 收回用户user1对c表的查询权限。
7、 revoke select on c from user1 例3-22 收回用户user3查询t表和修改教师职称的权限。 revoke select,update(prof) from user3 在上例中,user3将对t表的权限授予了user4,在收回user3对t表的权限的同 时,系统会自动收回user4对t表的权限。 例3-23 首先从 public 角色中收回 select 权限,然后,收回用户 mary,john 和 tom 的特定权限。 use pubs revoke select on s from public revoke insert, update, delete f
8、rom mary, john, tom deny语句用于拒绝给当前数据库内的用户或者角色授予权限,并防止用户或角色通 过其组或角色成员继承权限。 否定语句权限的语法形式为: deny all|&+ 否定对象权限的语法形式为: 例3-24 首先给 public 角色授予 select 权限,然后,拒绝用户 mary,john 和 tom 的特定权限。 deny select, insert, update, delete to mary,john,tom 四、系统存储过程 系统存储过程的部分示例如下: sp_addtype:用于定义一个用户定义数据类型; sp_configure:用于管理服务器
9、配置选项设置; xp_sendmail:用于发送电子邮件或寻呼信息; sp_stored_procedures:用于返回当前数据库中的存储过程的清单; sp_help:用于显示参数清单和其数据类型; sp_depends:用于显示存储过程依据的对象或者依据存储过程的对象; sp_helptext:用于显示存储过程的定义文本; sp_rename:用于修改当前数据库中用户对象的名称。 五、变量 变量是一种语言中必不可少的组成部分。transact-sql语言中有两种形式的变量,一 种是用户自己定义的局部变量,另外一种是系统提供的全局变量。 1. 局部变量 局部变量是一个能够拥有特定数据类型的对象
10、,它的作用范围仅限制在程序内部。局部变量被引用时要在其名称前加上标志“”,而且必须先用declare命令定义后才可以使用。 ? 定义局部变量的语法形式如下: declaer ,local_variabledata_type- *n+ 其中,参数local_variable用于指定局部变量的名称,变量名必须以符号开头, 并且局部变量名必须符合sql server的命名规则。参数data_type用于设置局部变量 的数据类型及其大小。data_type可以是任何由系统提供的或用户定义的数据类型。但是,局部变量不能是 text,ntext 或 image 数据类型。 使用declare命令声明并创建局部变量之后,会将其初始值设为null,如果想要设 定局部变量的值,必须使用select命令或者set命令。其语法形式为: set local_variable = expression 或者 select local_variable = expression ,.n 其中,参数local_variable是给其赋值并声明的局部变量,参数expression是任何有 效的sql server表达式。 例3-26 创建一个myvar 变量,然后将一个字符串值放在变量中,最后输出 myvar 变量的值。 declare my
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1