0
点赞
收藏
分享

微信扫一扫

SQL Server 显示所有表创建结构语句

唯米天空 06-16 21:00 阅读 13

在 SQL Server 中,您可以通过以下几种方法获取数据库中所有表的创建结构语句(CREATE TABLE 语句):

方法1:使用 SQL Server Management Studio (SSMS) 生成脚本 在 SSMS 中右键点击您的数据库

选择 "任务" > "生成脚本"

在向导中选择"选择特定数据库对象"

勾选"表"或选择您需要的表

点击"下一步",在"设置脚本选项"中确保选择了"创建脚本"

完成向导后,SSMS 会生成所有表的创建脚本

方法2:使用系统存储过程 sp_help

-- 获取单个表的创建脚本 EXEC sp_help '表名';

方法3:使用 INFORMATION_SCHEMA 视图

-- 获取所有表的基本结构信息 SELECT * FROM INFORMATION_SCHEMA.TABLES; SELECT * FROM INFORMATION_SCHEMA.COLUMNS;

方法4:使用 sys 系统视图

-- 获取所有表及其列信息 SELECT t.name AS TableName, c.name AS ColumnName, ty.name AS DataType, c.max_length, c.precision, c.scale, c.is_nullable FROM sys.tables t INNER JOIN sys.columns c ON t.object_id = c.object_id INNER JOIN sys.types ty ON c.user_type_id = ty.user_type_id ORDER BY t.name, c.column_id;

方法5:使用自定义脚本生成 CREATE TABLE 语句

-- 生成所有表的CREATE TABLE语句 SELECT 'CREATE TABLE ' + QUOTENAME(SCHEMA_NAME(schema_id)) + '.' + QUOTENAME(name) + ' (' + STUFF(( SELECT ', ' + QUOTENAME(c.name) + ' ' + CASE WHEN ty.name IN ('varchar', 'nvarchar', 'char', 'nchar') THEN ty.name + '(' + CASE WHEN c.max_length = -1 THEN 'MAX' ELSE CAST(c.max_length AS VARCHAR) END + ')' WHEN ty.name IN ('decimal', 'numeric') THEN ty.name + '(' + CAST(c.precision AS VARCHAR) + ',' + CAST(c.scale AS VARCHAR) + ')' ELSE ty.name END + CASE WHEN c.is_nullable = 0 THEN ' NOT NULL' ELSE ' NULL' END FROM sys.columns c INNER JOIN sys.types ty ON c.user_type_id = ty.user_type_id WHERE c.object_id = t.object_id FOR XML PATH('') ), 1, 2, '') + CASE WHEN EXISTS ( SELECT 1 FROM sys.key_constraints kc WHERE kc.parent_object_id = t.object_id AND kc.type = 'PK' ) THEN ', PRIMARY KEY (' + STUFF(( SELECT ', ' + QUOTENAME(c.name) FROM sys.index_columns ic INNER JOIN sys.columns c ON ic.object_id = c.object_id AND ic.column_id = c.column_id INNER JOIN sys.key_constraints kc ON ic.object_id = kc.parent_object_id AND ic.index_id = kc.unique_index_id WHERE kc.parent_object_id = t.object_id AND kc.type = 'PK' ORDER BY ic.key_ordinal FOR XML PATH('') ), 1, 2, '') + ')' ELSE '' END + ');' AS CreateTableScript FROM sys.tables t ORDER BY SCHEMA_NAME(schema_id), name;

方法6:使用第三方工具

有许多第三方工具可以生成数据库的完整脚本,如: ApexSQL Script

SQL Database Studio

dbForge Studio for SQL Server

这些工具通常提供更完整的脚本生成功能,包括表、视图、存储过程、函数等所有数据库对象的创建脚本。

注意:以上脚本可能不包含所有约束、索引和触发器,如果需要完整的表定义,建议使用SSMS的生成脚本功能或第三方工具。

举报

相关推荐

0 条评论