数据库同步工具
sqlserver,Mysql数据同步软件

MSSQL语句大全

购买事宜请联系QQ:1793040

CREATEDATABASE数据库 名称?

dropdatabase ? dbname

—? 创建 备份数据 ?设备

USE ?掌握

EXEC ? Sp_addumpdevice? ” disk” , ” testBack” , ” c:\\\\ mssqlbackup \\\\ MyNwind_1.dat”

—? 开始 备份

BACKUPDATABASE ?酒馆? TO ? TestBack?

createtable ? Tabname(col1 type1? [不为空] [主键] ,col2 type2? [not null] ,..)

根据现有表创建新表:

A : createtable ? Tab_new? 喜欢 ? tab_old( 使用旧表创建新表

B : createtable ? Tab_new? asselect ? col1,col2…? 来自 ? tab_old的定义?

droptable ?标签名?

可更改 ?标签名? addcolumn ?列类型

注意:添加列后,无法将其删除。 DB2 添加中间列后不能更改数据类型,这是唯一的可以更改的是增加 varchar 类型的长度。

删除主键:可以更改 ?标签名? dropprimarykey (col)?

删除索引: dropindex ? Idxname

注意:如果要更改索引,则该索引不可更改,您必须将其删除。

删除视图: dropview ?视图名称

选择: 选择 * from ?表格1? 其中范围

插入: insertinto ?表1(字段1,字段2)? (value1,value2)

删除: deletefrom ?表格1? 其中范围

更新: 更新 ?表格1? 设置 ? field1 = value1? 其中范围

查找: 选择 * from ?表格1? 其中 ? Field1? 喜欢 ? ” value1 “? —像 语法非常微妙,请检查信息

排序: 选择 * from ?表格1? orderby ?场1,场2? [desc]

总计: 选择 count as ?总数? 来自 ?表1

摘要: 选择 sum (field1)? as ?总价值? 来自 ? table1

平均: 选择 avg (field1)? as ?平均价值? 来自 ? table1

最大值: 选择 max (field1)? as ?最大值? 来自 ? table1

最小值: 选择 min (field1)? as ?最小值? 来自 ? table1

A : UNION 运算符

UNION 运算符组合了另外两个结果表(例如 ?TABLE1? ?TABLE2 ),并消除其中的任何重复行用该表得出结果表。何时全部使用 UNION 一起使用时(即?) UNION ALL ),而不会消除重复的行。在这两种情况下,派生表的每一行都来自 ?表格1? 来自 ? TABLE2

B : EXCEPT 运算符

EXCEPT 通过将所有内容都包含在中进行运算符?表格1? 而不是 ?表2? 并消除所有重复的行以得出结果表。何时全部使用 EXCEPT 一起使用时 ? ( EXCEPT ALL ,请不要删除重复的行。

C : INTERSECT 运算符

INTERSECT 操作员通道仅包括 ?表格1? ?表2? 所有行并消除所有重复的行以得出结果表。何时全部使用 INTERSECT 一起使用时 ? ( INTERSECT ALL ,请不要删除重复的行。

注意:使用操作词的几个查询结果行必须保持一致。

A 外部 加入 :

左外部连接(左连接):结果集包括连接该表的匹配行还包括左连接表的所有行。

SQL :? 选择 ? Aa,ab,ac,bc,bd,bf? 来自 ?一个? ?出去? JOIN ? B? ON ?啊? = ? bc

B : 正确 外部 加入 :

外部连接 右连接 :结果集包括连接表的匹配连接行和右连接表的所有行。

C : 完整 / 外部 加入 :

完全外部连接:不仅包括符号的匹配行连接表,它还包括两个连接表中的所有记录。

一个表,一旦进行分组 完成后,查询后只能获取与组有关的信息。

组相关信息:(统计信息)计数 sum max min avg 分组标准

SQLServer 在中间分组时:您不能使用 文本, ntext ,图像 将字段键入为分组依据

选择 统计函数中的字段不能与普通领域放在一起;

分离数据库: ? sp_detach_db ;? 附加数据库: sp_attach_db? 以下表示添加

时需要完整的路径名

sp_renamedb? ” old_name” , ” new_name”

方法1: 选择 * 进入 ? ? 来自 ?一个? 其中 1 \ lt; \ gt; 1 (仅适用于 SQlServer

方法2: selecttop 0 * span> 变成 ? ? 来自

insertinto ? B(a,b,c)? 选择 ? D,e,f? 来自 ? b;

insertinto ? B(a,b,c)? 选择 ? D,e,f? 来自 ? ? in ? ” 特定数据库 “? 其中条件

示例: .. 来自 ? B? in “” \ Server.MapPath(”。”)\” \\\\ data.mdb” \”” 其中 ..

select ? A,B,C? 来自 ?一个? 其中 ?一个? IN ? ( 选择 ?d? 来自 ?b)? : 选择 ? a,b,c? 来自 ?一个? 其中 ?一个? IN ? ( 1 2 3

选择 ? A.标题,a。用户名,b.adddate? fromtable ? a,( 选择 max (adddate)adddate? fromtablewheretable 。title = a.title)b

select ? Aa,ab,ac,bc,bd,bf? 来自 吗?一个? 左侧 ?出去? JOIN ? B? ON ?啊? = ? bc

select * from ? ( SELECT ?A,b,c? FROM ?a)T? 其中 ? ta? \ gt; 1 ;

select * from ?表格1? 其中 ?时间? 之间 ? time1? ? time2

select ? A,B,C ,? 来自 ?表格1? 其中 ?一个? 不在之间? 1? 2

select * from ?表格1? 其中 ?一个? [不是] in ? (” 1″,” 2″,” Value 4″,” 6″)

deletefrom ?表格1? 其中 不存在 ? (? 选择 * from ?table2? 其中 ?table1.field1 = table2.field1)

select * from ?一个? 内部 加入 ? ? ? aa = bb? 内部 加入 ? C ? ? aa = cc? 内部 加入 ? D吗 on ? aa = dd? 其中 ?…..

SQL :? 选择 * 来自计划其中 datediff “分” ,f 开始时间 getdate ()) \ gt; 5

selecttop 10 ? b。 *

span> 来自 ? ( selecttop 20 主键字段 排序字段来自表名 orderby 排序字段 desc )a, 表名 ? B? 其中 ? b。 主键字段 = ?答: 主键字段 orderby ? A. 排序字段

具体实现:

关于数据库分页:

声明 @开始 int @结束 int

@ sql nvarchar 600

set @ sql = selecttop + str @ end @开始 + 1 + + 来自 ?T? 其中 ?是否消失? notin selecttop + str @ str 1 + from ?T? 其中 ?Rid \ gt;- 1 )”

exec ? Sp_executesql? @ sql

注意:之后 top 无法直接跟随变量,因此在实际中在应用程序中,仅执行此类特殊处理。 消失 如果是 顶部 仍然有工具 正文字段,这样做非常有益。因为可以避免 ?顶部 如果该字段已被逻辑索引,则查询结果与实际表中的不一致之后(徽标 索引中的数据可能不同于表中的数据不一致,并且如果索引在查询中,则首先查询索引)

selecttop 10 * ?表格1? 其中范围

类似的内容可用于论坛的每月排行榜 每个月热门产品分析 按主题得分排名 ,等等 。)

select ? A,B,C? 来自 ?表名TA? 其中 = 选择 max (a)? 来自 ?表名tb? 其中 ?Tb.b = ta.b)

选择 ?A? from ?tableA)? 除外 ? ( 选择 ?a? 来自 ?tableB)? 除外 ? ( 选择 ?a? ?TableC)

selecttop 10 * 来自 ?表名? orderby newid ()

select newid ()

1 ), deletefrom ?表名? 其中 ? ID? notin ? ( 选择 max (id)? from ?tablename? groupby ?col1,col2,..。)

2 ), selectdistinct * intotempfrom ?表名

deletefrom ?表名

insertinto ?表名? 选择 * fromtemp

评估: 此操作涉及大量数据的移动。此方法不适用于大容量,但适用于数据操作

3 ), 例如,在外部表中导入数据时,由于某种原因,仅导入了一部分第一次,但是很难确定具体位置,因此只能在下次导入,这会产生很多重复的字段,如何删除重复的字段

可更改 ?表名

添加自动递增列

添加 ? Column_b? int 身份 1 1

deletefrom ?表名? 其中 ? Column_b? notin

select max (column_b) from ?表名? groupby ? column1,column2,..。)

可更改 ?表名? dropcolumn ? Column_b

select ?名称? 来自 ? Sysobjects? 其中 ?类型 = ” U” // ? U 代表用户

select ?名称? 来自 ? Syscolumns? 其中 ? id = object_id ” TableName”

case 可以轻松实现多个选择,类似于 选择? in span> case

select ?类型 sum case ?供应商? ” A” 然后 ?个? else 0 结束 ), sum 情况 ?供应商? ” C” 然后 ?个? else 0 结束 ), sum case ?供应商? ” B” 然后 ?个人电脑? else 0 结束 )? FROM ?表名? groupby ?键入

显示结果:

输入供应商的个人电脑

计算机 ?一个? 1

计算机 ?一个? 1

CD ? B? 2

CD ?一个? 2

移动 ? B? 3

移动 ? C? 3

TRUNCATETABLE ?表1

selecttop 5 * 来自 ? ( selecttop 15 * fromtableorderby ?ID? asc )表_ 别名 orderby ? ID? desc

其中 1 = 1 “? 是,请选择所有 ?” 其中 1 = 2 取消全部选中,

示例:

if @ strWhere ! = “”

开始

set @ strSQL = “从[“中选择计数(*)作为总计 + @ tblName + “]哪里?” + @ strWhere

结束

else

开始

set @ strSQL = “从[“中选择计数(*)作为总计 + @ tblName + “]”

end

我们可以直接编写

错误!找不到目录条目。

set @ strSQL = “从[“中选择计数(*)作为总计 + @ tblName + “]其中1 = 1? 安鼎 ?” + @ strWhere 2 ,缩小数据库

重建索引

DBCC ? REINDEX

DBCC ? INDEXDEFRAG

缩小数据和日志

DBCC ? SHRINKDB

DBCC ? SHRINKFILE

dbcc ? Shrinkdatabase(dbname)

exec ? Sp_change_users_login? ” update_one” ” newname” ” oldname”

go

恢复 ?验证吗? fromdisk = ” E:\\\\ dvbbs.bak”

ALTERDATABASE [dvbbs] SET ? SINGLE_USER

GO

DBCC ? CHECKDB( ” dvbbs” ,repair_allow_data_loss)? WITH TABLOCK

GO

ALTERDATABASE [dvbbs] SET ? MULTI_USER

GO

SET ?没有帐号? ON

DECLARE @ LogicalFileName ? Sysname,

@ MaxMinutes INT

@ NewSize INT

USE ?表名? -? 要操作的数据库的名称

SELECT @ LogicalFileName = ” tablename_log” , -? 日志文件名

@ MaxMinutes = 10 , span> -?允许包装日志的时间限制。

@ NewSize = 1 -? 您要设置的日志文件的大小 (M)

设置? / ?初始化

DECLARE @ OriginalSize int

SELECT @ OriginalSize = ?尺寸?

FROM ? Sysfiles

WHERE ?名称? = @ LogicalFileName

SELECT “原始大小为”” + db_name ()? + “?LOG is?” +

CONVERT VARCHAR 30 ), @ OriginalSize )? + “?8K页或?” +

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

FROM ? Sysfiles

WHERE ?名称? = @ LogicalFileName

CREATETABLE ? DummyTrans

(DummyColumn? char ?( 8000 /strong> )? 不是 null

DECLARE @计数器 INT

@ StartTime DATETIME

@ TruncLog VARCHAR 255

SELECT @ StartTime = GETDATE (),

@ TruncLog = ” BACKUP LOG?” + db_name ()? + “?WITH TRUNCATE_ONLY”

DBCC ? SHRINKFILE( @ LogicalFileName , @ NewSize

EXEC ? ( @ TruncLog

-?如有必要,包装日志。

WHILE @ MaxMinutes \ gt; DATEDIFF ? (mi , @ StartTime , span> GETDATE ())? -?时间尚未到期

AND @ OriginalSize = ? ( SELECT ?size? FROM ?sysfiles? WHERE ?名称? = @ LogicalFileName

AND ? ( @ OriginalSize * 8 / 1024 )? \ gt; @ NewSize

BEGIN -?外循环。

SELECT @计数器 = 0

WHILE (( @ Counter \ lt; style =” color:#008000;”> @ OriginalSize / 16 )? AND ?( @ Counter \ lt; 50000 ))

BEGIN -?更新

插入 ? DummyTrans? ? ( “填充日志” )? DELETE ? DummyTrans

SELECT @计数器 = @计数器 + 1

END

EXEC ? ( @ TruncLog

END

SELECT “最终大小?” + db_name ()? + “?LOG is?” +

CONVERT VARCHAR 30 ),大小)? + 8K页面还是?” +

CONVERT VARCHAR 30 ),(大小 * 8 / 1024 ))? + ” MB”

FROM ? Sysfiles?

WHERE ?名称? = @ LogicalFileName

DROPTABLE ? DummyTrans

SET ?没有帐号? OFF

exec ? Sp_changeobjectowner? “表名” ” dbo”

CREATEPROCEDURE ? Dbo.User_ChangeObjectOwnerBatch

@ OldOwner asNVARCHAR 128 ),

@ NewOwner asNVARCHAR 128

AS

DECLARE @名称 asNVARCHAR 128

DECLARE @所有者 asNVARCHAR 128

DECLARE @ OwnerName asNVARCHAR 128

DECLARE ? CurObject? CURSORFOR

select “名称” = ?名称,

“所有者” = user_name (uid)

from ? Sysobjects

其中 用户名 (uid) = @ OldOwner

orderby ?名称

OPEN curObject

FETCHNEXTFROM ? CurObject? INTO @ Name ,? @所有者

WHILE @@ FETCH_STATUS = 0

BEGIN

if @所有者 = @ OldOwner

开始

设置 @ OwnerName = @ OldOwner + 。” + rtrim @名称

exec ? Sp_changeobjectowner? @ OwnerName , @ NewOwner

结束

-?选择@名称,@ NewOwner,@ OldOwner

FETCHNEXTFROM ? CurObject? INTO @ Name ,? @所有者

END

close ? CurObject

取消分配 ? CurObject

GO

声明 @ i int

set @ i = 1

while @ i \ lt; 30

开始

insertinto ?测试(用户ID)? @ i

set @ i = @ i + 1

结束

案例:

有下表,该表要求所有未完成的成绩框架,根据每次增长 0.1 使它们只是通过 :

?名称分数

?张山 80

? shi子 59

? Wangwu 50

? Songquan 69

while ((( 选择 min (得分)? from ?Tb_table) \ lt; 60

开始

update ? Tb_table? 设置 ?得分了? = 得分 * 1.01

其中 ?得分 \ lt; 60

if ? ( 选择 min (得分)? from ?Tb_table) \\ u> 60

break

else

继续

结束

选择 * From ? TableName? OrderBy ? CustomerName整理English_PRC_Stroke_ci_as? // 从少到多

select ?加密( 原始密码

select ? Pwdencrypt( 原始密码

select ? Pwdcompare( 原始密码 加密密码 )? = 1 相同;否则不是 ?加密(” 原始密码 “)

select ? Pwdencrypt( 原始密码

select ? Pwdcompare( 原始密码 加密密码 )? = 1 相同;否则不是

声明 @列表 varchar 1000 ),

@ sql nvarchar 1000 )?

select @列表 = @ list + “,” + b.name?来自 ? sysobjects a,syscolumns b? 其中 ? a.id = b.id ? a.name = A”

set @ sql = “选择?” +右 @ list len @列表 1 + ” 从? A”

exec ? ( @ sql

EXEC ? Master..xp_fixeddrives

if ? ( 选择 ?Checksum_agg(binary_checksum( * )))? 来自 ?A)

=

? ( 选择 ?Checksum_agg(binary_checksum( * )))? from ?B)

print 等于

else

print 不等于

DECLARE ? HCFORACH? CURSOR ?全球? FORSELECT ” kill?” + RTRIM (小气)? FROM ? Master.dbo.sysprocesses

WHERE ?程序名称? IN ” SQL探查器” ,N ” SQL? span> 验船师

EXEC ? Sp_msforeach_worker? “?”

开始 N 记录

SelectTop ?不行 * From

——————————-

N M 记录 主索引 ID)

SelectTop ? M N? * From 其中 ? ID? in SelectTop ?M ID? 来自 )? Orderby ? ID? Desc

———————————-

N 结束记录

SelectTop ?不行 * From Orderby ? ID? Desc

例如 1 :一个表有10,000多个记录,该表的第一个字段 ? RecID? 是一个自增字段, 写一个 SQL 语句, 查找表Section 31 到部分 40 记录。

selecttop 10 ? ? 来自 ?一个? 其中 吗? ? 不是 in selecttop 30 ?recid? 来自 ?A)

分析:如果编写此代码,将会导致某些问题,如果 recid 表中有逻辑索引。

selecttop 10 ? ? 来自 ?一个? 其中 …… 从索引中查找,然后以下 选择? 顶部 30 ? ? 来自 在数据表中搜索,以使索引中的顺序可能与数据表不一致,从而导致查询的不是原始数据。

解决方案

1 使用 命令? byselecttop 30 ? ? 来自 ?一个? orderby 米饭? 如果该字段不是”增长”,则会出现问题

2 向该子查询中添加条件: selecttop 30 ? ? 来自 ?一个? 其中 ? recid \ gt;- 1

示例 2 :查询表中的最后一条记录,我不知道该表有多少数据 和表格结构。

set @ s = “从T中选择前1 *,而pid不在(选择顶部?” + str @ count 1 )? + “?pid?from?T)”

print @ s exec ? Sp_executesql @ s

select ?名称? 来自 ? Sysobjects? 其中 ? xtype = ” u” ?状态 \ gt; = 0

select ?名称? 来自 ? Syscolumns? 其中 ? id = object_id 表名

select ?名称? 来自 ? Syscolumns? 其中 ? ID? in 选择 ?id? 来自 ?sysobjects? 其中 ?类型? = ” u” ?名称? = 表名

两种方法具有相同的效果

select * 来自 ?sysobjects a,syscomments b? 其中 ?a。id? = ?b.id? ?B. 文字 “% 表名 %”

select ?名称? 存储过程名称来自 ? sysobjects? 其中 ? xtype = ” P”

select * from ? Master..sysdatabases D? 其中 ? sid? notin 选择?sid? ;”>?master..syslogins? 其中 ?名称 = ” sa”

select ? Dbid,名字? AS DB_NAME 来自 ?主..sys数据库? 其中 ? sid? \ lt; \ gt; 0x01

select ?列名,数据类型? 来自 ? Information_schema.columns

其中 ?表名? = 表名

创建链接服务器

exec ? Sp_addlinkedserver? ” ITSV?” , “” , ” SQLOLEDB?” , 远程服务器名称或 ip 地址 ?”

exec ? Sp_addlinkedsrvlogin ” ITSV?” , ” false?” null ,? 用户名字 ?” , 密码 ?”

查询示例

select * from ? ITSV。 数据库名称 。 dbo。 表名

导入示例

select * 插入来自 ? ITSV。 数据库名称 。 dbo。 表名

不再使用链接的服务器时删除

exec ? Sp_dropserver ” ITSV?” , ” droplogins?”

(openrowset/openquery/opendatasource)?

查询示例

select * > openrowset (? ” SQLOLEDB?” , ” sql 服务器名称 ?”/span> ; 用户名 ?” ; 密码 ?” 数据库名称 。Dbo。 表名 )?

生成本地表

select * 插入 from openrowset (? ” SQLOLEDB?” , ” sql 服务器名 ?” ; 用户名 ?” ; 密码 ?” 数据库名称 。dbo。 表名 )?

将本地表导入到远程表

插入 openrowset (? ” SQLOLEDB?” , ” sql 服务器名称 ?” ; 用户名 ?” ; 密码 ?” 数据库名称 。dbo。 表名 )?

select * 来自本地表

更新本地表

update ? B?

set A = a。 是吗?

from openrowset (? ” SQLOLEDB?” , ” sql 服务器名称 ?” ; 用户名 ?” ; 密码 ?” 数据库名称 。dbo。 表名 as ?a? 内部 join 本地表 ?b?

on ? A.column1 = b.column1?

首先创建连接以创建链接服务器

exec ? Sp_addlinkedserver? ” ITSV?” , “” , ” SQLOLEDB?” , 远程服务器名称或 ip 地址 ?”

查询

select *

FROM openquery (ITSV, ” SELECT *?FROM? 数据库 。dbo。 表名 ?” )?

将本地表导入到远程表

插入 openquery (ITSV, ” SELECT *?FROM? 数据库 。dbo。 表名 ?” )?

select * 来自本地表

更新本地表

update ? B?

set B = a。 B?

FROM openquery (ITSV, ” SELECT * FROM? 数据库 。dbo。 表名 ?” )? as

内部 加入本地表 ? B? on ?一个。 A = b。 是吗?

SELECT *

FROM opendatasource (? ” SQLOLEDB? ” “数据源= ip/ServerName;用户ID = 登录名 ;密码= 密码 ?” ?)。 test.dbo.roy_ta?

将本地表导入到远程表

insertopendatasource (? ” SQLOLEDB?” “数据源= ip/ServerName;用户ID = 登录名 ;密码= 密码 ?” )。 数据库 。 dbo。 表名

select * 来自本地表

字符串函数 用于长度和分析 datalength(Char_expr) ,返回的字符串包含字符数 ,但不包括以下内容空格

取子字符串,字符串的下标来自 1 开始 是起始位置, 长度 是字符串的长度,实际的 len(表达式) 获取其长度

返回字符串的右侧 int_expr 字符,也已使用 左侧 相反的

如果 check_expression 如果为空,则返回 replace_value 值不为空,它返回 check_expression 字符操作类

示例: EXEC ? Sp_addtype生日, datetime , ” NULL”

返回的结果不包括相关接受 ? Transact SQL? 受语句影响的行数。如果存储过程中包含的某些语句未返回太多实际数据,则此设置可以显着提高性能,因为它大大减少了网络流量。 SET ?没有帐号? 设置是在执行或运行时设置的,而不是在分析过程中设置的。 SET ? NOCOUNT 对于 ON 否则,不返回计数(表示受影响) ?事务 SQL? span> 受语句影响的行数)。

SET ?没有帐号? OFF 时,返回计数常识 in SQL span> 在查询中: 来自 可以跟随多少表或视图: 256 SQL 出现在语句中? Orderby 查询时,进行排序首先,然后输入 SQL 字段的最大容量为 8000 span> ,并且对于 nvarchar ( 4000 ), 因为 nvarchar Unicode 代码。

未经允许不得转载:数据库同步软件|Mysql数据同步软件|sqlserver数据库同步工具|异构同步 » MSSQL语句大全

分享到:更多 ()

syncnavigator 8.6.2 企业版

联系我们联系我们