SQLServer语句 汇总

SQL Server语句
序号 功能 语句
1 创建数据库(创建之前判断该数据库是否存在) if exists (select * from sysdatabases where name='databaseName')
drop database databaseName
go
Create DATABASE databasename
2 删除数据库 drop database databasename
3 备份数据库 USE master
EXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1.dat'
BACKUP DATABASE pubs TO testBack
4 创建新表 create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..)
5 根据已有表创建新表 1、use 原数据库名  
go
select * into 目的数据库名.dbo.目的表名 from 原表名(使用旧表创建新表)
2、create table tab_new as select col1,col2… from tab_old definition only
6 创建序列 create sequence SIMON_SEQUENCE
minvalue 1 -- 最小值
maxvalue 999999999999999999999999999 -- 最大值
start with 1 -- 开始值
increment by 1 -- 每次加几
cache 20;
7 删除新表 drop table tabname
8 增加一个列 Alter table tabname add colname coltype
alter table tablename add column_b int identity(1,1)
9 删除一个列 Alter table tabname drop column colname
10 修改一个列 ALTER TABLE 表名 ALTER COLUMN 字段名 varchar(30) NOT NULL
DB2中列加上后数据类型也不能改变,唯一能改变的是增加varchar类型的长度。
11 添加主键 Alter table tabname add primary key(col)
12 删除主键 Alter table tabname drop primary key(col)
13 创建索引 create [unique] index idxname on tabname(col…。)
14 删除索引 drop index idxname on tabname
15 创建视图 create view viewname as select statement
16 删除视图 drop view viewname
17 选择数据记录 sql="select * from 数据表 where 字段名=字段值 order by 字段名 [desc]"
sql="select * from 数据表 where 字段名 like '%字段值%' order by 字段名 [desc]"
sql="select top 10 * from 数据表 where 字段名=字段值 order by 字段名 [desc]"
sql="select top 10 * from 数据表 order by 字段名 [desc]"
sql="select * from 数据表 where 字段名 in ('值1','值2','值3')"
sql="select * from 数据表 where 字段名 between 值1 and 值2"
注:like中"%"匹配0个或多个字符;like中"_"匹配一个字符
18 更新数据记录 sql="update 数据表 set 字段名=字段值 where 条件表达式"
sql="update 数据表 set 字段1=值1,字段2=值2 …… 字段n=值n where 条件表达式"
19 删除数据记录 sql="delete from 数据表 where 条件表达式"
sql="delete from 数据表" (将数据表所有记录删除)
20 添加数据记录 sql="insert into 数据表 (字段1,字段2,字段3 …) values (值1,值2,值3 …)"
sql="insert into 目标数据表 select * from 源数据表" 
(把源数据表的记录添加到目标数据表)
21 数据记录统计函数 AVG(字段名) 得出一个表格栏平均值
COUNT(*;字段名) 对数据行数的统计或对某一栏有值的数据行数统计
MAX(字段名) 取得一个表格栏最大的值
MIN(字段名) 取得一个表格栏最小的值
SUM(字段名) 把数据栏的值相加
引用以上函数的方法:
sql="select sum(字段名) as 别名 from 数据表 where 条件表达式"
set rs=conn.excute(sql)
用 rs("别名") 获取统计的值,其它函数运用同上。
22 查询去除重复值 select distinct * from table1
23 查询数据库中含有同一这字段的表 select name from sysobjects 
where xtype = 'u' and id in(select id from syscolumns where name = 's3')
24 只复制表结构 select * into a from b where 1<>1
select top 0 * into b from a
25 复制内容 set identity_insert aa ON
insert into aa(Customer_ID, ID_Type, ID_Number) 
select Customer_ID, ID_Type, ID_Number from TCustomer;
set identity_insert aa OFF
26 UNION 运算符(使用运算词的几个查询结果行必须是一致的) UNION 运算符通过组合其他两个结果表(例如TABLE1 和TABLE2)并消去表中任何重复行而派生出一个结果表。当 ALL 随UNION 一起使用时(即UNION ALL),不消除重复行。两种情况下,派生表的每一行不是来自TABLE1 就是来自TABLE2。
27 EXCEPT 运算符 EXCEPT 运算符通过包括所有在TABLE1 中但不在TABLE2 中的行并消除所有重复行而派生出一个结果表。当ALL 随EXCEPT 一起使用时(EXCEPT ALL),不消除重复行。
28 INTERSECT 运算符 INTERSECT 运算符通过只包括TABLE1 和TABLE2 中都有的行并消除所有重复行而派生出一个结果表。当ALL 随INTERSECT 一起使用时(INTERSECT ALL),不消除重复行。
29 left (outer) join 左外连接(左连接):结果集既包括连接表的匹配行,也包括左连接表的所有行。
30 right (outer) join 右外连接(右连接):结果集既包括连接表的匹配连接行,也包括右连接表的所有行。
31 full/cross (outer) join 全外连接:不仅包括符号连接表的匹配行,还包括两个连接表中的所有记录。
32 判断临时表是否存在 if object_id('tempdb..#临时表名') isnot null
drop table#临时表名
33 判断列是否自增列 if columnproperty(object_id('table'),'col','IsIdentity')=1
print '自增列'
else
print '不是自增列'
SELECT* FROM sys.columns WHERE object_id=OBJECT_ID('表名')
AND is_identity=1
34 判断表中是否存在索引 if exists(select * from sysindexes  
          whereid=object_id('表名') and name='索引名')
print '存在'  else  print '不存在
35 between between为查询某字段的指定范围,限制查询数据范围时包括了边界值
not between不包括边界值
36 删除主表没有的信息 两张关联表delete from table1 
where not exists ( select * from table2 where table1.field1=table2.field1)
37 随机取出10条数据 select top 10 * from tablename order by newid()
38 初始化表 TRUNCATE TABLE table1
39 1=1,1=2的使用 where 1=1”是表示选择全部;“where 1=2”全部不选
40 收缩数据库 重建索引:
DBCC REINDEX
DBCC INDEXDEFRAG
收缩数据和日志:
DBCC SHRINKDB
DBCC SHRINKFILE
41 压缩数据库 dbcc shrinkdatabase(dbname)
42 转移数据库给新用户以已存在用户权限 exec sp_change_users_login 'update_one','newname','oldname'
go
43 检查备份集 RESTORE VERIFYONLY from disk='E:\dvbbs.bak'
44 修复数据库 Alter DATABASE [dvbbs] SET SINGLE_USER
GO
DBCC CHECKDB('dvbbs',repair_allow_data_loss) WITH TABLOCK
GO
Alter DATABASE [dvbbs] SET MULTI_USER
GO
45 分组:Group by 一张表,一旦分组 完成后,查询后只能得到组相关的信息。
组相关的信息:(统计信息) count,sum,max,min,avg 分组的标准)
在SQLServer中分组时:不能以text,ntext,image类型的字段作为分组依据
在selecte统计函数中的字段,不能和普通的字段放在一起;
46 修改数据库名称 sp_renamedb 'old_name', 'new_name'
47 在线视图查询 select * from (SELECT a,b,c FROM a) T where t.a > 1;
48 更改某个表 exec sp_changeobjectowner 'tablename','dbo'
49 按姓氏笔画排序 Select * From TableName Order By CustomerName Collate Chinese_PRC_Stroke_ci_as //从少到多
50 数据库加密 select encrypt('原始密码')
select pwdencrypt('原始密码')
select pwdcompare('原始密码','加密后密码') = 1--相同;否则不相同
select pwdencrypt('原始密码')
select pwdcompare('原始密码','加密后密码') = 1--相同;否则不相同
51 查看硬盘分区 EXEC master..xp_fixeddrives
52 比较A,B表是否相等 if (select checksum_agg(binary_checksum(*)) from A)
=(select checksum_agg(binary_checksum(*)) from B)
print '相等'
else  print '不相等'
53 杀掉所有的事件探察器进程 DECLARE hcforeach CURSOR GLOBAL FOR SELECT 'kill '+RTRIM(spid) FROM master.dbo.sysprocesses
WHERE program_name IN('SQL profiler',N'SQL 事件探查器')
EXEC sp_msforeach_worker '?'
54 N到M条记录(要有主索引ID) Select Top M-N * From 表 Where ID in (Select Top M ID From 表) Order by ID Desc
55 查看与某一个表相关的视图、存储过程、函数 select a.* from sysobjects a, syscomments b where a.id = b.id and b.text like '%表名%'
56 不同服务器数据库之间的数据操作 //--创建链接服务器
exec sp_addlinkedserver 'ITSV ', ' ', 'SQLOLEDB ', '远程服务器名或ip地址 '
exec sp_addlinkedsrvlogin 'ITSV ', 'false ',null, '用户名 ', '密码 '
--查询示例
select * from ITSV.数据库名.dbo.表名
--导入示例
select * into 表 from ITSV.数据库名.dbo.表名
--以后不再使用时删除链接服务器
exec sp_dropserver 'ITSV ', 'droplogins '
57 连接远程/局域网数据(openrowset) //--1、openrowset
--查询示例
select * from openrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码 ',数据库名.dbo.表名)
--生成本地表
select * into 表 from openrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码 ',数据库名.dbo.表名)
--把本地表导入远程表
insert openrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码 ',数据库名.dbo.表名)
select *from 本地表
--更新本地表
update b set b.列A=a.列A
from openrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码 ',数据库名.dbo.表名)as a inner join 本地表 b  on a.column1=b.column1
58 连接远程/局域网数据(openquery) //--openquery用法需要创建一个连接
--首先创建一个连接创建链接服务器
exec sp_addlinkedserver 'ITSV ', ' ', 'SQLOLEDB ', '远程服务器名或ip地址 '
--查询
select * FROM openquery(ITSV, 'SELECT * FROM 数据库.dbo.表名 ')
--把本地表导入远程表
insert openquery(ITSV, 'SELECT * FROM 数据库.dbo.表名 ') select * from 本地表
--更新本地表
update b set b.列B=a.列B
FROM openquery(ITSV, 'SELECT * FROM 数据库.dbo.表名 ') as a
inner join 本地表 b on a.列A=b.列A
59 连接远程/局域网数据(opendatasource) //--3、opendatasource/openrowset
SELECT * FROM opendatasource( 'SQLOLEDB ', 'Data Source=ip/ServerName;User ID=登陆名;Password=密码 ' ).test.dbo.roy_ta
--把本地表导入远程表
insert opendatasource( 'SQLOLEDB ', 'Data Source=ip/ServerName;User ID=登陆名;Password=密码 ').数据库.dbo.表名  select * from 本地表
60 自定义数据类型 EXEC sp_addtype birthday, datetime, 'NULL'
上一篇:python 接口自动化测试(五)其他-认证&代理&超时配置


下一篇:怎么用XMind辅助电商工作