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‘

SQLServer语句 汇总

时间: 08-19

SQLServer语句 汇总的相关文章

SQL语句汇总(终篇)—— 表联接与联接查询

既然是最后一篇那就不能只列出些干枯的标准语句,更何况表联接也是SQL中较难的部分,所以此次搭配题目来详细阐述表联接. 上一篇博文说到相关子查询效率低下,那我们怎么能将不同表的信息一起查询出来呢?这就需要用到表联接. 和之前的UNION组合查询不同,UNION是将不同的表组合起来,也就是纵向联接,说白了就是竖着拼起来. 而表联接是通过笛卡尔乘积将表进行横向联接,所谓的通过笛卡尔乘积简单说就是两表的行依次相联再相加.要想更详细的理解可以百度下,毕竟本文主要是汇总SQL语句. 现在有如下两张表: 这是

SQL语句汇总(二)——数据修改、数据查询

首先创建一张表如下,创建表的方法在上篇介绍过了,这里就不再赘述. 添加新数据: INSERT INTO <表名> (<列名列表>) VALUES (<值列表>)  如: INSERT INTO t_student (student_id,student_name,student_age,student_sex) VALUES (1,'大毛',18,'男'); 其中列名可以省略,省略之后要求插入的值必须与列一一对应: INSERT INTO t_student VALUE

SQL语句汇总(一)——数据库与表的操作以及创建约束

首先,非常感谢大家对上篇博文的支持,真是让本菜受宠若惊,同时对拖了这么久才出了此篇表示抱歉. 前言:此文旨在汇总从建立数据库到联接查询等绝大部分SQL语句.SQL语句虽不能说很多,但稍有时间不写就容易出错.博主希望通过此文来战胜自己的健忘,如果大家认可也可以保留起来. "SQL"是 "Structured Query Language" 即“结构化查询语言”的简称,它是用来管理关系型数据库的. 其包括: –数据定义语言(DDL) –数据查询语言(DQL) –数据操作

SQLServer---使用Case When解决SQLServer数据分类汇总问题

SQLServer---使用Case When解决SQLServer数据分类汇总问题 近半年一直在负责某市的人事档案管理系统的后期开发和维护工作,之前客户给了一张如下图的表格,需要我去汇总数据,然后填充到表格中. 具体的需求:统计出每一个工作人员在某一段时间内分别打印了多少张不同的信函(或报表). 最初的想法 1.  查出使用该系统的工作人员 select realName as '姓名' from T_User where userID in(select distinct userID fr

SqlServer 查询表、表说明、关联表、字段说明,语句汇总

----查询所有的表 SELECT * FROM SYSOBJECTS WHERE TYPE='U' ----根据表名查询所有的字段名及其注释 SELECT A.NAME,B.VALUE FROM SYSCOLUMNS A LEFT JOIN SYS.EXTENDED_PROPERTIES B ON A.ID=B.MAJOR_ID AND A.COLID=B.MINOR_ID INNER JOIN SYSOBJECTS C ON A.ID=C.ID AND UPPER(C.NAME)='tb_n

7 mysql常用语句汇总

mysqld 常规MySQL服务器mysqld-opt 优化mysql服务器,提供一些功能可以挖掘更好的功能mysqld-max 与mysqld一样,但可以支持更新,更具实验性质的功能(更不稳定) ++安装mysql参见自带的INSTALL-SOURCE文件$ ./configure ?prefix=/app/mysql-5.0.51a ?with-charset=utf8 ?with-extra-charsets=utf8,gb2312,utf8 ++启动/关闭mysql$ path/mysq

基本Sql语句汇总

关于Sql语句的学习,选择的DBMS为SQL Server,Sql语句随着工作中的应用不断补充,不具备系统性,为个人笔记汇总,暂时用到的数据表如下: Student表中的CityCCode对应于City表中的Code字段,为城市的英文字母缩写: 1,INSERT TO 插入语句 INSERT TO语句用于向表格中插入新的记录,如下: 1 insert into City(Code,CityCName) values('BJ','北京'); 2 insert into Student(CityCo

[Sqlite] 移动嵌入式数据库Sqlite的日常SQL操作语句汇总

序言:     嵌入式数据库Sqlite的基本sql使用汇总,使用测试起来,与关系型数据库mysql在语法上有很多的相似之处,先准备测试数据: CREATE TABLE COMPANY(ID INT NOT NULL, NAME VARCHAR(20),AGE INT,ADDRESS VARCHAR(20),SALARY DECIMAL(7,2)); INSERT INTO "COMPANY" VALUES(1,'Paul',32,'California',20000); INSERT

金典 SQL笔记 SQL语句汇总

SELECT * FROM (SELECT ROW_NUMBER() OVER ( ORDER BY id) AS rowN,FNumber, FName,FSalary ,Fage FROM dbo. T_Employee) AS a WHERE a. rowN >=3 AND a. rowN <=5 SELECT distinct CREATEDate,state FROM dbo .TwodimensionalcodeHistory SELECT * FROM Twodimensiona