网站导航网学 原创论文 原创专题 网站设计 最新系统 原创论文 论文降重 发表论文 论文发表 UI设计定制 论文答辩PPT格式排版 期刊发表 论文专题
返回网学首页
网学原创论文
最新论文 推荐专题 热门论文 论文专题
当前位置: 网学 > 交易代码 > SQL语法 > 正文

SQLserver语法总结

论文降重修改服务、格式排版等 获取论文 论文降重及排版 论文发表 相关服务

【网学网提醒】:网学会员为您提供SQL server 语法总结参考,解决您在SQL server 语法总结学习中工作中的难题,参考学习。


    ---------------------SQLserver语法总结-------------------------
    标示符的作用:[]表示该选项可以省略[,....]表示该选项可以重复一次或者多次<>表示在实际的语句中用相应的内容进行替代{}表示有相应的参数时,{}中的内容是必须的1)创建数据库createdatabasedatabase_name[ON[[,....n]][,[,....n]]][LOGON[,.....n]][collatecollate_name]filespec定义[primary]([name=logical_file_name',]filename='os_file_name',[,size=size][,maxsze={maxsize|unlimited}][,filegrowth=growth_increment])[,.....n]定义filegroupfilegroupname[,......n]2)删除数据库dropdatabasedatabase_name[,....n]3)数据库更改名称:采用存储过程来进行实现sp_renamedb'old_name','new_name'4)修改数据库alterdatabasedatabase_name{addfile[,....]tofilegroupfilegroup_name|[addlogfile[,...n]]|removefilelogical_file_name|addfilegrupfilegroup_name|removefilegroupfilegroup_name|modifyfile
     |modufyname=new_name|modifyfilegroupfilegroup_name{filegroup_property|name=new_filegroup_name}5)缩小数据库dbccshrinkdatabase(database_name[,target_percent][,{noturncate|turncateonly}])说明:target_percent:目标数据库的大小noturncate:收缩后空间不释放turncateonly:收缩后空间释放给操作系统(文件系统)6)创建表createtable[database_name.[owner].|[owner].]table_name({|column_nameAScomputed_column_expression|::=[constraintconstraint_name]}|[{primarykey|unique}][,.....n])[on{file_group|default}][text_imageon{filegroup|default}]说明:列的定义computed_column_expression列的表达式,用于列之间有依赖关系时候使用的表的约束primarykey主键约束unique唯一约束其中的定义部分:::={column_namedata_type}[collate][[defaultconstraint_expression]|[identity[(seed,increment)[notforrepublication]]]][ROWGUIDCOL][][....n]::=[constraintconstraint_name]{[null|notnull]|[{primarykey|unique}[clustered|nonclusterd]
     [withfillfactor=fill_factor][on{filegroup|default}]]]|[foreignkey]refrencesref_table[(ref_column)][ondelete{cascade|noaction}][onupdate{cascade|noaction}][notforrepublication]]|check[notforrepublicaton](logical_expression)}::=[constraintcontraint_name]{[{primarykey|unique}[clustered|nonclusterd]{(column[ASC|DESC][,....n])}[withfillfactor=fill_factor][on{filegroup|default}]]|foreignkey[(column[,....n])]referencesref_table[(ref_column[,...n])][ondelete{cascade|noaction}][onupdate{cascade|noa
    ction}][notforrepublication]|check[notforrepublication]{search_conditions}}例子:createtablexscj.dbo.xs(xuehaochar(6)notnull,xingmingchar(8)notnull,zhuanyemingchar(10)null,xingbiebitnotnulldefault((0)),chushengshijiansmalldatetimenull,zongxuefentinyintnull,beizhutextnull)5)创建约束创建主建约束constraintconstraint_nameprimarykey[clustered|nonclustered](column_name,...)[on
     filegroup]创建唯一约束constraintconstraint_nameunique[clusterd|nonclustered](column_name,....)[onfilegroup]检查约束检查约束指定在一行成功插入或者删除之前,必须要满足的条件。列级的检查约束测试单个列的值,并且编码为列定义的一部分。外键约束constraintconstraint_nameforeignkey(column_name)referencestable_name.(column_name)例子:constraintsaleCusFkforeignkey(custid)refrencesdbo.customer(custID)在外键约束中,ondelete决定了当你试图删除有外键约束的行时,系统所采取的措施。参数noaction表明删除操作失败并返回出错信息参数cascade表明带有外键约束的所有行在指向的行被删除时,都会被随之删除onupdate及其参数的用法同ondelete6)增加、删除和修改表的字段例子:altertablexsaddyuwendecimal(5,3)check(yuwenbetween0and100)altertablexsaltercolumnyuwendecimal(7,5)notnullaltertablexsdropcolumnyuwen7)删除表droptable8)插入表数据语法:方法1insert[into]{table_namewith([,....n])|view_name|row_set_function_limited}{[column_list]{values(default|null|expression}[,....n])|derived_table|executed_statment}}|default_values方法2insert[into]
     {table_namewith([,....n])|view_name|rowset_function_limited}{[(column_list)]subquery}例子:insertintoxs(xuehao,xingming,xingbie,chushengshijian,zongxuefen)values('991433','jacky','1','78-12-16',500)insertintoxsvaluse('99143','jacky','jsj','1','78-12-16',500,'');采用子查询insertintocustomer(custid,name,shipcity,shipstate,discount)selectcustid,name,shipcity,'',discountfromcustold;insertintodepart_info(zhuanyeming,renshu)selectzhuanyeming,count(*)fromxsgroupbyzhuanyeming;insertintodepart_info(zhuanyeming,xuefenzonge)execute('selectzhuanyeming,sum(zongxuefen)fromxsgroupbyzhuanyeming');9)更新表数据update{table_namewith([....n])|view_name|rowset_function_limited}set{column_name={expression|default|null}|@variable=expression|@variable=column=expression}[,....n]{{[from[,...n]][where]}例子updatecustomersetname='woodproducts'discount=disocount+0.02wherecustid='950001';updatecustomersetdiscount=defaultwherecustid='950001';updatecustomersetdiscount=nullwherecustid='950001';采
    用子查询updateitemsetitemprice=price.itempricefromitem,pricewhereprice.itemid=item.itemid;10)删除数据delete[from]{table_name|view_name}[whereclause]
     例子:deletefrommytablewherefirst_column='goodbye'orsecond_column='solong'采用子查询deletefromstudentwheredepart_id=(selectdepart_idfromdepartmentwheredepart_name='计算机');11)清空表数据(但是并不删除这张表)truncatetabletable_name例子:truncatetabledepart_info11)查询操作查询操作由几个子句构成select子句select[ALL|distinct][topn[percent][withties]]::={*|{table_name|view_name|table_alias}.*|{column_name|expression|indentitycol|rowguidcol}[[as]column_alias]|column_alias=expression}[,....n]into子句into子句用于把查询结果存放到一个新建的表中from子句from子句指定需要查询的表from::=
    where子句where子句指定数据检索的条件,以限制返回的数据行where|::=......column_name{*=|=*}column_namesearch_condition:指定一个搜索的条件old_outer_join:指定一个外连接*=表示左连接,=*表示右连接
     groupby子句groupby子句指定查询结果的分组条件groupby[all]group_by_expression[,.....n][with{cube|rollup}]rollup:与cube不同的是,此选项对groupby子句中的顺序十分敏感,它只返回第一个分组条件指定的列的统计行.having子句having子句指定分组搜索条件havinghaving子句通常与groupby子句连用。having子句和where子句不相同的地方是作用的对象不同,where子句作用的对象是表和视图,having子句作用于组。union操作符union操作符将两个或两个以上的查询结果合并为一个结果集。|()union[all]|()[Union[ALL]|()[,.....n]]union:合并操作符orderby子句orderby子句指定查询结果的排序方式orderby{order_by_expression[ASC|DESC]}ASC:指明排序规则是升序DESC:指明排序规则是降序例子:普通查询:select1+1as;selectxingming,xuehaofromxs;select*fromxs;selectxingming,yuwen,shuxue,yuwen+shuxueaszongfenfromxs;select*fromxswherezongxuefenbetween120and150;selectdistinctzhuanyemingfromxswherezongxuefen>160;distinct消除重复部分selectxingmingfromxswherexuehaoin('001001','001005');selectxingming,zongxuefenfromxswherexingminglike'王__'or'王%';select*fromxswherezhuanyeming='jsj'orderbyzongxuefen;selectxuehao,xingming,zongxuefenfromxswherezhuanyeming='dianzi'orderbyzongxuefen,xuehaodesc;selecttop5xingming,zongxuefenfromxsorderbyzongxuefendesc;selectxingming
    ,zhuanyemingfromxswherezongxuefen>120groupbyzhuanyeming;selectfirm_id,p_idfromordersgroupbyfirm_id,p_idwithcube|rollupcube和rollup这两个选项可以额外返回按组统计的数据行.与cube不同的是,rollup选项只
     返回最高层的分组列(即第一个分组列)的统计数据。selectzhuanyeming,count(*)fromxswherezongxuefen<120groupbyzhuanyeminghavingcount(*)>1;连接查询:selectdistinctxs.xingming,cj.yuwen,cd.shuxuefromxs,cjwherexs.xuehao=cj.xuehao;selectdistinctxs.xingming,cj.yuwen,cd.shuxuefromxsinnerjoincjonxs.xuehao=cj.xuehao;selectproducts.p_idasproducts,orders.p_idasordersfromproducts,orderswhereproducts.quality160)orderbybianhaoselectf_namefromfirmswherefirm_idin(selectfirm_idfromorderswherep_id=(selectp_idfromproductswherep_name='jsj'))orderbyfirm_id;selectp_namefromproductswhereexists
     (selectp_idfromorderswherep_id=products.p_idando_quality>5000)orderbyp_id;selectdepartment.dept_id,d_name,avg(e_wage)asavg_wagefromdepartment,employeewheredepartment.dept_id=employee.dept_idgroupbydepartment.dept_id,d_namehavingavg(e_wage)<(selectavg(e_wage)fromemployee)orderbyavg_wage;
    12)数据格式bigint>int>smallint>tinyintreal精确到7位小数float精确到15位小数decimal(15,5)第一个数字表示最多占有的位数,第二个数字代表小数点后面可以有的数字binary(n)varbinary(n)imagechar()nchar()varchar()nvarchar()text()ntext()smalldatetimedatetimemoneysmallmoney用户自定义数据类型,需要用存储过程来实现sp_addtypetype,system_data_type[,'nulltype'][,'owner_name']owner_name:指定该类型的数据库所有者.删除用户自定义数据类型,需要用存储过程来实现sp_droptypeTDescription存储过程与函数不同,因为存储过程不返回取代其名称的值,也不能直接用在表达式中间。13)Tr
    ansact-SQL程序设计变量:局部变量@开头,全局变量@@开头,变量使用前需要进行申明:declare@变量名变量类型[,......n]set@变量名=变量类型例子declare@idchar(10);select@id='10001';declare@namechar(30),@wagemoney;select@name=e_ename,@wage=e_wagefromemployee
     whereemp_id='1001001';select@namease_name,@wagease_wage;14)字符串连接运算符:连接运算符'+'用于连接两个或两个以上的字符串,合并成一个字符串之用。例子:select'月薪最高的员工是'+e_name+',月薪为'+convert(varchar(10),e_wage)fromemployeewheree_wage=(selectmax(e_wage)fromemployee);14)常用函数ascii()返回字符的ascii码------char()返回acsii码代表的字符值lower()转换为小写upper()转换成大写字符str([,length[,]])把数字型的数据转换为字符串型。ltrim()去左边空格rtrim()去右边空格left(,length)取左子串right(,length)取右子串重要的数学函数avg([ALL|DISTINCT]):返回有关列的算术平均值count()函数返回与选择表达式匹配的列中不为null的数据个数selectcount(<列名>)from(<表名>)selectcount(distinctdept_id)asdept_numfromemployee;count(*)判别式匹配所有的行,此时count()函数将计算所有的行数,包括设置为null的行.max():返回最大值min():返回一个系列的最小值sum():返回一个系列的值的总合转换函数cast(as[(length)])convert([length],[,style])15)创建用户自定义函数用户自定义函数的类型:1.标量型函数,返回一个确定类型的标量值。2.内联表值型函数,以表的形式返回一个返回值,即返回的是一个表3.多声明表值型函数,可以看作是标量型和内联表型函数的结合体。它的返回值是一个表,但他和标量型函数一样有一个用begin....end语句括起来的函数体。16)创建用户自定义函数语法:
     createfunction[owner_name.]function_name([{@paramenter_namescalar_parament_datatype[=default]}[,.....n])returnsscalar_return_type[with[,....n]][AS]beginfunction_bodyreturnsalar_expressionend::={encryption|schemabinding}例子:createfunctionworkyearwage(@hiredatedatetime,@todaydatetime,@per_wagemoney)asbegindeclare@workyearwagemoneyset@workyearwage=(year(@today)-year(@hiredate))*@per_wagereturn(@workyearwage)end调用函数selectworkyearwage('1991-7-1',getdate(),15)aswork_year_wage17)程序流程控制语句begin...end:用来设定一个程序块,将在begin..end内的所有程序视为一个单元执行.if<条件表达式><命令行或者程序块>[else[条件表达式]]<命令行或者程序块>case<运算式>when<运算式>then<运算式
    >.....when<运算式>then<运算式>[else<运算式>]endcasewhen<条件表达式>then<运算式>.....when<条件表达式>then<运算式>[else<运算式>]end
     sete_wage=casewhenjob_level='1'thene_wage*1.08casewhenjob_level='2'thene_wage*1.07casewhenjob_level='3'thene_wage*1.06elsee_wage*1.05endwhile<条件表达式>begin<命令行或者程序块>[break][continue]endgoto标示符waitfor:waitfor语句用来暂停程序执行,直到所设定的等待时间已过或者设定时间已到才继续往下执行。waitfor{delay<'时间'>|time<'时间'>|errorexit|processexit|mirrorexit}waitfordelay"01:02:03"select*fromemployee;waitfortime"23:02:03"select*fromemployee;return([整数值])18)视图的概念:视图是一种数据库对象,是从一个或多个数据表或者视图中导入的虚拟表,视图所对应的数据并不真正的存储在视图中,而是存储在所对应的数据表中,视图的结构和数据是对数据表进行查询的结果。对试图中数据的操作与对数据表的操作一样,可以对其进行查询,修改和删除。当通过视图对看到的数据进行修改时,相应基表的数据也会发生变化,同时,若基表的数据发生变化,这种变化也会自动反映到视图中。采用视图的优点:简化查询简化结构数据完整性数据安全性19)创建视图createview<视图名>[(<列名>[,<列名>]
     as[withcheck_option]例子:createviewall_girlsasselectxuehao,xingming,chushengnianyue,zhuanyeming,beizhufromxsxxwherexingbie='0'createview计算机基础asselectxsxx.,xsxx.,KM.Ctextas科目,CJ.cjas成绩fromdbo.cjinnerjoindbo.KMondbo.cj.cid=dbo.km.cidinnerjoindbo.xsxxondbo.cj.xid=dbo.xsxx.wherectext='计算机基础'20)察看,修改视图信息可以使用存储过程来察看视图的信息sp_help数据库对象名称:可以显示数据库对象的特征信息sp_helptext视图(触发器、存储过程):可以显示视图、触发器或者存储过程等在系统表中的定义.sp_depends存储过程:用于显示数据库对象所依赖的对象.修改视图:alterview视图名,[(列名),[列名]]as[withcheck_option]重命名视图:可以采用存储过程来完成sp_rename<原视图名>,<新视图名>20)使用视图对视图的插入,删除,更新数据和插入,删除,更新数据表一致。注意点:1.修改视图中的数据时,不能同时修改两个或多个基表。可以对两个或多个基表的视图进行修改,但是每次修改都只能影响一个基表。2.不能修改通过计算得到的字段。3.执行update,delete命令时,所删除与更新的数据必须包含在视图的结果集中。4.如果在创建视图时指定了withcheck_option选项,那么使用视图修改数据库信息时
    ,必须保证须改后的数据满足试图定义的范围。5.如果使用update命令,和insert操作一样,被更新的列必须属于同一个表。6.若视图引用多个表,则无法用delete命令删除数据。删除视图dropview视图名
     21)索引的概念数据库中的索引是一个列表,这个列表包含某个表中一列或者若干列值的集合,以及这些值的纪录在数据表中的存储位置的物理地址。索引提供指向存储在表的指定列中数据值的指针,然后根据用户指定的排序顺序对这些指针排序。数据库使用索引的方式与使用书籍中索引的方式类似。索引带来的查询效率提高是有代价的,因为索引也要占据存储空间,而且为了维护索引的有效性,在往表格中插入新的数据或者更新数据时,数据库还要执行额外的操作来维护索引。索引的分类1.聚集索引和非聚集索引聚集索引:聚集索引对表中的数据按列进行排序,然后再重新存储到磁盘上。非聚集索引:非聚集索引有完全独立于数据行的结构,使用非聚集索引不会影响数据表中纪录的实际存储顺序。2.复合索引对多个字段的组合创建的索引,即一个索引中含有多个字段3.唯一索引要求索引中的字段不能重复,可以建立唯一索引。创建唯一索引时,对于具有单个字段的索引,要求这个字段的值不能重复。复合索引也可能是唯一索引。22)使用sql语句创建索引create[unique][clustered][nonclustered]indexindex_nameon[table/view](column[asc|desc])[with][onfilegroup]例子:createindexxsxx_xmonxsxx(xingming)createuniqueclusteredindexxsxx_xhonxsxx(xuehao)23)使用transact-sql语句维护索引为什么要维护?索引在创建以后,由于数据的增加、删除或者修改等操作,很可能导致索引出现碎片,这时候就需要对索引进行维护。维护内容:dbccdbreindex:可以重建指定数据库中表的一个或多个索引。dbccdbreindex(['database.owner.table_name'[,index_name[,fillfactor]]])[withno_infomsgs]
     dbccchecktable:检查指定表或索引视图的数据,索引及text,ntext和image页的完整性。语法:dbccchecktable['table_name'|'view_name']dbccshowconfig:用于显示指定表的数据和索引的碎片信息dbccshowconfig[({table_name|table_id|view_name|view_id}[,index_name|index_id])]dbccindexdefrag:用来整理指定的表或视图的聚集索引和辅助索引碎片语法dbccindexdefrag({database_name|database_id|0},{table_name|table_id|'view_name'|view_id},{index_name|index_id})[withno_infomsgs]24)删除索引dropindexindex_name25)存储过程定义存储过程就是存储在sqlserver服务器中的一组编译成单个执行计划的transact-sql语句。存储过程在创建时候被编
    译和优化,调用一次以后,相关信息就保存在内存中,下次调用时候可以直接执行。存储过程是sql语句和可选控制流语句的预编译集合。以一个名称存储并作为一个单元处理,其中可以包含程序流,逻辑和对数据库的查询。它们还可以接受参数,输出参数,返回单个或者多个结果集和返回值。存储过程和函数不同,因为存储过程不返回取代其名称的值,也不能直接用在表达式中间。26)存储过程的分类系统存储过程:由系统进行创建,保存在系统的master数据库中。用户自定义的存储过程:由用户创建并能完成某一特定功能的存储过程。27)使用transact-sql创建存储过程createprocedureprocedure_name[;number][(@parameter}[varying][[=default][output][,...n][with{recomple|encrytion|recomplete,encrytion]}forrepublicationassql_statement
     例子:createprocedureexp1asselect*fromxsxxgocreateproceduregetscore@stuidvarchar(7)asselect*fromcjwherexid=@stuid存储过程中的语句有一定的限制1不能包含createview,createtigger,createdefault,createprocedurecreaterule这些语句2不能在同一存储过程中创建、删除、重建同一对象名3不能引用尚未存在的对象4谨慎使用临时表,因为临时数据库清空时候,就会出错28)执行存储过程executeprocedure_name参数列表createprocedurefindname@FNamevarchar(8)='文%'asselect*fromxsxxwherexingminglike@FNameexecutefindnameexecutefindname"邹%"29)存储过程操作修改存储过程alterprocedureprocedure_nameassql_statment改名sp_rename'old_name','new_name'删除存储过程dropprocedureprocedure_name29)触发器的概念触发器是一种特殊的存储过程。当使用insert,update,delete中的一种或者多种数据修改命令在指定表中对数据进行修改时,触发器就会发生。触发器可以查询其他表,而且可以包含复杂的sql语句,主要用于强调复杂的业务规则或
     要求。触发器的特点:触发器是自动执行的。当表中的数据作了任何修改之后立即被激活触发器可以通过数据库中的相关表进行层叠修改触发器可以强制限制。这些限制比check约束所定义的更加复杂,check约束不一样的是,与触发器可以引用其他表中的列。触发器的分类:触发器分为after触发器和insteadof触发器两种,他们之间的主要区别在于after触发器将在数据变动完成以后才被触发,可以对变动的数据进行检查,如果发生错误,将拒绝接受或回滚变动的数据。insteadof触发器将在数据变动以前被触发,并取代变动数据的操作,而去执行触发器定义的操作。30)创建触发器创建一个触发器必须指定以下的内容:1触发器名称2在其定义上的触发器
    的表3触发器何时触发4执行触发器时候的编程语句使用sql语句创建触发器createtriggertrigger_nameon[table|view][withencryption]{{forafter|insteadof}{[delete],[,][insert][,][update]}[withappend][notforreplication]assqlstatment[,.....n]31)inserted和deleted表这两个表存在于内存中。inserted表中存储着被insert和update语句影响的新数据行。执行insert或update语句时,新的数据行被添加到基本表中,同时这些数据行的备份会被复制到inserted临时表中.deleted表中存储着被delete和update语句影响的旧数据行。执行delete或update语句时候,指定的数据行从基本表删除,然后被转移到delete表中。在基本表和delete表中一般不会存在相同的数据行.可以使用这两个表精确确定触发器的动作对数据表所做的修改.createtriggertable_a_deleteontable_afordeleteasinserttable_b(activity)selectuser_namefromdeleted
     如果想把插入的每一条记录做一次备份,可以使用下面的触发器createtriggertr_bak_insertontable_aforinsertasinserttable_bak(activity)selectuser_namefrominserted32)触发器的工作过程一个表可以有多个触发器,这些触发器可以是不同类型,也可以是同一类型的。delete触发器的工作过程触发delete触发器后,从受影响的表中删除的行被放置到一个特殊的deleted表中。例子:usenorthwindcreatetriggercategory_deletefordeleteasupdatepsetdiscountinued=1fromproductsaspinnerjoindeletedasdonp.categoryID=d.categoryIDupdate触发器的工作过程update触发器的工作过程可以看作由两步构成:当在定义有触发器的表上执行update语句时,原始行(前象)被移入deleted表,更新行(后象)被移入insert表可以使用ifupdate语句定义一个监视指定列的数据更新的触发器。这样,就可以让触发器容易隔离出指定列的活动。例子:usenotrhwindcreatetriggeremployee_updatedonemployeesforupdateasifupdate(employeeID)beginraiseerror('Transactioncannotbeprocessed!.\******employeeIDnumbercouldnotbemodified.',10,1)rollbacktransactionendinsetadof触发器的工作过程可以在表和视图上使用insteadof触发器,指定这种触发器就可以进行原始的触发动作。对于每一种触发动作(insert,delete,update),每一个表或者视图只能有一个insteadof触发器。insteadof触发器经常用于更新那些没有办法通过正常方式进行更新的视图。例如,通常不能在一个基于连接的试图上进行delete操作。然而可以编写一个insteadofdelete触发器来
     进行删除工作。33)创建触发器的注意事项1触发器和某一指定的表有关,当表被删除时候,任何与该表有关的触发器同样会被删除。2在一个表上的
    每一个动作只能有一个触发器与之关联。例如不能在表xsxx上创建第二个insert触发器,该触发器在有数据插入表中时进行触发。当添加第二个触发器时,第一个触发器在没有任何警告信息的条件下被删除。3在一个表上,最多能创建3个触发器与之相关联,一个insert触发器,一个delete触发器,一个update触发器。4触发器中不能出现下列的语句alterdatabasecreatedatabasediskinitdiskresizedropdatabaseloaddatabaseloadlogreconfigrurerestoredatabaserestorelog34)察看触发器察看触发器的信息可以通过存储过程来进行实现。sp_help:用于察看触发器的一般信息sp_helptex:用于察看触发器的正文信息sp_depends:用于察看触发器的引用表或者指定表涉及的所有触发器。sp_dependstable_namesp_dependstrigger_name修改触发器alterttiggertrigger_namefor(delete|update|insert)assql_statement语法和创建触发器的语法相同。35)删除触发器删除触发器有4种办法在图形化界面中删除触发器使用命令droptriggertrigger_name进行触发器的删除直接删除触发器所在的表创建一个相同动作的触发器来删除触发器
     36)sqlserver服务器的登陆身份验证模式登陆身份验证模式有两种1windows认证模式windows认证模式利用了操作系统的安全认证管理机制,允许sqlserver使用NT的用户名和口令。在这种模式下,用户只要通过登陆windows就可直接连接到sqlserver。2混合认证模式在混合认证模式下,windows认证和sqlserver认证模式都是可用的。在sqlserver认证模式下,用户在连接sqlserver时候必须提供登陆名和登陆密码,这些登陆信息存储在sqlserver的系统表syslogins中。与NT系统的帐号无关。37)sql语句的方式添加登陆帐户添加登陆帐号的方式可以用存储过程来实现1添加windows帐号认证用户sp_grantlogin[@loginname=]'login'@loginname原样输入的字符串常量sp_grantlogin'JACKY\jack007'sp_grantlogin@loginname=JACKY\jack0072添加sqlserver身份验证帐户sp_addlogin[@loginname=]'login'[,@password=]'password'[,@defdb=]'database_name'[,@deflanguage=]'language'[,@sid]='sid'sp_addlogin'jacky','007','xscj'sp_addlogn'zhang'此时zhang用户没有密码,非常不安全,建议为每一个帐户增加密码系统管理员sa是为了进行sqlserver兼容性而建立的,默认情况下指派给系统管理员sysadmin,没有办法进行修改。38)服务器角色默认服务器角色,参见benet教材,这里不过多讲述。建立自定义服务器角色sp_addsrvrolemember:添加服务器角色sp_addsrvrolemember[@login=]'loginame'[@rolename=]'rolename'@loginname登陆名称@rolename服务器角色名称sp_addsrvrolename'zhang','sysadmin'
     sp_droprolem
    ember:删除自定义的服务器角色sp_droprolemember'zhang'39)添加数据库用户图形化界面添加数据库用户,参考benet教材,这里不多讲述sp_grantdbaccess[@loginame=]'login'[,[@name_in_db]'name_in_db'[OUTPUT]]@loginame:登陆帐号@name_in_db:登陆帐号相匹配的数据库帐号,如果不加以指定,默认和登陆帐号同名40)数据库角色数据库角色能为某一用户或者某一组用户授予不同级别的管理或者访问数据库对象的权限,这些权限是数据库专有的。固定数据库角色,参考benet教材,这里不多讲述。用户自定义数据库角色创建自定义数据库角色sp_addrole[@rolename]='role'[,[@ownername]=owner]@rolename:创建的数据库角色名称@ownername:创建的数据库角色所有者,默认是dbo删除自定义数据库角色sp_droprole[@rolenem=]'rolename'41)授权,权限管理sqlserver中,采用grant,revoke,deny三种命令来管理权限grant:进行授权revoke:插销授权,这些权限是由grant授予的deny:明确静止某项权限权限:分为对象权限,语句权限2种1对象权限:针对表,视图,存储过程有select,insert,update,delete,refrence,execute2语句权限:指明是否有执行某项语句的权限createdatabasecreatetablecreateviewcreaterulecreatedefault
     createprocedurebackupdatabasebackuplog42)授权语句grant管理语句权限的grant语句grant{ALL|statement[,...n]}tosecurity_account管理对象权限的grant语句grant{all[privillages]|permission[,...n]}{[(column[,...n])]on{table|view|}|{table|view}[(column[...n]}tosecurity_account[,...n][withgrant_option][as{group|role}]例子:grantselect,insert,update,deleteonauthorsto'ugv','guest'43)sqlserver代理服务sqlserver代理服务是一个任务规划器和警报管理器sqlserver代理服务主要包括作业、作业活动管理器、警报、操作员、代理和错误日志6个组件sqlserver代理服务器启动,参见benet教材44)创建作业调度作业警报管理定义操作员创建性能警报
    
    
  • 上一篇资讯: SQLServer语法
  • 下一篇资讯: SqlServer语法
  • 设为首页 | 加入收藏 | 网学首页 | 原创论文 | 计算机原创
    版权所有 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2020 myeducs.Cn www.myeducs.Cn All Rights Reserved 湘ICP备09003080号 常年法律顾问:王律师