SQLserver常見SQL語句

本人使用的是SQLServer2017年的版本。

1.SQLserver創建表和索引的語句

##創建表的SQL
CREATE TABLE sys_position(
	id varchar(36) PRIMARY KEY,
	code varchar(36) NOT NULL,
	name varchar(80) NOT NULL,
	position_rank varchar(30) NULL,
	position_status varchar(1) NULL,
	sys_org_code varchar(50) NULL,
	company_id varchar(36) NOT NULL,
	create_by varchar(50) NULL,
	create_time date NULL,
	update_by varchar(50) NULL,
	update_time date NULL,
	del_flag varchar(1) default '0'
);

##創建索引的SQL
##唯一索引
CREATE UNIQUE INDEX idx_sys_position_u1 ON sys_position(code);
##普通索引
CREATE INDEX idx_sys_position_u2 ON sys_position(name);

2.sqlserver插入表註釋和列註釋的SQL語句

#列註釋
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'更新日期', @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'hr_e_employee_other', @level2type=N'COLUMN',@level2name=N'UPDATE_TIME'
GO

#表名註釋
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'人員子表' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'hr_e_employee_other'
GO

3.根據Oracle的列名註釋批量生成SQLserver的列名註釋SQL

##指定某一張表hr_e_employee_other
select 'EXEC sys.sp_addextendedproperty @name=N''MS_Description'', @value=N''' || t.COMMENTS || ''''
||', @level0type=N''SCHEMA'',@level0name=N''dbo'', @level1type=N''TABLE'',@level1name=N''hr_e_employee_other'', @level2type=N''COLUMN'',@level2name=N''' || t.COLUMN_NAME || '''' || chr(13) || 'GO'
from all_col_comments t where t.OWNER=upper('mesdev')  
and exists(select t.TABLE_NAME from user_tables tt where tt.TABLE_NAME=t.TABLE_NAME)
and t.COMMENTS is not NULL
AND t.TABLE_NAME=upper('hr_e_employee_other');

##所有表
select 'EXEC sys.sp_addextendedproperty @name=N''MS_Description'', @value=N''' || t.COMMENTS || ''''
||', @level0type=N''SCHEMA'',@level0name=N''dbo'', @level1type=N''TABLE'',@level1name=N''' || t.TABLE_NAME || ''''||', @level2type=N''COLUMN'',@level2name=N''' || t.COLUMN_NAME || '''' || chr(13) || 'GO'
from all_col_comments t where t.OWNER=upper('mesdev')  
and exists(select t.TABLE_NAME from user_tables tt where tt.TABLE_NAME=t.TABLE_NAME)
and t.COMMENTS is not NULL

4.SQLserver添加/修改/刪除表的字段名/表名

##添加字段
##語法:alter table 表名 add 新增字段名 字段類型 默認值...
GO
alter table sys_position add 
position_status varchar(1) null,
delete_flag varchar(1) null
GO

##sqlserver 修改字段名
exec sp_rename '[表名].[列名]','[新列名]' -- 注意,單引號不可省略。
##語法:exec sp_rename '表名.字段名','修改字段名','COLUMN

##SQLServer修改字段類型
Alter table [表名] Alter column [列名] [列類型]
##將表menu的menuId字段修改爲長度爲varchar類型,長度爲50
Alter table menu Alter column menuId varchar(50);

##刪除字段
alter table 表名 drop constraint 約束名(刪除相關約束)
alter table 表名 drop cloumn 字段名 (刪除字段)

##修改表名
##格式:sp_rename tablename,newtablename
sp_rename tablename,newtablename

5.SQLserver查詢表、存儲過程等的數量

##查詢所有表名
select name from sysobjects where xtype='u';

select count(1)  from sysobjects where xtype='u'
and (name like 'ACT_%' or name like 'FLW_%');

##Name,id,xtype,uid,status:分別是對象名,對象ID,對象類型,所有者對象的用戶ID,對象狀態

##xtype代表的是對象類型,有如下對象類型:
AF = Aggregate function (CLR) 聚合函數(CLR) 
C = CHECK constraint CHECK約束 
D = Default or DEFAULT constraint 默認或DEFAULT約束 
F = FOREIGN KEY constraint 外鍵約束 
L = Log 日誌 
FN = Scalar function 標量函數 
FS = Assembly (CLR) scalar-function 組裝(CLR)標量函數 
FT = Assembly (CLR) table-valued function 程序集(CLR)表值函數 
IF = In-lined table-function 內嵌表函數 
IT = Internal table 內部表 
P = Stored procedure 存儲過程 
PC = Assembly (CLR) stored-procedure 組裝(CLR)存儲過程 
PK = PRIMARY KEY constraint (type is K) 主鍵約束(類型是K) 
RF = Replication filter stored procedure 制篩選存儲過程 
S = System table 系統表 
SN = Synonym 同義詞 
SQ = Service queue 服務序列 
TA = Assembly (CLR) DML trigger 裝配(CLR) DML觸發器 
TF = Table function 表函數 
TR = SQL DML Trigger 觸發器 
TT = Table type 
U = User table用戶表 
UQ = UNIQUE constraint (type is K) 唯一約束(類型是K) 
V = View 視圖 
X = Extended stored procedure 擴展存儲過程

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章