--判断数据库系统中是否已存在该存储过程 方法1:
IF EXISTS(SELECT name FROM sys.objects WHERE type = 'P' AND name = 'MyTestProc')
DROP PROC MyTestProc
GO
CREATE PROC MyTestProc
AS
SELECT * FROM MyTestDB.dbo.Students
GO
--判断数据库系统中是否已存在该存储过程 方法2:
IF OBJECT_ID('MyTestProc', 'P') IS NOT NULL
DROP PROC MyTestProc
GO
CREATE PROC MyTestProc
AS
SELECT * FROM MyTestDB.dbo.Students
GO
--Sql Server 查看所有存储过程,视图,触发器的位置及内容
--Sql Server 查看所有存储过程,视图,触发器的位置及内容
SELECT a.name,a.[type],b.[definition] , *
FROM sys.all_objects a, sys.sql_modules b
WHERE a.is_ms_shipped=0 and a.object_id = b.object_id and a.[type] in ('P','V','AF','TR')
AND a.name LIKE '%CPS_BOQChangeUpdate%'
ORDER BY a.[name] ASC
--查询当前数据库系统中,含指定文本的存储过程名
SELECT DISTINCT OBJECT_NAME(ID)
FROM syscomments WHERE TEXT LIKE '%指定文本%'
--判断一个数是否为空
SELECT * FROM TB1 WHERE NAME IS NULL
SELECT * FROM TB1 WHERE ISNULL(NAME, 0) = 0
--使用链接服务器 DBLINK
--查看当前链接情况:
SELECT * FROM sys.servers;
--sp_helpserver 显示可用的服务器
EXEC sp_helpserver
--sp_addlinkedserver 新增链接服务器
EXEC sp_addlinkedserver @server = 'LinkTest', @srvproduct= '', @provider = 'SQLOLEDB', @datasrc = '127.0.0.1'
--sp_addlinkedsrvlogin 增加用户登录链接服务器
EXEC sp_addlinkedsrvlogin @rmtsrvname = 'LinkTest', @useself = 'False', @locallogin = 'sa', @rmtuser = 'sa', @rmtpassword = '123456'
--使用链接服务器进行查询
SELECT * FROM LinkTest.数据库名.dbo.数据表名
--sp_droplinkedsrvlogin 删除链接服务器的某个登录账户
EXEC sp_droplinkedsrvlogin @rmtsrvname = 'LinkTest', @locallogin = 'sa'
--sp_dropserver 删除已经存在的某个链接服务器
EXEC sp_dropserver @server = 'LinkTest'
--触发器相关操作
--查看数据库中所有触发器
SELECT * FROM sysobjects WHERE xtype = 'TR'
--sp_helptext 表格形式显示指定触发器内容
EXEC sp_helptext @objname = 触发器名称
--sp_helptrigger 查看指定表格下的所有触发器和触发器属性
EXEC sp_helptrigger @tabname = 表名
--启用/禁用触发器
ALTER TABLE 表名 ENABLE TRIGGER 触发器名称
ALTER TABLE 表名 DISABLE TRIGGER 触发器名称
--修改触发器
ALTER TRIGGER 触发器名称 ON 表名 ...
--删除触发器
DROP TRIGGER 触发器名称
--日期时间函数相关
--SQL SERVER 日期时间相关函数
SELECT GETDATE() 东八区时间, GETUTCDATE() 标准时间, YEAR(GETDATE()) 年, MONTH(GETDATE()) 月, DAY(GETDATE()) 日
SELECT DATENAME(HOUR, GETDATE()) 时, DATENAME(MINUTE, GETDATE()) 分, DATENAME(SECOND, GETDATE()) 秒
SELECT DATEPART(HOUR, GETDATE()) 时, DATEPART(MINUTE, GETDATE()) 分, DATEPART(SECOND, GETDATE()) 秒
SELECT DATEADD(DAY, 5, GETDATE()) 五天后, DATEADD(HOUR, 2, GETDATE()) 两小时后
--SQL SERVER系统函数
SELECT COL_LENGTH('MyTestDB.dbo.Students', 'StuName')
SELECT COL_NAME(OBJECT_ID('MyTestDB.dbo.Students'), 2)
SELECT DATALENGTH('IRVING')
SELECT DB_ID('Master'), DB_ID('MyTestDB'), GETANSINULL('MyTestDB')
SELECT HOST_ID(), HOST_NAME(), USER_ID(), USER_NAME()
SELECT OBJECT_ID('MyTestDB.dbo.Students'), OBJECT_NAME(245575913)
SELECT SUSER_ID('sa'), USER_ID(), SUSER_NAME(), SUSER_SNAME(0X1)
SELECT OBJECT_NAME(OBJECT_ID('MyTestDB.dbo.Students'), DB_ID('MyTestDB')), OBJECT_ID('MyTestDB.dbo.Students')
--索引相关
--创建索引
CREATE NONCLUSTERED INDEX IndexTest
ON dbo.Player(PlayId DESC, PlayName ASC)
WITH
FILLFACTOR = 10;
--查看数据系统中表格或视图下的索引
EXEC sys.sp_helpindex Player
--查看索引统计信息
DBCC SHOW_STATISTICS(Player, IndexTest)
--重命名索引
EXEC sp_rename 'Player.IndexTest', 'IndexNew'
--删除索引
DROP INDEX dbo.Player.IndexNew