SQL授予用户权限的语句

上传人:痛*** 文档编号:89255311 上传时间:2022-05-12 格式:DOC 页数:23 大小:138KB
收藏 版权申诉 举报 下载
SQL授予用户权限的语句_第1页
第1页 / 共23页
SQL授予用户权限的语句_第2页
第2页 / 共23页
SQL授予用户权限的语句_第3页
第3页 / 共23页
资源描述:

《SQL授予用户权限的语句》由会员分享,可在线阅读,更多相关《SQL授予用户权限的语句(23页珍藏版)》请在装配图网上搜索。

1、-插入多行数据的语法格式为:INSERT INTO table_or_view (column_list) 子查询例3-7 求出各位学生的平均成绩,把结果存放在新表AVGSCORE中。程序清单如下:/*首先建立新表AVGSCORE,用来存放*和学生的平均成绩。*/CREATE TABLE AVGSCORE(SNO CHAR(10),AVGSCORE SMALLINT) Go/*利用子查询求出SC表中各位学生的平均成绩,把结果存放在新表AVGSCORE中。*/INSERT INTO AVGSCORESELECT SNO,AVG(SCORE) FROM SCGROUP BY SNO 例3-12 创

2、立把讲授C5课程的教师的工资增加100元。程序清单如下: /*T表教师根本情况表的构造为T(TNO,TN,SE*,AGE,PROF,SAL,DEPT)分别表示教师的编号,性别,年龄,职称,工资,系别。TC表教师授课表的构造为TC(TNO,CNO)分别表示教师的编号,课程编号。*/ UPDATE T SET SAL=SAL+100WHERE TNO IN (SELECT T.TNO FROM T,TC WHERE T.TNO=TC.TNO AND TC.CNO=C5) /*通过连接查询找到讲授C5课程的教师编号。*/ 下面是删除一行记录的例子。例3-14 删除张益琳教师的记录。程序清单如下: D

3、ELETE 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 | ,| TO |PUBL

4、IC,| WITH ADMIN OPTION 其语义为:将指定的语句权限授予指定的用户或角色。其中:1PULBIC代表数据库中的全部用户;2WITH ADMIN OPTION为可选项,指定后则允许被授权的用户将指定的系统特权或角色再授予其他用户或角色。 例3-17给用户 Mary 和 John以及 Windows NT 组 CorporateBobJ 授予多个语句权限。程序清单如下: GRANT CREATE DATABASE, CREATE TABLE TO Mary, John, CorporateBobJ 例3-18 为用户ZhangYiLin授予CREATE TABLE的语句权限。程序

5、清单如下: GRANT CREATE TABLE TO ZhangYiLin 同语句权限的授予类似,SQL语言使用GRANT语句为用户授予对象权限,其语法格式为: GRANT ALL|(列名,列名),ON TO |PUBLIC,| WITH ADMIN OPTION 其语义为:将指定的操作对象的对象权限授予指定的用户或角色。其中:1ALL代表所有的对象权限。2列名用于指定要授权的数据库对象的一列或多列。如果不指定列名,被授权的用户将在数据库对象的所有列上均拥有指定的特权。实际上,只有当授予INSERT、UPDATE权限时才需指定列名。3ON子句用于指定要授予对象权限的数据库对象名,可以是根本表

6、名、视图名等。4WITH ADMIN OPTION为可选项,指定后则允许被授权的用户将权限再授予其他用户或角色。 例3-19在权限层次中授予对象权限。首先,给所有用户授予 SELECT 权限,然后,将特定的权限授予用户 Mary,John 和 Tom。程序清单如下: GRANT SELECT ON s TO public GO GRANT INSERT, UPDATE, DELETE ON s TO Mary, John, Tom GO 例3-20 将查询T表和修改教师职称的权限授予USER3,并允许将此权限授予其他用户。程序清单如下: GRANT SELECT,UPDATE(PROF) ON

7、 T TO USER3 WITH ADMIN OPTION 上例中,USER3具有此对象权限,并可使用GRANT命令给其他用户授权,如下例,USER3将此权限授予USER4: GRANT SELECT,UPDATE(PROF) ON T TO USER4数据库管理员可以使用REVOKE语句收回语句权限,其语法格式为: REVOKE | ,| FROM |PUBLIC,| 例:收回用户ZHANGYILIN所拥有的CREATE TABLE的语句权限。 REVOKE CREATE TABLE FROM ZHANGYILIN所有授予出去的权力在必要时都可以由数据库管理员和授权者收回,收回对象权限仍然使

8、用REVOKE语句,其语法格式为: REVOKE | ,| FROM |PUBLIC,| 例3-21 收回用户USER1对C表的查询权限。程序清单如下:REVOKE SELECT ON CFROM USER1 例3-22 收回用户USER3查询T表和修改教师职称的权限。程序清单如下:REVOKE SELECT,UPDATE(PROF)ON TFROM USER3 在上例中,USER3将对T表的权限授予了USER4,在收回USER3对T表的权限的同时,系统会自动收回USER4对T表的权限。 例3-23首先从 public 角色中收回 SELECT 权限,然后,收回用户 Mary,John 和 T

9、om 的特定权限。程序清单如下:USE pubs GOREVOKE SELECT ON s FROM publicGOREVOKE INSERT, UPDATE, DELETE ON s FROM Mary, John, Tom DENY语句用于拒绝给当前数据库内的用户或者角色授予权限,并防止用户或角色通过其组或角色成员继承权限。 否认语句权限的语法形式为: DENY ALL| ,| TO |PUBLIC,| 否认对象权限的语法形式为: DENY ALL|(列名,列名),ON TO |PUBLIC,| 例3-24首先给 public 角色授予 SELECT 权限,然后,拒绝用户 Mary,Jo

10、hn 和 Tom 的特定权限。程序清单如下: USE pubs GO GRANT SELECT ON s TO public GO DENY SELECT, INSERT, UPDATE, DELETE ON s TO Mary,John,Tom四、系统存储过程系统存储过程的局部例如如下: sp_addtype:用于定义一个用户定义数据类型; sp_configure:用于管理效劳器配置选项设置; *p_sendmail:用于发送电子邮件或寻呼信息; sp_stored_procedures:用于返回当前数据库中的存储过程的清单; sp_help:用于显示参数清单和其数据类型; sp_depe

11、nds:用于显示存储过程依据的对象或者依据存储过程的对象; sp_helpte*t:用于显示存储过程的定义文本; sp_rename:用于修改当前数据库中用户对象的名称。五、变量 变量是一种语言中必不可少的组成局部。Transact-SQL语言中有两种形式的变量,一种是用户自己定义的局部变量,另外一种是系统提供的全局变量。 1. 局部变量局部变量是一个能够拥有特定数据类型的对象,它的作用范围仅限制在程序内部。局部变量被引用时要在其名称前加上标志,而且必须先用DECLARE命令定义后才可以使用。 定义局部变量的语法形式如下: DECLAER local_variable data_type n

12、其中,参数local_variable用于指定局部变量的名称,变量名必须以符号开头,并且局部变量名必须符合SQL Server的命名规则。参数data_type用于设置局部变量的数据类型及其大小。data_type可以是任何由系统提供的或用户定义的数据类型。但是,局部变量不能是 te*t,nte*t 或 image 数据类型。 使用DECLARE命令声明并创立局部变量之后,会将其初始值设为NULL,如果想要设定局部变量的值,必须使用SELECT命令或者SET命令。其语法形式为: SET local_variable = e*pression 或者 SELECT local_variable =

13、 e*pression ,.n 其中,参数local_variable是给其赋值并声明的局部变量,参数e*pression是任何有效的SQL Server表达式。 例3-26创立一个myvar 变量,然后将一个字符串值放在变量中,最后输出 myvar 变量的值。程序清单如下: DECLARE myvar char(20) select myvar = This is a test SELECT myvar GO 例3-27通过查询给变量赋值。程序清单如下: USE adventureworks GO DECLARE rows int SET rows = (SELECT COUNT(*) FR

14、OM humanresources.employee) 2. 全局变量除了局部变量之外,SQL Server系统本身还提供了一些全局变量。全局变量是SQL Server系统内部使用的变量,其作用范围并不仅仅局限于*一程序,而是任何程序均可以随时调用。全局变量通常存储一些SQL Server的配置设定值和统计数据。用户可以在程序中用全局变量来测试系统的设定值或者是Transact-SQL命令执行后的状态值。在使用全局变量时应该注意以下几点:1全局变量不是由用户的程序定义的,它们是在效劳器级定义的。2用户只能使用预先定义的全局变量。3引用全局变量时,必须以标记符开头。4局部变量的名称不能与全局变量

15、的名称一样,否则会在应用程序中出现不可预测的结果。 例3-29显示到当前日期和时间为止试图登录SQL Server的次数。程序清单如下: SELECT GETDATE( ) AS 当前的时期和时间, CONNECTIONS AS 试图登录的次数六、运算符 运算符是一些符号,它们能够用来执行算术运算、字符串连接、赋值以及在字段、常量和变量之间进展比较。在SQL Server 2005中,运算符主要有以下六大类:算术运算符、赋值运算符、位运算符、比较运算符、逻辑运算符和字符串串联运算符。 1算术运算符算术运算符可以在两个表达式上执行数学运算,这两个表达式可以是数字数据类型分类的任何数据类型。算术运

16、算符包括加+、减、乘*、除/和取模%。 2赋值运算符 Transact-SQL 中只有一个赋值运算符,即=。赋值运算符使我们能够将数据值指派给特定的对象。另外,还可以使用赋值运算符在列标题和为列定义值的表达式之间建立关系。3. 位运算符使我们能够在整型数据或者二进制数据image 数据类型除外之间执行位操作。此外,在位运算符左右两侧的操作数不能同时是二进制数据。表3-1列出了所有的位运算符及其含义。运算符含义&按位 AND按位 AND两个操作数|按位 OR按位 OR两个操作数按位互斥 OR按位互斥 OR两个操作数4比较运算符比较运算符亦称为关系运算符,用于比较两个表达式的大小或是否一样,其比较

17、的结果是布尔值,即TRUE表示表达式的结果为真、FALSE表示表达式的结果为假以及UNKNOWN。除了 te*t,nte*t 或 image数据类型的表达式外,比较运算符可以用于所有的表达式。5逻辑运算符逻辑运算符可以把多个逻辑表达式连接起来。逻辑运算符包括AND、OR和NOT等运算符。逻辑运算符和比较运算符一样,返回带有 TRUE 或 FALSE 值的布尔数据类型。三个运算符的优先级别为:NOT,AND,OR。6字符串串联运算符字符串串联运算符允许通过加号+进展字符串串联,这个加号即被称为字符串串联运算符。例如对于语句SELECT abc+def,其结果为abcdef。 在SQL Serve

18、r 2005中,运算符的优先等级从高到低如下所示,如果优先等级一样,则按照从左到右的顺序进展运算。1括号:;2乘、除、求模运算符:*,/,%;3加减运算符:,;4比较运算符:=,=,=,!=,!,!;5位运算符:,&,|;6逻辑运算符:NOT;7逻辑运算符:AND;8逻辑运算符:OR。七、函数 在Transact-SQL语言中,函数被用来执行一些特殊的运算以支持SQL Server的标准命令。SQL Server包含多种不同的函数用以完成各种工作,每一个函数都有一个名称,在名称之后有一对小括号,如:gettime( )。大局部的函数在小括号中需要一个或者多个参数。 Transact-SQL 编

19、程语言提供了四种函数:行集函数、聚合函数、Ranking函数、标量函数。1. 行集函数 行集函数可以在Transact-SQL语句中当作表引用。 例3-33通过行集函数OPENQUERY()执行一个分布式查询,以便从效劳器local中提取表department中的记录。程序清单如下: select * from openquery(local,select * from department) 2. 聚合函数 聚合函数用于对一组值进展计算并返回一个单一的值。除COUNT 函数之外,聚合函数忽略空值。聚合函数经常与 SELECT 语句的 GROUP BY 子句一同使用。仅在以下项中聚合函数允许作

20、为表达式使用:SELECT 语句的选择列表子查询或外部查询;COMPUTE 或 COMPUTE BY 子句;HAVING 子句。 计算 Adventure Works Cycles 的副总所用的平均休假小时数以及总的病假小时数。对检索到的所有行,每个聚合函数都生成一个单独的汇总值。 程序清单如下。 USE AdventureWorks; GO SELECT AVG(VacationHours)as Average vacation hours, SUM (SickLeaveHours) as Total sick leave hours FROM HumanResources.Employee

21、 WHERE Title LIKE Vice President% Ranking函数为查询结果数据集分区中的每一行返回一个序列值。依据此函数,一些行可能取得和其他行一样的序列值。Transact-SQL提供以下一些Ranking函数:RANK;DENSE_RANK;NTILE;ROW_NUMBER。表3-4 标量函数的分类函数分类解释配置函数返回当前的配置信息游标函数返回有关游标的信息日期和时间函数对日期和时间输入值进展处理数学函数对作为函数参数提供的输入值执行计算元数据函数返回有关数据库和数据库对象的信息平安函数返回有关用户和角色的信息字符串函数对字符串char 或 varchar输入值执

22、行操作系统函数执行操作并返回有关SQL Server中的值、对象和设置的信息系统统计函数返回系统的统计信息文本和图像函数对文本或图像输入值或列执行操作,返回有关这些值的信息1字符串函数l 字符串函数可以对二进制数据、字符串和表达式执行不同的运算,大多数字符串函数只能用于char和varchar数据类型以及明确转换成char和varchar的数据类型,少数几个字符串函数也可以用于binary和varbinary数据类型。l 字符串函数可以分为以下几大类: 根本字符串函数:UPPER,LOWER,SPACE,REPLICATE,STUFF,REVERSE,LTRIM,RTRIM。 字符串查找函数:

23、CHARINDE*,PATINDE*。 长度和分析函数:DATALENGTH,SUBSTRING,RIGHT。 转换函数:ASCH,CHAR,STR,SOUNDE*,DIFFERENCE。 例3-38使用 LTRIM 函数删除字符变量中的起始空格。 程序清单如下: DECLARE string_to_trim varchar(60) SET string_to_trim = Five spaces are at the beginning of this string. SELECT Here is the string without the leading spaces: + LTRIM(

24、string_to_trim) 例3-39使用可选的start_location参数从addressline1列的第2个字符开场查找shoe 程序清单如下。 USE adventureworks SELECT CHARINDE*(shoe, addressline1,2) FROM person.address WHERE addressid = 52日期和时间函数函数参数功能DATEADDdatepart,number,date以datepart指定的方式,返回date加上number之和DATEDIFFdatepart,date1,date2以datepart指定的方式,返回date2与d

25、ate1之差DATENAMEdatepart,date返回日期date中datepart指定局部所对应的字符串DATEPARTdatepart,date返回日期date中datepart指定局部所对应的整数值DAYdate返回指定日期的天数GETDATE返回当前的日期和时间MONTHdate返回指定日期的月份数YEARdate返回指定日期的年份数例3-42显示在humanresources.employee 表中雇用日期到当前日期间的天数。程序清单如下。USE adventureworks SELECT DATEDIFF(day, hiredate, getdate() AS diffdays

26、 FROM humanresources.employee 例3-43从GETDATE函数返回的日期中提取月份名。程序清单如下:SELECT DATENAME(month, getdate() AS Month Name 数学函数数学函数用于对数字表达式进展数学运算并返回运算结果。数学函数可以对SQL Server提供的数字数据decimal、integer、float、real、money、smallmoney、smallint 和 tinyint进展处理。例3-45在同一表达式中使用CEILING(),FLOOR(),ROUND()函数。程序清单如下:select ceiling(13.4

27、), floor(13.4), round(13.4567,3) 系统函数 系统函数用于返回有关SQL Server系统、用户、数据库和数据库对象的信息。系统函数可以让用户在得到信息后,使用条件语句,根据返回的信息进展不同的操作。与其他函数一样,可以在SELECT语句的SELECT和WHERE子句以及表达式中使用系统函数。 转换函数有两个:CONVERT和CAST。 CAST函数允许把一个数据类型强制转换为另一种数据类型,其语法形式为: CAST( e*pressionAS data_type ) CONVERT函数允许用户把表达式从一种数据类型转换成另一种数据类型,还允许把日期转换成不同的样

28、式,其语法形式为: CONVERT (data_type(length),e*pression ,style) 例3-46 例如检索列表价格的第一位是 3 的产品的名称,并将ListPrice转换为 int。程序清单如下。USE AdventureWorks GOSELECT SUBSTRING(Name, 1, 30) AS ProductName, ListPrice FROM Production.Product WHERE CAST(ListPrice AS int) LIKE 3%GO例3-47用style参数将当前日期转换为不同格式的字符串。程序清单如下:SELECT 101=CO

29、NVERT(char, GETDATE(), 101),1=CONVERT(char, GETDATE(), 1),112=CONVERT(char, GETDATE(), 112)例3-48从adventureworks数据库中返回person.contact表的首列名称程序清单如下。USE adventureworks SELECT COL_NAME(OBJECT_ID(person.contact), 1) 例3-49检查 sysdatabases 中的每一个数据库,使用数据库标识号来确定数据库名称。程序清单如下:USE masterSELECT dbid, DB_NAME(dbid)

30、AS DB_NAMEFROM sysdatabases ORDER BY dbid7WAITFOR语句 WAITFOR语句用于暂时停顿执行SQL语句、语句块或者存储过程等,直到所设定的时间已过或者所设定的时间已到才继续执行。 WAITFOR语句的语法形式为:WAITFOR DELAY time | TIME time 其中,DELAY用于指定时间间隔,TIME用于指定*一时刻,其数据类型为datetime,格式为hh:mm:ss。例3-58使用WAITFOR TIME语句,以便在晚上10:20执行存储过程 update_all_stats。程序清单如下:BEGIN WAITFOR TIME 2

31、2:20 E*ECUTE update_all_stats END8RETURN语句 RETURN语句用于无条件地终止一个查询、存储过程或者批处理,此时位于RETURN语句之后的程序将不会被执行。 RETURN语句的语法形式为:RETURN integer_e*pression 其中,参数integer_e*pression为返回的整型值。存储过程可以给调用过程或应用程序返回整型值。 例3-59显示如果在执行 findjobs 时没有给出用户名作为参数,RETURN 则将一条消息发送到用户的屏幕上然后从过程中退出。如果给出用户名,将从适当的系统表中检索由该用户在当前数据库内创立的所有对象名。

32、程序清单如下: CREATE PROCEDURE findjobs nm sysname = NULL AS IF nm IS NULL BEGIN PRINT You must give a username RETURN END ELSE BEGIN SELECT o.name, o.id, o.uid FROM sysobjects o INNER JOIN master.syslogins l ON o.uid = l.sid WHERE l.name = nm END /*例3-1创立数据库表。*/*程序清单如下:*/*下面的例子将创立表S。*/CREATE TABLE S( sno

33、 char(10) NOT NULL /*字段*/ CONSTRAINT PK_sno PRIMARY KEY CLUSTERED/*主键约束*/ CHECK (sno like 313005010-90-9)/*检查约束*/, sname char(8) NULL, /*姓名字段*/ se* char(2) NULL, /*性别字段*/ age int NULL, /*年龄字段*/ dept varchar(20) NULL/*系别字段*/ )/*例3-2修改S表,增加一个班号列。*/*程序清单如下:*/ALTER TABLE S ADDCLASS_NO CHAR(6)/*例3-3删除S表。

34、*/*程序清单如下:*/ DROP table S/*再执行例3-1*/*例3-4在S表中插入一条学生记录*:S7;:郑冬;性别:女;年龄:21;系别:计算机。*/*程序清单如下:*/INSERT INTO S VALUES (3130050107,郑冬,女,21,计算机)/*例3-5 创立SC表学生选课表,并向SC表中插入一条选课记录S7,C1。*/*程序清单如下:*/CREATE TABLE SC( sno char(10) NOT NULL, o char(2) NULL, /*课程编号字段*/ score numeric(4,1) NULL /*成绩字段*/)GoINSERT INTO

35、 SC (sno,cno) VALUES (3130050101, c1)Go/*例3-6 使用 column_list 及 VALUES 列表显式地指定将被插入每个列的值。*/*程序清单如下:*/CREATE TABLE T1 ( column_1 int, column_2 varchar(30) GoINSERT T1 (column_2, column_1) VALUES (This is a test,1)/*例3-7 求出各位学生的平均成绩,把结果存放在新表AVGSCORE中。程序清单如下:*/*首先建立新表AVGSCORE,用来存放*和学生的平均成绩。*/CREATE TABLE

36、 AVGSCORE(SNO CHAR(10),AVGSCORE SMALLINT) Go/*利用子查询求出SC表中各位学生的平均成绩,把结果存放在新表AVGSCORE中。*/INSERT INTO AVGSCORESELECT SNO,AVG(SCORE) FROM SCGROUP BY SNO/*例3-8一个带有WHERE条件的修改语句。*/*程序清单如下:*/use adventureworksgoupdate person.address set city=Boston where addressid=1/*例3-9 将所有学生年龄增加1岁*/*程序清单如下:*/UPDATE S SET

37、 AGE=AGE+1/*例3-10下面的例如修改 SalesPerson 表中的 SalesYTD 列,以反映 SalesOrderHeader 表中记录的最近销售情况。*/*程序清单如下:*/USE AdventureWorks;GOUPDATE Sales.SalesPerson SET SalesYTD = SalesYTD + SubTotalFROM Sales.SalesPerson AS sp JOIN Sales.SalesOrderHeader AS so ON sp.SalesPersonID = so.SalesPersonID AND so.OrderDate = (S

38、ELECT MA*(OrderDate) FROM Sales.SalesOrderHeader WHERE SalesPersonID = sp.SalesPersonID)/*例3-11将UPDATE语句与TOP子句一起使用,更新Employee 表中10个随机行的VacationHours 列,使之变成原来的1.25倍。*/*程序清单如下:*/USE AdventureWorks;GOUPDATE TOP (10) HumanResources.EmployeeSET VacationHours = VacationHours * 1.25/*例3-12 创立T表教师根本情况表的构造为T

39、(TNO,TN,SE*,AGE,PROF,SAL,DEPT)分别表示教师的编号,性别,年龄,职称,工资,系别。TC表教师授课表的构造为TC(TNO,CNO)分别表示教师的编号,课程编号。*/USE e*ampleGOCREATE TABLE t(TNO char(10) NOT NULLCONSTRAINT PK_TNO PRIMARY KEY,/*教师编号字段*/TN char(10) NULL,/*教师姓名字段*/SE* char(2) NULL,/*教师性别字段*/AGE int NULL,/*教师年龄字段*/PROF char(20) NULL,/*教师职称字段*/SAL int NU

40、LL,/*教师工资字段*/DEPT char(10) NULL,/*教师所在系别字段*/ )GOINSERT INTO t VALUES(0001,张教师,男,41,副教授,2200,电力系)GOINSERT INTO t VALUES(0002,张益琳,女,32,讲师,1500,动力系)GOCREATE TABLE TC(TNO char(10) NOT NULL,/*教师编号字段*/CNO char(10) NULL,/*教师执教课程字段*/ )GOINSERT INTO tc VALUES(0001,C5)GO/*把讲授C5课程的教师的工资增加100元。*/*程序清单如下:*/UPDAT

41、E T SET SAL=SAL+100WHERE TNO IN (SELECT T.TNO FROM T,TCWHERE T.TNO=TC.TNO AND TC.CNO=C5) /*通过连接查询找到讲授C5课程的教师编号。*/*例3-13 把所有教师的工资提高到平均工资的1.2倍*/*程序清单如下:*/UPDATE T SET SAL =(SELECT 1.2*AVG(SAL) FROM T)/*例3-14 删除张益琳教师的记录。*/*程序清单如下:*/DELETE FROM T WHERE TN=张益琳/*例 3-15 删除所有教师的授课记录。*/*程序清单如下:*/DELETE FROM

42、TC/*例3-16 删除李明同学选课的记录。*/DELETE FROM SC WHERE SNO= (SELECT SNO FROM S WHERE sname=李明)/*例3-17给用户 Mary 授予多个语句权限。*/*程序清单如下:*/GRANT CREATE DATABASE, CREATE TABLETO Mary/*例3-18 为用户ZhangYiLin授予CREATE TABLE的语句权限。*/*程序清单如下:*/GRANT CREATE TABLE TO ZhangYiLin/*例3-19在权限层次中授予对象权限。首先,给所有用户授予SELECT权限,然后,将特定的权限授予用户

43、Mary、John和Tom*/*程序清单如下:*/GRANT SELECTON s /*需先创立s表*/TO publicGO GRANT INSERT, UPDATE, DELETEON sTO Mary, John, Tom /*需首先创立用户Mary, John, Tom */GO/*例3-20 将查询T表和修改教师职称的权限授予USER3,并允许将此权限授予其他用户。*/*程序清单如下:*/GRANT SELECT,UPDATEON T TO user3WITH grant OPTION/*上例中,USER3具有此对象权限,并可使用GRANT命令给其他用户授权,如下例,USER3将此权

44、限授予USER4:*/GRANT SELECT,UPDATE(PROF)ON TTO USER4/*例3-21 收回用户USER1对jobs表的查询权限。*/*程序清单如下:*/REVOKE SELECT ON jobsFROM mary/*例3-22 收回用户mary查询T表和修改教师职称的权限。*/*程序清单如下:*/REVOKE SELECT,UPDATE(PROF)ON TFROM mary/*例3-23首先从 public 角色中收回 SELECT 权限,然后,收回用户 Mary,Jhon和Tom的特定权限。*/*程序清单如下:*/REVOKE SELECTON s FROM pub

45、licGOREVOKE INSERT, UPDATE, DELETEON s FROM Mary, John, Tom/*例3-24首先给public角色授予SELECT权限,然后拒绝用户Mary、John和Tom的特定权限*/*程序清单如下:*/GRANT SELECTON sTO publicGODENY SELECT, INSERT, UPDATE, DELETEON sTO Mary,John,Tom/*例3-25使用两种注释类型的例子。*/*程序清单如下:*/USE AdventureWorksGO- First line of a multiple-line comment.- S

46、econd line of a multiple-line comment.SELECT * FROM person.addressGO/* 注释语句的第一行.注释语句的第二行. */SELECT * FROM Production.ProductGO- 在Transact-SQL语言调试过程中使用注释语句。SELECT title, /* birthdate, */ hiredateFROM humanresources.employee- 在代码后面加上注释。USE AdventureWorks GOUPDATE sales.salesorderdetailSET unitprice =

47、unitprice * .9 - 降低价格以提高市场份额。GO/*例3-26创立一个myvar 变量,然后将一个字符串值放在变量中,最后输出 myvar 变量的值。*/*程序清单如下:*/DECLARE myvar char(20)select myvar = This is a testSELECT myvarGO/*例3-27通过查询给变量赋值。*/*程序清单如下:*/USE adventureworksGODECLARE rows intSET rows = (SELECT COUNT(*) FROM humanresources.employee)/*例3-28在SELECT语句中使用

48、由 SET 赋值的局部变量。*/*程序清单如下:*/USE adventureworksGODECLARE phone char(12)SET phone = 398-555-0132SELECT RTRIM(firstname) + + RTRIM(lastname) AS Name, phoneFROM person.contactWHERE phone = phoneGO/*例3-29显示到当前日期和时间为止试图登录SQL Server的次数。*/*程序清单如下:*/SELECT GETDATE() AS 当前的时期和时间, CONNECTIONS AS 试图登录的次数/*例3-31 创

49、立一个具有 int 数据类型的表以显示值,并将该表放入一行中。*/*程序清单如下:*/CREATE TABLE t1( a int NOT NULL, b int NOT NULL ) INSERT t1 VALUES (170, 75)/*下面的查询在 a列和 b列上执行按位 AND 运算。*/SELECT a& b FROM t1/*例3-32在SET语句使用的表达式中,括号使其首先执行加法,表达式的结果为18。*/*程序清单如下:*/DECLARE MyNumber intSET MyNumber = 2 * (4 + 5)SELECT MyNumber/*例3-33通过行集函数OPEN

50、QUERY()执行一个分布式查询,以便从效劳器local中提取表department中的记录。*/*程序清单如下:*/select * from openquery( SERVER , select * from Northwind.customers)/*例3-34 计算 Adventure Works Cycles 的副总所用的平均休假小时数以及总的病假小时数。对检索到的所有行,每个聚合函数都生成一个单独的汇总值。*/*程序清单如下:*/USE AdventureWorks;GOSELECT AVG(VacationHours)as Average vacation hours, SUM

51、(SickLeaveHours) as Total sick leave hoursFROM HumanResources.EmployeeWHERE Title LIKE Vice President%/*例3-35 以下语句返回产品的平均标价。如果不使用DISTINCT,AVG函数将计算出Production.Product表中所有产品的平均价格*/*程序清单如下:*/USE AdventureWorks;GOSELECT AVG(DISTINCT ListPrice)FROM Production.Product/*例3-36 下面的例如查找居住在不同城市的人员数量*/*程序清单如下:*

52、/USE adventureworksGOSELECT COUNT(DISTINCT city)FROM person.addressGO/*例3-37 返回production.product表中本钱最高的产品以及价格的标准偏差。*/*程序清单如下:*/USE adventureworksGOSELECT MA*(standardcost),STDEV(listprice)FROM production.product/*例3-38使用 LTRIM 函数删除字符变量中的起始空格。*/*程序清单如下:*/DECLARE string_to_trim varchar(60)SET string_

53、to_trim = Five spaces are at the beginning of this string.SELECT Here is the string without the leading spaces: + LTRIM(string_to_trim)/*例3-39使用可选的start_location参数从addressline1列的第2个字符开场查找shoe*/*程序清单如下:*/USE adventureworksSELECT CHARINDE*(shoe, addressline1,2) FROM person.addressWHERE addressid = 5/*

54、例3-40 显示如何只返回字符串的一局部。该查询在一列中返回person.contact表中的姓氏,在另一列中返回person.contact表中的名字首字母。*/*程序清单如下:*/USE adventureworksSELECT lastname, SUBSTRING(firstname, 1, 1)FROM person.contactORDER BY lastname/*例3-41在第一个字符串abcdef中删除从第二个位置字符 b开场的三个字符,然后在删除的起始位置插入第二个字符串,创立并返回一个字符串。*/*程序清单如下:*/SELECT STUFF(abcdef, 2, 3, i

55、jklmn)/*例3-42显示在humanresources.employee 表中雇用日期到当前日期间的天数。*/*程序清单如下:*/USE adventureworksSELECT DATEDIFF(day, hiredate, getdate() AS diffdaysFROM humanresources.employee/*例3-43从GETDATE函数返回的日期中提取月份名。*/*程序清单如下:*/SELECT DATENAME(month, getdate() AS Month Name/*例3-44此例如输出 AdventureWorks 数据库中订单的时间范围的列表。此时间范

56、围为当前订单日期加上 21 天。*/*程序清单如下:*/USE AdventureWorks;GOSELECT DATEADD(day, 21, OrderDate)AS TimeFrame FROM Sales.SalesOrderHeaderGO/*例3-45在同一表达式中使用CEILING(),FLOOR(),ROUND()函数。*/*程序清单如下:*/select ceiling(13.4), floor(13.4), round(13.4567,3)/*例3-46例如检索列表价格的第一位是 3 的产品的名称,并将ListPrice转换为 int。*/*程序清单如下:*/USE Adv

57、entureWorksGOSELECT SUBSTRING(Name, 1, 30) AS ProductName, ListPriceFROM Production.ProductWHERE CAST(ListPrice AS int) LIKE 3%GO/*例3-47用style 参数将当前日期转换为不同格式的字符串。*/*程序清单如下:*/SELECT 101=CONVERT(char, GETDATE(), 101),1=CONVERT(char, GETDATE(), 1),112=CONVERT(char, GETDATE(), 112)/*例3-48从adventureworks数据库中返回person.contact表的首列名称*/*程序清单如下:*/USE adventureworksSELECT COL_NAME(OBJECT_ID(person.contact), 1)/*例3-49检查 sysdatabases 中的每一个数据库,使用数据库标识号来确定数据库名称。*/*程序清单如下:*/SELECT dbid, D

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!