SQL授予用户权限的语句.docx
插入多行数据的港法格代为:INSERTINTOtablc_or_vicwKcolumnJist)子杳询例3-7求出各位学生的平均成果,把结果存放在新表Avgscore中C程序清单如下:/*首先建立新表AVGSCORE,用来存放学号和学生的平均成果。*/CREATETAB1.EAVGSCORE(SNoCHAR(IO),AVGSCORESMA1.1.INT)Go*利用子查询求出SC表中各位学生的平均成果,把结果存放在新表AVGSCOREo7INSERTINTOAVGSCORESE1.ECTSNO,VG(SCORE)FROMSCGROUPBYSNO例3-12创建把讲授C5课程的老师的工资增加00元。程序消单如下:*T表(老师基本状况表)的结构为T(TNo,TN,SEX,AGE,PROF,SA1.,DEPT)分别表示老师的编号,姓名,性别,年龄,职称,工资,系别°TC表(老师授课表)的结构为TC(TNO1CNO)分别表示老师的编号,课程编号。7UPDATETSETSA1.=SA1.+1OOWHERETNOIN(SE1.ECTT.TNOFROMT,TCWHERET.TNO=TC.TNOANDTC.CNO='C5')*通过连接行询找到讲授C5课程的老师编号。*/ 下面是删除一行记录的例子。例3-14删除张益琳老师的记录。程序清单如下:DE1.ETEFROMTWHERETN=,张益琳' 例3-16删除李明同学选课的记录。DE1.ETEFROMSCWHERESNO=(SE1.ECTSNOFROMSWHERESN三,李明')三、数据限制语言 数据限制语言(DC1.)是用来设置或更改数据库用户或角色权限的语句,包括GRANT,DENY,REVOKE等语句。在默认状态下,只有sysadmin,dbcreator,db-owner或db_securityadmin等人员才有权力执行数据限制语言。3.1 语句权限与角色的授予SQ1.语言运用GRANT语句为用户授予语句权限的语法格式为:grant语句权限IV角色卜语句权限I角色TOV用户名v角色PUB1.IC,V用户名卜角色WITHADMINOPTION其语义为:将指定的语句权限授予指定的用户或角色。其中:(1) PU1.BIC代表数据库中的全部用户;(2) WITHADMINOPTlON为可选项,指定后则允许被授权的用户将指定的系统特权或角色再授予其他用户或角色。 例3-17给用户Mary和John以与WindowsNT组CororateBobJ授予多个语句权限。程序清单如F:GRANTCREATEDATABASE,CREATETAB1.ETOMary,John,CorporateBobJ 例3-18为用户ZhangYi1.in授予CREATETAB1.E的语句权限。程序清单如MGRANTCREATETAB1.ETOZhangYi1.in 同语句权限的授予类似,SQ1.语言运用GRANT语句为用户授予对象权限,其语法格式为:GRANTA1.1.|对象权限(列名,列名)11,对象权限叶QN对象名TO用户名I角色IPUBiJe,v用户名I角色习!WITHADMINOPTION 其语义为:将指定的操作对象的对象权限授予指定的用户或角色。其中:(1)A1.1.代表全部的对象权限。(2)列名用于指定要授权的数据库对象的一列或多列。假如不指定列名,被授权的用户将在数据库对象的全部列上均拥有指定的特权。事实上,只有当授予INSERT、UPDATE权限时才需指定列名。(3) ON子句用于指定要授予对象权限的数据库对象名,可以是基本表名、视图名等。(4) WITHADMINOPTlON为可选项,指定后则允许被授权的用户将权限再授予其他用户或角色。 例3-19在权限层次中授予对象权限。首先,给全部用户授予SE1.ECT权限,然后,将特定的权限授予用户Mary,John和Tom0程序清单如S:GRANTSE1.ECTONsTOpublicGOGRANTINSERT,UPDATE,DE1.ETEONsTOMary,John,TomGO 例3-20将杳询T表和修改老师职称的权限授予USER3,并允许将此权限授予其他用户。程序清单如下:GRANTSE1.ECT,UPDATE(PROF)ONTTOUSER3WITHADMINOPTION 匕例中,USER3具方此对象权限,并可运用GRANT吩咐给其他用户授权,如卜例,USER3将此权限授予USER4:GRANTSE1.ECT,UPDATE(PROF)ONTTOUSER4数据库管理员可以运用REVOKE语句收I可语句权限,其语法格式为:REVOKEV语句权限I角色产语句权限IV角色FROM用户名I角色IPUB1.lC1.V用户名I角色习 例:收I可用户ZHANGYI1.IN所拥有的CREATETAB1.E的语句权限。REVOKECREATETAB1.EfromZhangyilin全部授予出去的权力在必要时都可以由数据库管理员和授权者收I可,收I可对象权限仍旧运用REVoKE语句,其语法格式为:REVOKEV对象权限I角色,V对象权限IV角色习FROM用户名I角色IPUB1.lC1.V用户名|角色习 例3-21收回用户USERl对C表的杳询权限。ONCFROMUSERl 例3-22收回用户USER3查泡T表和修改老师职称的权限。程序清单如下:REVOKESE1.ECTtUPDATE(PROF)ONTFROMUSER3 在I:例中,USER3将对T表的权限授予了USER4,在收回USER3对T表的权限的同时,系统会自动收回USER4对T表的权限。 例3-23首先从public角色中收回SE1.ECT权限,然后,收回用户Mary,John和Tom的特定权限。程序清单如下:USEpubsGOREVOKESE1.ECTONsFROMpublicGOREVOKEINSERT,UPDATE,DE1.ETEONSFROMMary,John,Tom DENY语句用于拒绝给当前数据库内的用户或者角色授予权限,并防止用户或角色通过其组或角色成员继承权限。 否定语句权限的语法形式为:DENYA1.1.I语句权眼I角色卜语句权限I角色#TOV用户名I角色IPUB1.IC,用户名I角色 否定对象权限的语法形式为:DENYA1.1.IV对象权限(列名1.列名卜)M,对象权限QN对象名TOV用户名|角色PUB1.IC,v用户名|角色 例3-24首先给public角色授予SE1.ECT权限,然后,拒绝用户Mary,John和Tom的特定权限。程序清单如下:USEpubsGOGRANTSE1.ECTONsTOpublicGODENYSE1.ECT,INSERT,UPDATE,DE1.ETEONsTOMary,John,Torn四、系统存储过程系统存储过程的部分示例如卜二 sp.addtype:用于定义一个用户定义数据类型; sp_configure:用于管理服务器配置选项设置;-xp_scndmail:用于发送电子邮件或寻呼信息;,sp_storeC1.PrOCedUres:用于返回当前数据库中的存储过程的清单; sp.help:用于显示参数清单和其数据类型; sp_depends:用于显示存储过程依据的对象或者依据存储过程的对象; SPJlCIPtext:用于显示存储过程的定义文本; sp-rename:用于修改当前数据库中用户对象的名称。五、变量变量是一种语言中必不行少的蛆成部分。Transact-SQ1.语言中有两种形式的变量,一种是用户自己定义的局部变量,另外一种是系统供应的全局变量。 1.局部变量局部变量是一个能够拥有特定数据类型的对象,它的作用范围仅限制在程序内部。局部变量被引用时要在其名称前加上标记“”,而且必需先用DEC1.ARE吩咐定义后才可以运用C 定义局部变埴的语法形式如下:DEC1.AERloCa1.VariabIedata-typen,其中,格数loCa1.VariabIe用于指定局部变量的名称,变量名必需以符号开头,并且局部变量名必需符合SQ1.SerVer的命名规贝1.参数datatype用于设置时部变量的数据类型与其大小。data_type可以是任何由系统供应的或用户定义的数据类型。但是,局部变T不能是text,ntcxt或image数据类型。 运用DEC1.ARE吩咐声明并创建局部变底之后,会将其初始值设为NU1.1.,假如想要设定局部变量的值,必需运用SE1.ECT吩咐或者SET吩咐。其语法形式为:SETloCa1.VariabIe=expression或者SE1.ECTk>Ca1.VariabIe=expressionn 其中,参数1。Ca1.Variable是给其赋值并声明的局部变量,参数expression是任何有效的SQ1.Server表达式。,例3-26创建个myvar变量,然后将一个字符串值放在变量;中,最终输出myvar变量:的值.程序清单如下:DEC1.AREmyvarchar(20)selectmyvar='Thisisatest'SE1.ECTmyvarGO 例3-27通过杳询给变量赋值。程序清单如下:USEadventureworksGODEC1.ARErowsintSETrows(SE1.ECTCOUNT(*)FROMhumanresources.employee)2.全局变量除了局部变肽之外,SQ1.Server系统本身还供应了一些全局变破。全局变量是SQ1.SCrVer系统内部运用的变量,其作用他用并不仅仅局限于某一程序,而是任何程序均可以随时调用。全局变成通常存储一些SQ1.Server的配置设定值和统计数据。用户可以在程序中用全局变量来测试系统的设定值或者是TranSaCt-SQ1.吩咐执行后的状态值。在运用全局变R时应当留意以下儿点:(1)全局变限不是由用户的程序定义的,它们是在服务器级定义的.(2)用户只能运用预先定义的全局变量。(3)引用全局变肽时,必需以标记符“”开头。(4)局部变审的名称不能与全局变量的名称相同,否则会在应用程序中出现不行预料的结果。例3-29显示到当前H期和时间为止试图登录SQ1.SerVer的次数。程序清单如下:SE1.ECTGETDATE()AS'当前的时期和时间',©CONNECTIONSAS'试图登录的次数六、运算符运算符是一些符号,它们能够用来执行算术运算、字符串连接、赋值以与在字段、常属和变量之间进行比较。在SQ1.Server2005中,运算符主要有以下六大类:算术运儿符、赋值运第符、位运算符、比较运算符、逻辑运算符和字符串申联运算符,1 .算术运算符算术运算符可以在两个表达式上执行数学运算,这两个表达式可以是数字数据类型分类的任何数据类型。算术运算符包括加(+)、诚(一)、乘(*)、除(/)和取模(%)»2 .赋值运算符Transact-SQ1.中只有一个赋值运算符,即(=)。赋值运算符使我们能够将数据值指派给特定的对象。另外,还可以运用赋值运算符在列标题和为列定义值的表达式之间建立关系。3位运算符使我们能够在整型数据或者二进制数据(image数据类型除外)之间执行位操作。此外,在位运算符左右两侧的操作数不能同时是二进制数据.表3-1列出了全部的位运算符与其含义。运算符含义&(按位AND)按位AND(两个操作数)I(按位OR)按位OR(两个操作数)(按位互斥OR)按位互斥OR(两个操作数)4 .比较运算符比较运算符亦称为关系运算符,用于比较两个表达式的大小或是否相同,共比较的结果是布尔值,即TRUE(表示表达式的结果为真)、FA1.SE(表示表达式的结果为假)以与UNKNe)WNC除了text,ntext或image数据类型的表达式外,比较运算符可以用于全部的表达式。5 .逻辑运算符逻辑运算符可以把多个逻辑表达式连接起来。逻辑运算符包括AND、OR和NOT等运算符.逻辑运算符和比较运算符一样,返回带有TRUE或FA1.SE值的布尔数据类型。三个运算符的优先级别为:NOT,AND,ORo6 .字符串串联运算符字符串串联运算符允许通过加号(+)进行字符串串联,这个加号即被称为字符串串联运算符。例如对于语句SE1.ECT'abc'+'def',其结果为abedcf。在SQ1.Server2005中,运算符的优先等级从高到低如卜.所示,假如优先等级相同,则依据从左到右的依次进行运算。(1)括号:();(2)乘、除、求模运算符:*,/,%;(3)加减运算符:+,(4)比较运算符:=,>,<,>=,<=,<>,!=,!>,!<;(5)位运算符:人,&,|;(6)逻辑运算符:NOT;(7)逻辑运算符:AND;(8)逻辑运算符:OR0七、函数在TranSaCt-SQ1.语言中,函数被用来执行一些特别的运算以支持SQ1.SerVer的标准吩咐。SQ1.SerVer包含多种不同的函数用以完成各种工作,每一个函数都行一个名称,在名称之后行一对小括号,如:gettime()o大部分的函数在小括号中须要一个或者多个参数,Transact-SQ1.编程语旨供应了四种函数:行集函数、聚合函数、Ranking函数、标及函数。1 .行集函数行集函数可以在Transact-SQ1.语句中当作表引用。例3-33通过行集函数OPENQUERYO执行一个分布式直询,以便从服务器local中提取表department中的记录。程序清单如下:select*fromopenquery(local/select*fromdepartment*)2 .聚合函数 聚合函数用于对一组值进行计算并返网一个单一的值。除COUNT函数之外,聚合函数忽视空值。聚合函数常常与SE1.ECT语句的GROUPBY子句一同运用。仅在下列项中聚合函数允许作为表达式运用:SE1.ECT语句的选择列表(子查询或外部查询);COMPUTE或COMPUTEBY子句;HAVING子句。,计算AdventureWorksCycles的副总所用的平均休假小时数以与总的病假小时数。对检索到的全部行,每个聚合函数都生成一个单独的汇总值。 程序清单如下。 USEAdventureWorks; GO,SE1.ECTAVG(VaCatiOnHoUrs)asAveragevacationhours',SUM(Sick1.eaveHours)asTotalsickleavehours',FROMHUmanRCSOUrCeS.Employee WHERETitle1.IKE'VicePresident%' Ranking函数为查询结果数据集分区中的每行返回一个序列值。依据此函数,一些行可能取得和其他行一样的序列值。Transact-SQ1.供应以下一些Ranking函数:RANK;DENSE-RNK;NTI1.E;ROW.NUMBER。表3-4标成函数的分类函数分类说明配置函数返回当前的配置信息游标函数返回有关游标的信息日期和时间函数对日期和时间输入值进行处理数学函数对作为函数参数供应的输入值执行计算元数据函数返回有关数据库和数据库对象的信息平安函数返回行关用户和角色的信息字符串函数对字符串(Char或varchar)输入值执行操作系统函数执行操作并返回有关SQ1.Seeer中的值、对象和设置的信息系统统计函数返回系统的统计信息文本和图像函数对文本或图像输入值或列执行操作,返回有关这些值的信息(1)字符串函数字符串函数可以对二进制数据、字符串和表达式执行不同的运算,大多数字符串函数只能用于Char和varchar数据类型以与明确转换成char和varchar的数据类型,少数儿个字符申函数也可以用于binary和Varbinary数据类型。字符串函数可以分为以下儿大类:>基本字符串函数:UPPER,1.OWER,SPACE,REP1.ICATE,STUFF,REVERSE,1.TRIM,RTRIM,字符串查找函数:CHARINDEX,PATINDEX0长度和分析函数:DT1.ENGTH,SUBSTRING,RIGHTo>转换函数:ASCH,CHAR,STR,SOUNDEX,DIFFERENCE。例3-38运用1.TRIM函数删除字符变量中的起始空格。程序清单如下:“DEC1.AREstring_to_trimvarchar(60)ASETstring_to_trim='Fivespacesareatthebeginningofthisstring/> SE1.ECTHereisthestringwithouttheleadingspaces:,+> 1.TRIM(string_to_trim)“例3-39运用可选的StartOCatiOn参数从addresslincl列的第2个字符起先查找“shoe”程序清单如下。> USEadventureworks> SE1.ECTCHARINDEXCshoe',addressline1,2)FROMperson.address> WHEREaddressid='5'(2)日期和时间函数函数参数功能DATEADD(datepart,number,date)以datepart指定的方式,返回date加上number之和DATEDIFF(datepart,date1,date2)以datepart指定的方式,返回date2与datel之差DATENAME(datepart,date)返回日期date中datepart指定部分所对应的字符串DATEPART(datepart,date)返回日期date中datepart指定部分所对应的整数值DAY(date)返回指定日期的天数GETDTEO返回当前的日期和时间MONTH(date)返阿指定日期的月份数YEAR(date)返回指定日期的年份数例3-42显示在humanresources.employee表中雇用日期到当前H期间的天数。程序清单如下。USEadventureworksSE1.ECTDATEDlFF(day,hiredate,getdate()ASdiffdaysFROMhumanresources.employee例3-43从GETDATE函数返回的日期中提取月份名。程序清单如卜SE1.ECTDATENAME(month,getdate()AS'MonthName'数学函数数学函数用于对数字表达式进行数学运算并返回运算结果。数学函数可以对SQ1.SerVer供应的数字数据(decimalinteger-,float-reakmoney、smallmoney*smallint和tinyint)进行处理。例3-45在同一表达式中运用CEluNG(),F1.OORO,RoUND()函数。程序清单如下:selectceiling(13.4),floor(13.4),round(13.4567,3)系统函数系统函数用于返网有关SQ1.SerVer系统、用户、数据库和数据库对象的信息C系统函数可以让用户在得到信息后,运用条件语句,依据返回的信息进行不同的操作。与其他函数一样,可以在SE1.ECT语句的SE1.ECT和WHERE子句以与表达式中运用系统函数。 转换函数有两个:CONVERTCASTo CAST函数允许把一个数据类型强制转换为另一种数据类型,其语法形式为:CAST(expressionASdata_type) CoNVERT函数允许用户把表达式从一种数据类型转换成另一种数据类型,还允许把H期转换成不同的样式,其语法形式为:CONVERT(data_type(length),expression,style!)例3-46示例检索列表价格的第一位是3的产品的名称,并将1.iStPriCe转换为int<5程序清单如下。USEAdventureWorksGOSE1.ECTSUBSTRINGfName,1,30)ASProductName,1.istPriceFROMProduction-ProductWHERECASTf1.istPriceASint)1.IKE-3%'GO例3-47用StyIe参数将当前日期转换为不同格式的字符申。程序消单如下:SE1.ECT'101'=CONVERT(char,GETDATE(),101),'=CONVERT(char,GETDATE(),1),'112'三CONVERT(char,GETDATE(),112)例3-48从adventureworks数据库中返回person.contact表的忏列名称程序清单如下。USEadventureworksSE1.ECTCOJNAME(OBJECT_ID(PerSOn.contact'),1)例3-49检杳SySdatabaSeS中的每一个数据库,运用数据库标识号来确定数据库名称。程序清单如下:USEmasterSE1.ECTdbid,DB_NAME(dbid)ASDB.NMEFROMsysdatabasesORDERBYdbid7. WArrFORM WAITFOR语句用于短看停止执行SQ1.语旬、语肉块或者存储过程答,直到所设定的时间已过或者所设定的时间已到才接着执行。 WAlTFOR语句的语法形式为:WAITFORDE1.AY'time'TIME'time' 其中,DE1.AY用于指定时间间隔,TIME用于指定某一时刻,其数据类型为datetime,格式为'hh:mm:88'。例3-58运用WAFORTIME语句,以便在晚上10:20执行存储过程update.al1.stats程序清单如下:BEGINWAFORTIME'22:20'EXECUTEupdate-al1.statsEND8. RETURN语句 RETURN语句用于无条件地终止一个查询、存储过程或者批处理,此时位于RETURN语句之后的程序将不会被执行。 RETURN语句的语法形式为:RETURNinteger_expression,其中,参数integejexpression为返回的整型值。存储过程可以给调用过程或应用程序返回整型值。 例3-59显示假如在执行findjobs时没有给出用户名作为参数,RETURN则将一条消息发送到用户的屏幕上然后从过程中退出。假如给出用户名,将从适当的系统表中检索由该用户在当前数据库内创建的全部对象名。 程序清单如下: CREATEPROCEDUREfindjobsnmsysname=NU1.1.ASIFnmISNU1.1.BEGINPRINT'Youmustgiveausername'RETURNENDE1.SEBEGINSE1.ECTo.name,o.id,o.uidFROMsysobjectsoINNERJOINmaster.syslogins1ONo.uid=1.sidWHEREl.name-nmEND例3-1创建数据库表0*/*程序清单如下:*/下面的例子将创建表S。*/CREATETAB1.ES(snochar(10)NOTNU1.1.*学号字段*/CONSTRAINTPK_snoPRIMARYKEYC1.USTERED/*主键约束*/CHECK(snolike,313005010-909,)/*检查约束*/,snamechar(8)NU1.1.,*姓名字段*/sexchar(2)NU1.1.,/*性别字段*/ageintNU1.1.,年龄字段*/deptvarchar(20)NU1.1.*系别字段*/)/*例3-2修改S表,增加一个班号列。*/*程序清单如下:*/A1.TERTAB1.ESADDC1.ASS_NOCHAR(6)*例3-3删除S表°/*程序清单如下:*/DROPtableS/*再执行例3-l*/*例3-4在S表中插入一条学生记录(学号:S7;姓名:郑冬;性别:女;年龄:21;系别:计算机)。*/*程序清单如下:*/INSERTINTOSVA1.UES13130050107;郑冬'、女',21,,计算机,)/*例3-5创建SC表(学生选课表),并向SC表中插入一条选课记录(,S7,Cl,)o7/*程序清单如卜*/CREATETB1.ESCsnochar(10)NOTNU1.1.,cnochar(2)NU1.1.,*课程编号字段*/scorenumeric(4,l)NU1.1.*成果字段*/)GoINSERTINTOSC(sno,cno)VA1.UES('313005010,'c)Go*例3-6运用COlumnJist与VA1.UES列表显式地指定将被插入每个列的值。*/*程序清单如下:*/CREATETAB1.ET1(column_lint,column_2varchar(30)GoINSERTTl(column_2fcolumn_1)VA1.UES('Thisisatestl)*例3-7求出各位学生的平均成果,把结果存放在新表Avgscore程序清单如下:*/*首先建立新表AVGSCoRE,用来存放学号和学生的平均成果。*/CREATETAB1.EAVGSCORE(SNOCHAR(IO),AVGSCORESMA1.1.INT)Go*利用子查询求出SC表中各位学生的平均成果,把结果存放在新表AVGSCoRE中。*/INSERTINTOAVGSCORESE1.ECTSNO,AVG(SCORE)FROMSCGROUPBYSNO*例3-8一个带方WHERE条件的修改语句,*/*程序清单如卜*/useadventureworksgoupdateperson.addresssetcity=,Boston'whereaddressid=1*例3-9将全部学生年龄增加1岁*/*程序清单如下:*/UPDATESSETAGE=AGE+1例3-10下面的示例修改SalesPerson表中的SalesYTD列,以反映SalesOrdcrHeadcr表中记录的最近销售状况.*/*程序清单如卜.:*/USEAdventurcWorks;GOUPDATESales-SalesPcrsonSETSalesYTD=SalesYTD+SubTotalFROMSales.SalesPersonASspJOINSales.SalesOrderHeaderASsoONsp.SalesPersonID=so.SalesPersonIDANDso.OrderDate=(SE1.ECTMAX(OrderDate)FROMSales.SalesOrderHeaderWHERESalesPersonID=sp.SalesPcrsonID)*例3-11将UPDATE语句与TOP子句一起运用,更新EmPlOyee表中10个随机行的VaCatiOnHOUrS列,使之变成原来的1.25倍。*/*程序清单如下:*/USEAdventureWorks;GOUPDATETOP(10)HumanResources.EmployeeSETVacationHours=VacationHours*1.25/*例3-12创建T表(老师基本状况表)的结构为T(TNo,TN,SEX,AGE,PROF,SA1.,DEPT)分别表示老师的编号,姓名,性别,年龄,职称,工资,系别°TC表(老师授课表)的结构为TC(TNOtCNO)分别表示老师的编号,课程编号。*/USEexampleGOCREATETAB1.Et(TNOchar(10)NOTNU1.1.CONSTRAINTPK_TNOPRIMARYKEY,/*老师编号字段*/TNchar(10)NU1.1.,/*老师姓名字段*/SEXCharNU1.1.,/*老师性别字段*/AGEintNU1.1.,/*老师年龄字段*/PROFchar(20)NU1.1.,/*老师职称字段*/SA1.intNU1.1.,/*老师工资字段*/DEPTchar(10)NU1.1.,/*老师所在系别字段*/)GOINSERTINTOtVA1.UES(9001,;张老师;男',41;副教授,,2200,电力系')GOINSERTINTOtVA1.UES(Ooo2;张益琳;女,,32讲师1500;动力系')GOCREATETAB1.ETC(TNOchar(10)NOTNU1.1.,/*老师编号字段*/CNOchar(10)NU1.1.,/*老婶执教课程字段*/)GOINSERTINTOtcVA1.UESfOOO,'C5')GO/*把讲授C5课程的老牌的工资增加100元。*/*程序清单如下:*/UPDATETSETSA1.=SA1.+100WHERETNOIN(SE1.ECTT.TNOFROMT,TCWHERET.TNO=TC.TNOANDTC.CNO='C5')*通过连接查询找到讲授C5课程的老师编号。*/*例3-13把全部老师的工资提高到平均工资的1.2倍*/*程序清单如下:*/UPDATETSETSA1.-(SE1.ECT1.2*AVG(SA1.)FROMT)例3-14删除张益琳老师的记来。*/*程序清单如下:*/DE1.ETEFROMTWHERETN='张益琳/*例3-15删除全部老师的授课记录。*/*程序清单如下:*/DE1.ETEFROMTC/*例3-16删除李明同学选课的记录。*/DE1.ETEFROMSCWHERESNO=(SE1.ECTSNOFROMSWHERESname='李明')*例3-17给用户Mary授予多个语句权限。*/*程序清单如下:*/GRANTCREATEDATABASE,CREATETAB1.ETOMary*例3-18为用户ZhangYi1.in授予CREATETAB1.E的语句权限。*/*程序清单如下:*/GRANTCREATETAB1.ETOZhangYi1.in/*例3-19在权限层次中授予对象权限。首先,给全部用户授予SE1.ECT权限,然后,将特定的权限授予用户Mary、John和Tom*/*程序清单如下:*/GRANTSE1.ECTONs/*需先创建S表"/TOpublicGOGRANTINSERT,UPDATE,DE1.ETEONsTOMary,John,Tom*需首先创建用户Mary,John,Tom*/GO*例3-20将杳询T表和修改老师职称的权限授予USER3,并允许将此权限授予其他用户。*/*程序清单如下:*/GRANTSE1.ECTtUPDATEONTTOuser3WITHgrantOPTION*上例中,USER3具有此对象权限,并可运用GRANT吩咐给其他用户授权,如下例,USER3将此权限授予USER4:*/ONTTOUSER4*例3-21收回用户USERl对jobs表的查询权限。*/*程序清单如下:*/REVOKESE1.ECTONjobsFROMmary*例3-22收回用户mary查if11T表和修改老师职称的权限。*/*程序清单如下:*/revokeselect,update(prof)onFROMmary/*例3-23首先从public角色中收回SE1.ECT权限,然后,收回用户Mary,Jhon和TOm的特定权限。*/*程序清单如卜*/REVOKESE1.ECTONsFROMpublicGOREVOKEINSERT,UPDATE,DE1.ETEONsFROMMary,John,Tom*例3-24首先给public角色授予SE1.ECT权限,然后拒绝用户Mary、John和Tom的特定权限*/*程序清单如下:*/GRANTSE1.ECTONSTOpublicGODENYSE1.ECT,INSERT,UPDATE,DE1.ETEONSTOMary,John,Tom*例3-25运用两种注释类型的例子。*/*程序清单如下:*/USEAdventureWorksGOFirstlineofamultiple-linecomment.Secondlineofamultiple-linecomment.SE1.ECT*FROMperson.addressGO*注释语句的第一行.注释语句的其次行*/SE1.ECT*FROMProduction.ProductGO-在Transact-SQ1.语言调试过程中运用注释语句,SE1.ECTtitle,*birthdate,*/hiredateFROMhumanresources.employee-在代码后面加上注稀。USEAdventureWorksGOUPDATEsales.salesorderdetailSETunitprice=unitprice*.9一降低价格以提高市场份额。GO/*例3-26创建一jmyvar变成,然后将一个字符串值放在变成中,最终输出myvar变量的值。*/*程序清单如F:7DEC1.AREmyvarc