SQL语句大全.docx

上传人:b****8 文档编号:12163372 上传时间:2023-06-04 格式:DOCX 页数:18 大小:45.76KB
下载 相关 举报
SQL语句大全.docx_第1页
第1页 / 共18页
SQL语句大全.docx_第2页
第2页 / 共18页
SQL语句大全.docx_第3页
第3页 / 共18页
SQL语句大全.docx_第4页
第4页 / 共18页
SQL语句大全.docx_第5页
第5页 / 共18页
SQL语句大全.docx_第6页
第6页 / 共18页
SQL语句大全.docx_第7页
第7页 / 共18页
SQL语句大全.docx_第8页
第8页 / 共18页
SQL语句大全.docx_第9页
第9页 / 共18页
SQL语句大全.docx_第10页
第10页 / 共18页
SQL语句大全.docx_第11页
第11页 / 共18页
SQL语句大全.docx_第12页
第12页 / 共18页
SQL语句大全.docx_第13页
第13页 / 共18页
SQL语句大全.docx_第14页
第14页 / 共18页
SQL语句大全.docx_第15页
第15页 / 共18页
SQL语句大全.docx_第16页
第16页 / 共18页
SQL语句大全.docx_第17页
第17页 / 共18页
SQL语句大全.docx_第18页
第18页 / 共18页
亲,该文档总共18页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

SQL语句大全.docx

《SQL语句大全.docx》由会员分享,可在线阅读,更多相关《SQL语句大全.docx(18页珍藏版)》请在冰点文库上搜索。

SQL语句大全.docx

SQL语句大全

数据库管理系统,databasemanagementsystem,简称dbms

数据定义语言DDL(DataDefinitionLanguage)

数据操作语言DML(DataManipulationLanguage

StructuredQueryLanguage(结构化查询语言

DatabaseEngine数据库引擎

AnalysisServices分析服务

IntegrationServices集成服务

Replication复制

ReportingServices报表服务

NotificationServices通知服务

ServiceBroker服务代理

FullTextSearch全文搜索

OLTP联机事务处理OLAP联机分析处理联机处理OLTP(on-line transaction processing)、联机分析处理OLAP(On-Line Analytical Processing)OLAP和OLTP的区别 OLTP OLAP 用户操作人员低层管理人员决策人员高级管理人员 功能日常操作处理分析决策DB 设计 面向应用面向主题数据当前的最新的细节的二维的分立的历史的聚集的多维的集成的统一的存取读/写数十条记录 读上百万条记录工作单位简单的事务复杂的查询 用户数上千个上百个 DB 大小100MB-GB 100GB-TB

升级:

in-placeside-by-side

TCP:

TransmissionControlProtocolIP是英文InternetProtocol(网络之间互连的协议)的缩写

∙Protocol协议,草约,草案

∙TIMEprotocol时间协议

∙cryptographicprotocol安全协议,密码协议,加密协定

∙cryptographic密码,暗码,用密码写的

∙cryptographicprotocol安全协议,密码协议,加密协定

∙cryptographicalgorithm密码算法,加密算法,密码演算法

SQL语句大全

本词条从基础知识、判断对象和应用技巧等方面,介绍了SQL(StructuredQueryLanguage)结构化查询语言的应用方法。

2 基本术语

2.1 创建数据库

创建之前判断该数据库是否存在

ifexists(select*fromsysdatabaseswherename='databaseName')

dropdatabasedatabaseName

go

CreateDATABASEdatabasename

2.2 删除数据库

DropDATABASEdatabasename

2.3 备份sqlserver

---创建备份数据的device

USEmaster

EXECsp_addumpdevice'disk','testBack','c:

\mssql7backup\MyNwind_1.dat'

---开始备份

BACKUPDATABASEpubsTOtestBack

2.4 创建新表

createtabletabname(col1type1[notnull][primarykey],col2type2[notnull],..)

根据已有的表创建新表:

A:

go

use原数据库名

go

select*into目的数据库名.dbo.目的表名from原表名(使用旧表创建新表)

B:

createtabletab_newasselectcol1,col2…fromtab_olddefinitiononly

2.5 创建序列

createsequenceSIMON_SEQUENCE

minvalue1--最小值

maxvalue999999999999999999999999999--最大值

startwith1--开始值

incrementby1--每次加几

cache20;

2.6 删除新表

droptabletabname

2.7 增加一个列

Altertabletabnameaddcolnamecoltype

2.8 删除一个列

Altertabletabnamedropcolumncolname

2.9 添加主键

Altertabletabnameaddprimarykey(col)

说明:

删除主键:

Altertabletabnamedropprimarykey(col)

2.10 创建索引

create[unique]indexidxnameontabname(col…。

删除索引:

dropindexidxnameontabname

注:

索引是不可更改的,想更改必须删除重新建。

2.11 创建视图

createviewviewnameasselectstatement

删除视图:

dropviewviewname

2.12 简单基本的sql语句

(1)数据记录筛选:

sql="select*from数据表where字段名=字段值orderby字段名[desc]"

sql="select*from数据表where字段名like'%字段值%'orderby字段名[desc]"

sql="selecttop10*from数据表where字段名=字段值orderby字段名[desc]"

sql="selecttop10*from数据表orderby字段名[desc]"

sql="select*from数据表where字段名in('值1','值2','值3')"

sql="select*from数据表where字段名between值1and值2"

(2)更新数据记录:

sql="update数据表set字段名=字段值where条件表达式"

sql="update数据表set字段1=值1,字段2=值2……字段n=值nwhere条件表达式"

(3)删除数据记录:

sql="deletefrom数据表where条件表达式"

sql="deletefrom数据表"(将数据表所有记录删除)

(4)添加数据记录:

sql="insertinto数据表(字段1,字段2,字段3…)values(值1,值2,值3…)"

sql="insertinto目标数据表select*from源数据表"(把源数据表的记录添加到目标数据表)

(5)数据记录统计函数:

AVG(字段名)得出一个表格栏平均值

COUNT(*;字段名)对数据行数的统计或对某一栏有值的数据行数统计

MAX(字段名)取得一个表格栏最大的值

MIN(字段名)取得一个表格栏最小的值

SUM(字段名)把数据栏的值相加

引用以上函数的方法:

sql="selectsum(字段名)as别名from数据表where条件表达式"

setrs=conn.excute(sql)

用rs("别名")获取统计的值,其它函数运用同上。

查询去除重复值:

selectdistinct*fromtable1

(5)数据表的建立和删除:

CREATETABLE数据表名称(字段1类型1(长度),字段2类型2(长度)……)

(6)单列求和:

SELECTSUM(字段名)FROM数据表

2.13 几个高级查询运算词

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),不消除重复行。

注:

使用运算词的几个查询结果行必须是一致的。

2.14 使用外连接

A、leftouterjoin:

左外连接(左连接):

结果集既包括连接表的匹配行,也包括左连接表的所有行。

SQL:

selecta.a,a.b,a.c,b.c,b.d,b.ffromaLEFTOUTJOINbONa.a=b.c

B:

rightouterjoin:

右外连接(右连接):

结果集既包括连接表的匹配连接行,也包括右连接表的所有行。

C:

fullouterjoin:

全外连接:

不仅包括符号连接表的匹配行,还包括两个连接表中的所有记录。

3 使用方法

3.1 1=1,1=2的使用

在SQL语句组合时用的较多

SQL语句大全

“where1=1”是表示选择全部“where1=2”全部不选,

如:

if@strWhere!

='

begin

set@strSQL='selectcount(*)asTotalfrom['+@tblName+']where'+@strWhere

end

else

begin

set@strSQL='selectcount(*)asTotalfrom['+@tblName+']'

end

我们可以直接写成

set@strSQL='selectcount(*)asTotalfrom['+@tblName+']where1=1and'+@strWhere

3.2 收缩数据库

--重建索引

DBCCREINDEX

DBCCINDEXDEFRAG

--收缩数据和日志

DBCCSHRINKDB

DBCCSHRINKFILE

3.3 压缩数据库

dbccshrinkdatabase(dbname)

转移数据库给新用户以已存在用户权限

execsp_change_users_login'update_one','newname','oldname'

go

3.4 检查备份集

RESTOREVERIFYONLYfromdisk='E:

\dvbbs.bak'

SQL语句大全

3.5 修复数据库

AlterDATABASE[dvbbs]SETSINGLE_USER

GO

DBCCCHECKDB('dvbbs',repair_allow_data_loss)WITHTABLOCK

GO

AlterDATABASE[dvbbs]SETMULTI_USER

GO

3.6 日志清除

SETNOCOUNTON

DECLARE@LogicalFileNamesysname,

@MaxMinutesINT,

@NewSizeINT

USEtablename--要操作的数据库名

Select@LogicalFileName='tablename_log',--日志文件名

@MaxMinutes=10,--Limitontimeallowedtowraplog.

@NewSize=1--你想设定的日志文件的大小(M)

--Setup/initialize

DECLARE@OriginalSizeint

Select@OriginalSize=size

FROMsysfiles

Wherename=@LogicalFileName

Select'OriginalSizeof'+db_name()+'LOGis'+

CONVERT(VARCHAR(30),@OriginalSize)+'8Kpagesor'+

CONVERT(VARCHAR(30),(@OriginalSize*8/1024))+'MB'

FROMsysfiles

Wherename=@LogicalFileName

CreateTABLEDummyTrans

(DummyColumnchar(8000)notnull)

DECLARE@CounterINT,

@StartTimeDATETIME,

@TruncLogVARCHAR(255)

Select@StartTime=GETDATE(),

@TruncLog='BACKUPLOG'+db_name()+'WITHTRUNCATE_ONLY'

DBCCSHRINKFILE(@LogicalFileName,@NewSize)

EXEC(@TruncLog)

--Wrapthelogifnecessary.

WHILE@MaxMinutes>DATEDIFF(mi,@StartTime,GETDATE())--timehasnotexpired

AND@OriginalSize=(SelectsizeFROMsysfilesWherename=@LogicalFileName)

AND(@OriginalSize*8/1024)>@NewSize

BEGIN--Outerloop.

Select@Counter=0

WHILE((@Counter<@OriginalSize/16)AND(@Counter<50000))

BEGIN--update

InsertDummyTransVALUES('FillLog')

DeleteDummyTrans

Select@Counter=@Counter+1

END

EXEC(@TruncLog)

END

Select'FinalSizeof'+db_name()+'LOGis'+

CONVERT(VARCHAR(30),size)+'8Kpagesor'+

CONVERT(VARCHAR(30),(size*8/1024))+'MB'

FROMsysfiles

Wherename=@LogicalFileName

DropTABLEDummyTrans

SETNOCOUNTOFF

3.7 更改某个表

execsp_changeobjectowner'tablename','dbo'

3.8 存储更改全部表

CreatePROCEDUREdbo.User_ChangeObjectOwnerBatch

@OldOwnerasNVARCHAR(128),

@NewOwnerasNVARCHAR(128)

AS

DECLARE@NameasNVARCHAR(128)

DECLARE@OwnerasNVARCHAR(128)

DECLARE@OwnerNameasNVARCHAR(128)

DECLAREcurObjectCURSORFOR

select'Name'=name,

'Owner'=user_name(uid)

fromsysobjects

whereuser_name(uid)=@OldOwner

orderbyname

OPENcurObject

FETCHNEXTFROMcurObjectINTO@Name,@Owner

WHILE(@@FETCH_STATUS=0)

BEGIN

if@Owner=@OldOwner

begin

set@OwnerName=@OldOwner+'.'+rtrim(@Name)

execsp_changeobjectowner@OwnerName,@NewOwner

end

--select@name,@NewOwner,@OldOwner

FETCHNEXTFROMcurObjectINTO@Name,@Owner

END

closecurObject

deallocatecurObject

GO

3.9 SERVER中循环写入数据

declare@iint

set@i=1

while@i<30

begin

insertintotest(userid)values(@i)

set@i=@i+1

end  

4 其他资料

4.1 判断对象是否存在

4.2 判断数据库是否存在

ifexists(select* from sysdatabases where name='数据库名')

dropdatabase[数据库名]

4.3 判断表是否存在

ifnotexists(select*fromsysobjectswhere[name]='表名'andxtype='U')

begin

--这里创建表

end

4.4 判断存储过程是否存在

ifexists(select* from sysobjects whereid=object_id(N'[存储过程名]')andOBJECTPROPERTY(id,N'IsProcedure')=1)

dropprocedure[存储过程名]

4.5 判断临时表是否存在

ifobject_id('tempdb..#临时表名') isnotnull

droptable#临时表名

4.6 判断视图是否存在

--SQLServer2000

IFEXISTS(SELECT* FROM sysviews WHEREobject_id='[dbo].[视图名]'

--SQLServer2005

IFEXISTS(SELECT* FROM sys.views WHERE object_id='[dbo].[视图名]'

4.7 判断函数是否存在

ifexists(select* from dbo.sysobjects where id=object_id(N'[dbo].[函数名]')andxtypein(N'FN',N'IF',N'TF'))

dropfunction[dbo].[函数名]

4.8 获取创建信息

SELECT[name],[id],crdate FROM sysobjects where xtype='U'

/*

xtype的表示参数类型,通常包括如下这些C= CHECK约束D=默认值或DEFAULT约束F=FOREIGNKEY约束L= 日志 FN=标量函数IF=内嵌表函数P= 存储过程 PK= PRIMARYKEY约束(类型是K)RF=复制筛选存储过程S=系统表TF=表函数TR=触发器U=用户表UQ= UNIQUE约束(类型是K)V=视图X=扩展存储过程*/

4.9 判断列是否存在

ifexists(select* from syscolumns whereid=object_id('表名')and name='列名')

altertable表名dropcolumn列名

4.10 判断列是否自增列

ifcolumnproperty(object_id('table'),'col','IsIdentity')=1

print'自增列'

else

print'不是自增列'

SELECT* FROM sys.columns WHEREobject_id=OBJECT_ID('表名')

ANDis_identity=1

4.11 判断表中是否存在索引

ifexists(select* from sysindexes whereid=object_id('表名')and name='索引名')

print'存在'

else

print'不存在

4.12 查看数据库中对象

SELECT* FROM sysobjects WHEREname='对象名'

select*fromtable(所要查询的表名)wherecoloum(条件)

4.13 提升

4.14 复制表

(只复制结构,源表名:

a新表名:

b)(Access可用)

法一:

select*intobfromawhere1<>1

法二:

selecttop0*intobfroma

4.15 拷贝表

(拷贝数据,源表名:

a目标表名:

b)(Access可用)

insertintob(x,y,z)selectd,e,ffroma;

4.16 跨数据库之间表的拷贝

(具体数据使用绝对路径)(Access可用)

insertintob(x,y,z)selectd,e,ffromain‘具体数据库’where条件

例子:

.frombin'"&Server.MapPath("."&"\data.mdb"&"'where..

4.17 子查询

(表名1:

a表名2:

b)

selecta,b,cfromawhereaIN(selectdfromb或者:

selecta,b,cfromawhereaIN(1,2,3)

4.18 显示文章最后时间

selecta.title,a.username,b.adddatefromtablea,(selectmax(adddate)adddatefromtablewheretable.title=a.title)b

4.19 外连接查询

(表名1:

a表名2:

b)

selecta.a,a.b,a.c,b.c,b.d,b.ffromaLEFTOUTJOINbONa.a=b.c

4.20 在线视图查询

(表名1:

a

select*from(Selecta,b,cFROMa)Twheret.a>1;

4.21 between的用法

between为查询某字段的指定范围,限制查询数据范围时包括了边界值,notbetween不包括边界值

select*fromtable1wheretimebetweentime1andtime2

selecta,b,c,fromtable1whereanotbetween数值1and数值2

4.22 in的使用方法

select*fromtable1wherea[not]in(‘值1’,’值2’,’值4’,’

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 农林牧渔

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2