常用sql


--查询数据库连接数
SELECT * FROM master.dbo.sysprocesses WHERE dbid IN
(
SELECT dbid FROM master.dbo.sysdatabases
WHERE NAME=\'数据库表名\'
)

--查询锁表
select request_session_id spid,OBJECT_NAME(resource_associated_entity_id) tableName 
from sys.dm_tran_locks where resource_type=\'OBJECT\'
ORDER BY request_session_id

--杀掉进程
declare @spid int 
Set @spid = 182 --锁表进程
declare @sql varchar(1000)
set @sql=\'kill \'+cast(@spid as varchar)
exec(@sql)

  

--远程查询
--开户外围

exec sp_configure \'show advanced options\',1
reconfigure
exec sp_configure \'Ad Hoc Distributed Queries\',1
reconfigure

-------------------------------
select * from openrowset( \'SQLOLEDB\', \'服务器ip\'; \'数据库登录账号\'; \'数据库登录密码\',数据库名.dbo.表名)
-------------------------------

--关闭外围

exec sp_configure \'show advanced options\',0
reconfigure
exec sp_configure \'Ad Hoc Distributed Queries\',0
reconfigure

  


--压缩备份

Declare @strDataBaseName varchar(50)

Declare @FullFileName varchar(50) 

Set @strDataBaseName=\’data\’

Set @FullFileName=\’d:\db_backup\data20170222.bak\’
BACKUP DATABASE @strDataBaseName TO DISK = @FullFileName WITH INIT, STATS = 20





--
sql 事务 BEGIN TRAN 事物名 IF(@@ERROR<>0)BEGIN ROLLBACK TRAN 事物名;RETURN;END COMMIT TRAN 事物名 --数据库清缓存 DBCC DROPCLEANBUFFERS --忽略自增列 按照sql语句的id新增 SET IDENTITY_INSERT [dbo].[EduMenuFunction] ON --插入语句 SET IDENTITY_INSERT [dbo].[EduMenuFunction] OFF --修改语句联表修改 UPDATE S_GB_StudentBasicInfo SET BH =ci.BH from S_GB_StudentBasicInfo sbi WITH(NOLOCK),C_GB_ClassInfo ci WITH(NOLOCK) where sbi.BJID=CONVERT(nvarchar(20),ci.ID) UPDATE A SET A.c2 =B.c3 from A inner join B on A.c1=B.c1 --创建索引 CREATE INDEX DataReportIndex ON S_GB_StudentBasicInfo_DataReport(SFZJH (ASC), XB (ASC), CSRQ (ASC), DataYear (ASC), STATUS (ASC)) --修改字段默认值 alter table 表名 drop constraint 约束名字 ------说明:删除表的字段的原有约束 alter table 表名 add constraint 约束名字 DEFAULT 默认值 for 字段名称 -------说明:添加一个表的字段的约束并指定默认值 --修改字段名: alter table 表名 rename column A to B --修改字段类型: alter table 表名 alter column UnitPrice decimal(18, 4) not null --增加字段: alter table 表名 ADD 字段 类型 NOT NULL Default 0 --添加字段 [CardRecord][Birthday] IF NOT EXISTS( SELECT * from syscolumns where [id]=object_id(\'CardRecord\') AND [name]=\'Birthday\' ) BEGIN Alter Table CardRecord Add Birthday DATETIME NOT NULL DEFAULT(\'1900-01-01 00:00:00\') ; EXEC sp_addextendedproperty \'MS_Description\', \'出生日期\', \'user\', dbo, \'table\',CardRecord, \'column\', Birthday; END --清除表数据,自增列从1开始 truncate table 表名; --查询所有的子节点 with cte as ( select * from Base_Company where Id = \'E7F5395E-6D11-4490-B3AD-513574268CF6\' --查询节点 union all select a.* from Base_Company a join cte b on a.ParentId = b.id where a.id is not null ) select * from cte --创建数据库 USE master create database AdayMS on primary -- 默认就属于primary文件组,可省略 ( /*--数据文件的具体描述--*/ name=\'AdayMS_data\', -- 主数据文件的逻辑名称 filename=\'E:\数据库\jaday\AdayMS\AdayMS_data.mdf\', -- 主数据文件的物理名称 size=5mb, --主数据文件的初始大小 maxsize=100mb, -- 主数据文件增长的最大值 filegrowth=15%--主数据文件的增长率 ) log on ( /*--日志文件的具体描述,各参数含义同上--*/ name=\'AdayMS_log\', filename=\'E:\数据库\jaday\AdayMS\AdayMS_log.ldf\', size=2mb, filegrowth=1mb ) --根据时间筛选 datediff(dd,时间字段,当前时间)>=0 --获取新增数据的标识列 insert语句;select @@IDENTITY --获取数据库表和视图中的所有字段 SELECT 列序号 = A.COLORDER, 列名 = A.NAME, --主键 = CASE WHEN EXISTS(SELECT 1 FROM SYSOBJECTS WHERE XTYPE= \'PK \' AND PARENT_OBJ=A.ID AND NAME IN ( --SELECT NAME FROM SYSINDEXES WHERE INDID IN( --SELECT INDID FROM SYSINDEXKEYS WHERE ID = A.ID AND COLID=A.COLID))) THEN \'√ \' ELSE \' \' END, 类型 = B.NAME, --允许空 = CASE WHEN A.ISNULLABLE=1 THEN \'√ \'ELSE \' \' END, 列说明 = ISNULL(G.[VALUE], \' \') FROM SYSCOLUMNS A LEFT JOIN SYSTYPES B ON A.XUSERTYPE=B.XUSERTYPE INNER JOIN SYSOBJECTS D ON A.ID=D.ID AND D.XTYPE= \'U \' AND D.NAME <> \'DTPROPERTIES \' LEFT JOIN SYSCOMMENTS E ON A.CDEFAULT=E.ID LEFT JOIN sys.extended_properties G ON A.ID=G.major_id AND A.COLID=G.minor_id LEFT JOIN sys.extended_properties F ON D.ID=F.major_id AND F.minor_id=0 WHERE (D.name=\'@TableName\' ) ORDER BY A.ID,A.COLORDER --视图 SELECT 列序号 = A.COLORDER, 列名 = A.NAME, --主键 = CASE WHEN EXISTS(SELECT 1 FROM SYSOBJECTS WHERE XTYPE= \'PK \' AND PARENT_OBJ=A.ID AND NAME IN ( --SELECT NAME FROM SYSINDEXES WHERE INDID IN( --SELECT INDID FROM SYSINDEXKEYS WHERE ID = A.ID AND COLID=A.COLID))) THEN \'√ \' ELSE \' \' END, 类型 = B.NAME, --允许空 = CASE WHEN A.ISNULLABLE=1 THEN \'√ \'ELSE \' \' END, 列说明 = ISNULL(G.[VALUE], \' \') FROM SYSCOLUMNS A LEFT JOIN SYSTYPES B ON A.XUSERTYPE=B.XUSERTYPE INNER JOIN SYSOBJECTS D ON A.ID=D.ID AND d.xtype=\'V\' AND D.NAME <> \'dtproperties \' LEFT JOIN SYSCOMMENTS E ON A.CDEFAULT=E.ID LEFT JOIN sys.extended_properties G ON A.ID=G.major_id AND A.COLID=G.minor_id LEFT JOIN sys.extended_properties F ON D.ID=F.major_id AND F.minor_id=0 WHERE (D.name=\'@ViewName\' ) GROUP BY A.COLORDER ,A.NAME ,B.NAME ,ISNULL(G.[VALUE], \' \') ,A.ID ORDER BY A.ID,A.COLORDER --触发器 ALTER TRIGGER [TRG_QBItem] ---------项触发器------------------- ON [dbo].[QBItem] FOR delete AS delete from QBOptions where ItemId in (select ItemId from deleted) --计算执行sql语句的时间 --首先 在各个sql 执行语句前加: declare @time datetime set @time=getdate() --然后在sql执行语句后加上: select [语句执行花费时间(毫秒)]=datediff(ms,@time,getdate())

 1,只是插入简单的有限行数据时用:

     insert 要插入的表名(列名1,列名2,….)

     select \’列名1需要的数据\’,\’列名2需要的数据\’,… union

      select \’列名1需要的数据\’,\’列名2需要的数据\’,… union

      select \’列名1需要的数据\’,\’列名2需要的数据\’,…

     … …
例如:

insert into MyTable2
(学号,姓名,性别,出生日期,学院编码,成绩)
select \’05001001\’,\’张三玉\’,\’女\’,\’1987-10-5\’,\’01\’,88 union
select \’05001002\’,\’李斯\’,\’男\’,\’1986-4-18\’,\’01\’,76 union
select \’04013029\’,\’王武\’,\’男\’,\’1986-5-18\’,\’03\’,94 union
select \’04013030\’,\’王小琳\’,\’女\’,\’1985-11-6\’,\’03\’,37 union
select \’04013031\’,\’赵六方\’,\’男\’,\’1987-12-28\’,\’03\’,55 union
select \’03115002\’,\’欧阳陈其\’,\’男\’,\’1986-1-1\’,\’02\’,92

2,当要从一个表中取出数据插入到该新表(两个表的表结构不同)时用:

     insert 新表名(列名1,列名2,….)

     select 旧表的列名1 as 列名1,旧表的列名2 as 列名2 from 旧表表名

3,只是复制表结构时用:

      select * into table2(新表) from table1(原表) where 1<>1

 4,复制表结构的同时并把数据复制时用:

      select * into table2(新表) from table1(原表)

  远程sql插入
//先打开远程连接
exec sp_configure \’show advanced options\’,1
go
reconfigure
go
exec sp_configure \’Ad Hoc Distributed Queries\’,1
go
reconfigure
插入语句
SELECT * INTO 新表 FROM
opendatasource(\’SQLOLEDB\’,\’server=.;
uid=sa;pwd=;database=数据库名;\’)
.数据库名.旧表
 
–建立服务器间的连接  参数说明: @server为服务器写个名称以便在下面使用;SQLOLEDB无需改动;@datasrc是远程数据库所在的IP地址
EXEC sp_addlinkedserver @server=\’ServerName\’,@provider=\’SQLOLEDB\’,@srvproduct=\’\’,@datasrc=\’192.168.85.251\’
–登陆服务器  参数说明:此处的@rmtsrvname取名要与上面的@server一样;@rmtuser登陆服务器的用户名;@rmtpassword登陆服务器的密码
EXEC dbo.sp_addlinkedsrvlogin @rmtsrvname = N\’ServerName\’,@useself = N\’False\’,@locallogin = NULL,@rmtuser = N\’sa\’,@rmtpassword = N\’123\’
/*———–简写方式——————EXEC dbo.sp_addlinkedserver \’ServerName\’,\’\’,\’SQLOLEDB\’,\’192.168.85.251\’EXEC
sp_addlinkedsrvlogin  \’ServerName\’,\’false\’,NULL,\’sa\’,\’123\’————————————*/
Go/*————数据操作区—————-*/select * from [ServerName].[库名称].[dbo].[表名称]/*————–End———————*/GO
–关闭服务器连接
EXEC sp_droplinkedsrvlogin \’ServerName\’ , NULL
EXEC sp_dropserver \’ServerName\’

 

–删除表字段和约束

declare @name varchar(50)
select @name =b.name from sysobjects b join syscolumns a on b.id = a.cdefault
where a.id = object_id(\’ES_honor\’)
and a.name =\’StudentId\’
exec(\’alter table ES_honor drop constraint \’ + @name)

ALTER TABLE dbo.ES_Honor
DROP COLUMN StudentId

 

 

1)禁止所有表约束的SQL
select \’alter table \’+name+\’ nocheck constraint all\’ from sysobjects where type=\’U\’

2)删除所有表数据的SQL
select \’TRUNCATE TABLE \’+name from sysobjects where type=\’U\’

3)恢复所有表约束的SQL
select \’alter table \’+name+\’ check constraint all\’ from sysobjects where type=\’U\’

4)删除某字段的约束
declare @name varchar(100)
–DF为约束名称前缀
select @name=b.name from syscolumns a,sysobjects b where a.id=object_id(\’表名\’) and b.id=a.cdefault and a.name=\’字段名\’ and b.name like \’DF%\’
–删除约束
alter table 表名 drop constraint @name
–为字段添加新默认值和约束
ALTER TABLE 表名 ADD CONSTRAINT @name  DEFAULT (0) FOR [字段名]

 

–删除约束
ALTER TABLE tablename
Drop CONSTRAINT 约束名
–修改表中已经存在的列的属性(不包括约束,但可以为主键或递增或唯一)
ALTER TABLE tablename 
alter column 列名 int not null
–添加列的约束
ALTER TABLE tablename
ADD CONSTRAINT DF_tablename_列名 DEFAULT(0) FOR 列名
–添加范围约束
alter table  tablename  add  check(性别 in (\’M\’,\’F\’))

版权声明:本文为jiangqw原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/jaday/p/5395938.html