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 扩展存储过程

 

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