您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 数据库 > Sql-数据库各种语句
SQL之-建库、建表、建约束、关系、部分T-sql语句--建库ifexists(select*fromsys.sysdatabaseswherename='wf')beginusemasterdropdatabasewfendgocreatedatabasewfon(name=N'wf',filename=N'E:\MyCode\ETC收费站\ETC收费站\ETC_Data\wf.mdf',size=3mb,maxsize=unlimited,filegrowth=1)--建库ifexists(select*fromsys.sysdatabaseswherename='wf')beginusemasterdropdatabasewfendgocreatedatabasewfon(name=N'wf',filename=N'E:\MyCode\ETC收费站\ETC收费站\ETC_Data\wf.mdf',size=3mb,maxsize=unlimited,filegrowth=1)logon(name=N'wf',filename=N'E:\MyCode\ETC收费站\ETC收费站\ETC_Data\wf_log.ldf',size=3mb,maxsize=unlimited,filegrowth=1)gousewfgoifexists(select*fromsys.sysobjectswherename='wf')begindroptablewfend--建表、建约束、关系usewfgocreatetabletableok(col1int,col2_notnullintnotnull,col3_defaultnchar(1)notnulldefault('男'),--默认男col4_defaultdatetimenotnulldefault(getdate()),--默认得到系统时间col5_checkintnotnullcheck(col5_check=18andcol5_check=55),--添加约束,数据值在18到55之间col6_checknchar(9)notnullcheck(col6_checklike'msd0902[0-9][^6-9]'),--添加约束,数据值前7位必须是‘msd0902’,倒数第两位可以是0-9中任意一个数字,最后一位不是6-9之间的数字。cola_primarynchar(5)notnullprimarykey,--建立主键colb_uniqueintunique,--唯一约束col7_Identityintnotnullidentity(100,1),--自增长,从100开始,每列值增加1个col8_identitynumeric(5,0)notnullidentity(1,1)--自增长,从1开始,每列值增加1个,最大值是5位的整数col9_guiduniqueidentifiernotnulldefault(newid())--使用newid()函数,随机获取列值)创建数据库创建之前判断该数据库是否存在ifexists(select*fromsysdatabaseswherename='databaseName')dropdatabasedatabaseNamegoCreateDATABASEdatabase-name删除数据库dropdatabasedbname备份sqlserver---创建备份数据的deviceUSEmasterEXECsp_addumpdevice'disk','testBack','c:\mssql7backup\MyNwind_1.dat'---开始备份BACKUPDATABASEpubsTOtestBack创建新表createtabletabname(col1type1[notnull][primarykey],col2type2[notnull],..)根据已有的表创建新表:A:gouse原数据库名goselect*into目的数据库名.dbo.目的表名from原表名(使用旧表创建新表)B:createtabletab_newasselectcol1,col2…fromtab_olddefinitiononly创建序列createsequenceSIMON_SEQUENCEminvalue1--最小值maxvalue999999999999999999999999999最大值startwith1开始值incrementby1每次加几cache20;删除新表droptabletabname增加一个列Altertabletabnameaddcolumncoltype注:列增加后将不能删除。DB2中列加上后数据类型也不能改变,唯一能改变的是增加varchar类型的长度。添加主键Altertabletabnameaddprimarykey(col)说明:删除主键:Altertabletabnamedropprimarykey(col)创建索引create[unique]indexidxnameontabname(col….)删除索引:dropindexidxnameontabname注:索引是不可更改的,想更改必须删除重新建。创建视图createviewviewnameasselectstatement删除视图:dropviewviewname几个简单的基本的sql语句选择:select*fromtable1where范围插入:insertintotable1(field1,field2)values(value1,value2)删除:deletefromtable1where范围更新:updatetable1setfield1=value1where范围查找:select*fromtable1wherefield1like’%value1%’(所有包含‘value1’这个模式的字符串)---like的语法很精妙,查资料!排序:select*fromtable1orderbyfield1,field2[desc]总数:selectcount(*)astotalcountfromtable1求和:selectsum(field1)assumvaluefromtable1平均:selectavg(field1)asavgvaluefromtable1最大:selectmax(field1)asmaxvaluefromtable1最小:selectmin(field1)asminvaluefromtable1[separator]几个高级查询运算词A:UNION运算符UNION运算符通过组合其他两个结果表(例如TABLE1和TABLE2)并消去表中任何重复行而派生出一个结果表。当ALL随UNION一起使用时(即UNIONALL),不消除重复行。两种情况下,派生表的每一行不是来自TABLE1就是来自TABLE2。B:EXCEPT运算符EXCEPT运算符通过包括所有在TABLE1中但不在TABLE2中的行并消除所有重复行而派生出一个结果表。当ALL随EXCEPT一起使用时(EXCEPTALL),不消除重复行。C:INTERSECT运算符INTERSECT运算符通过只包括TABLE1和TABLE2中都有的行并消除所有重复行而派生出一个结果表。当ALL随INTERSECT一起使用时(INTERSECTALL),不消除重复行。注:使用运算词的几个查询结果行必须是一致的。使用外连接A、leftouterjoin:左外连接(左连接):结果集既包括连接表的匹配行,也包括左连接表的所有行。SQL:selecta.a,a.b,a.c,b.c,b.d,b.ffromaLEFTOUTJOINbONa.a=b.cB:rightouterjoin:右外连接(右连接):结果集既包括连接表的匹配连接行,也包括右连接表的所有行。C:fullouterjoin:全外连接:不仅包括符号连接表的匹配行,还包括两个连接表中的所有记录。编辑本段判断对象是否存在判断数据库是否存在ifexists(select*fromsys.databaseswherename='数据库名')dropdatabase[数据库名]判断表是否存在ifnotexists(select*fromsysobjectswhere[name]='表名'andxtype='U')begin--这里创建表end判断存储过程是否存在ifexists(select*fromsysobjectswhereid=object_id(N'[存储过程名]')andOBJECTPROPERTY(id,N'IsProcedure')=1)dropprocedure[存储过程名]判断临时表是否存在ifobject_id('tempdb..#临时表名')isnotnulldroptable#临时表名判断视图是否存在--SQLServer2000IFEXISTS(SELECT*FROMsysviewsWHEREobject_id='[dbo].[视图名]'--SQLServer2005IFEXISTS(SELECT*FROMsys.viewsWHEREobject_id='[dbo].[视图名]'判断函数是否存在ifexists(select*fromdbo.sysobjectswhereid=object_id(N'[dbo].[函数名]')andxtypein(N'FN',N'IF',N'TF'))dropfunction[dbo].[函数名]获取用户创建的对象信息SELECT[name],[id],crdateFROMsysobjectswherextype='U'判断列是否存在ifexists(select*fromsyscolumnswhereid=object_id('表名')andname='列名')altertable表名dropcolumn列名判断列是否自增列ifcolumnproperty(object_id('table'),'col','IsIdentity')=1print'自增列'elseprint'不是自增列'SELECT*FROMsys.columnsWHEREobject_id=OBJECT_ID('表名')ANDis_identity=1判断表中是否存在索引ifexists(select*fromsysindexeswhereid=object_id('表名')andname='索引名')print'存在'elseprint'不存在查看数据库中对象SELECT*FROMsys.sysobjectsWHEREname='对象名'编辑本段提升复制表(只复制结构,源表名:a新表名:b)(Access可用)法一:select*intobfromawhere11法二:selecttop0*intobfroma拷贝表(拷贝数据,源表名:a目标表名:b)(Access可用)insertintob(a,b,c)selectd,e,ffromb;跨数据库之间表的拷贝(具体数据使用绝对路径)(Access可用)insertintob(a,b,c)selectd,e,ffrombin‘具体数据库’where条件例子:..frombin'&Server.MapPath(.&\data.mdb&'where..子查询(表名1:a表名2:b)selecta,b,cfromawhereaIN(selectdfromb或者:selecta,b,cfromawhereaIN(1,2,3)显示文章、提交人和最后回复时间selecta.title,a.username,b.adddatefromtablea,(selectmax(adddate)adddatefromtablewheretable.title=a.title)b外连接查询(表名1:a表名2:b)selecta.a,a.b,a.c,b.c,b.d,b.ffromaLEFT
本文标题:Sql-数据库各种语句
链接地址:https://www.777doc.com/doc-1908018 .html