本人使用的是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 擴展存儲過程