sql server 数据定义常用sql

目录

创建表

创建表TestSql

CREATE TABLE TestSql(
Id bigint identity(1,1) not null PRIMARY key
)
参考资料

SQL CREATE TABLE 语句
SQL PRIMARY KEY 约束

更新表

创建字段

创建普通字段

--ALTER TABLE table_name ADD column_name datatype
ALTER TABLE TestSql ADD Name varchar(10)
--创建不为空的字段
ALTER TABLE TestSql ADD Sex int not null
参考资料

SQL 撤销索引、表以及数据库

修改字段

修改字段的数据类型
--ALTER TABLE table_name ALTER COLUMN column_name datatype
--修改数据类型(eg.varchar(10)->varchar(20)),成功
ALTER TABLE TestSql ALTER COLUMN Name_Update varchar(20)
--修改数据类型(eg.varchar->int),有索引,则修改失败
ALTER TABLE TestSql ALTER COLUMN Name int
修改字段名称
--例1 把表TABLE的列tid改为id
EXEC sp_rename @objname = ‘TABLE.tid‘, @newname = ‘id‘, @objtype = ‘column‘
?
--例2(简写)把表TABLE的列tid改为id
EXEC sp_rename ‘TABLE.tid‘, @newname = ‘id‘, @objtype = ‘column‘

--注意: 更改对象名的任一部分都可能会破坏脚本和存储过程。
EXEC sp_rename ‘TestSql.Name‘, @newname = ‘NewName‘, @objtype = ‘column‘

修改表名

--例1 把表TABLE1改为TABLE2
EXEC sp_rename @objname = ‘TABLE1‘, @newname = ‘TABLE2‘

--例2(简写)把表TABLE1改为TABLE2
EXEC sp_rename ‘TABLE1‘,‘TABLE2‘

--注意: 更改对象名的任一部分都可能会破坏脚本和存储过程。
EXEC sp_rename ‘TestSql‘,‘TestSql2‘
参考资料

SQL Server修改表名,字段名,索引名

外键

添加一个TestSqlChild表,TestSqlChild表有字段ParentId依赖TestSql的主键Id
创建外键

--ALTER TABLE target_table_name
--ADD CONSTRAINT FOREIGN_KEY_Name
--FOREIGN KEY (target_table_column)
--REFERENCES table_name(table_name_column)

ALTER TABLE TestSqlChild
ADD CONSTRAINT fk_ParentId
FOREIGN KEY (ParentId)
REFERENCES TestSql(Id)

删除外键

--ALTER TABLE target_table_name
--DROP CONSTRAINT FOREIGN_KEY_Name

ALTER TABLE TestSqlChild
DROP CONSTRAINT fk_ParentId
参考资料

SQL FOREIGN KEY 约束

索引

创建索引

--CREATE INDEX index_name ON table_name (column_name)
--创建普通索引
CREATE INDEX NameIndex ON TestSql (Name)
--创建唯一索引
CREATE UNIQUE INDEX NameIndex ON TestSql (Name)
参考资料

SQL CREATE INDEX 语句
删除索引

--DROP INDEX table_name.index_name
DROP INDEX TestSql.NameIndex

查询目标字段的索引
使用存储过程查询

--use database_name EXEC Sp_helpindex table_name
--或者
--EXEC Sp_helpindex table_name
EXEC sp_helpindex ‘TestSql‘

结果如下:
sql server 数据定义常用sql

删除字段

--ALTER TABLE table_name DROP COLUMN column_name
--如果字段有索引,需要先删除索引,才能删除字段(外键类似)
ALTER TABLE TestSql DROP COLUMN Sex

删除表

删除表TestSql

DROP TABLE TestSql

查询表结构

SELECT *
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = ‘tableName‘
ORDER BY ORDINAL_POSITION

或者

sp_Columns ‘tableName‘

包含注释信息

SELECT A.name AS table_name,B.name AS column_name,D.IS_NULLABLE,D.DATA_TYPE,D.CHARACTER_MAXIMUM_LENGTH,C.value AS column_description

FROM sys.tables A INNER JOIN sys.columns B

ON B.object_id = A.object_id LEFT JOIN sys.extended_properties C

ON C.major_id = B.object_id AND C.minor_id = B.column_id

INNER join INFORMATION_SCHEMA.COLUMNS D on D.COLUMN_NAME=B.name and D.table_name=A.name

WHERE A.name =‘tableName‘
参考资料

Get Table information (Column Name, Data Type) in SQL Server
SQL Server 的所有表查询和注释说明查询

创建视图

--CREATE VIEW view_name AS
--SELECT column_name(s)
--FROM table_name
--WHERE condition

CREATE VIEW QueryTestSql AS
SELECT *
FROM TestSql
WHERE 1=1

--使用
select * from QueryTestSql
参考资料

SQL VIEW(视图)

相关推荐