在数据库开发和管理过程中,查看表结构是一项非常重要的工作。通过查看表结构,可以了解表的字段数据类型、约束、索引等信息。本文将从多个方面对 SQL Server 查看表结构的语句进行详细的阐述,希望对大家有所帮助。
一、SQL Server 查看表结构命令
要查看 SQL Server 中表的结构,最基本的方法就是使用 sp_help
命令,语法格式如下:
sp_help '表名'
使用该命令可以查询表结构、索引、触发器、约束等信息。下面是一个示例:
sp_help 'Sales.OrderHeader'
执行结果如下图所示:
除了 sp_help
命令,还有一些其他的命令可以查看表结构,比如 sp_helpindex
、sp_columns
、sp_pkeys
、sp_fkeys
等,不同的命令可以用来查看不同的信息。具体使用方法可以参考 MSSQL 官方文档。
二、SQL Server 建表语句
如果需要查看表的建表语句,可以使用以下两种方法。
方法一:使用 SQL Server Management Studio(SSMS)生成建表语句。
- 在 SSMS 中,右键单击要查看的表,选择“脚本表”-“生成到”-“新查询编辑器窗口”
- 生成的脚本如下图所示:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [Sales].[OrderHeader](
[SalesOrderID] [int] IDENTITY(1,1) NOT NULL,
[RevisionNumber] [tinyint] NOT NULL,
[OrderDate] [datetime] NOT NULL,
[DueDate] [datetime] NOT NULL,
[ShipDate] [datetime] NULL,
[Status] [tinyint] NOT NULL,
[OnlineOrderFlag] [dbo].[Flag] NOT NULL,
[SalesOrderNumber] [nvarchar](25) NOT NULL,
[PurchaseOrderNumber] [nvarchar](25) NULL,
[AccountNumber] [nvarchar](15) NULL,
[CustomerID] [int] NOT NULL,
[SalesPersonID] [int] NULL,
[TerritoryID] [int] NULL,
[BillToAddressID] [int] NOT NULL,
[ShipToAddressID] [int] NOT NULL,
[ShipMethodID] [int] NOT NULL,
[CreditCardID] [int] NULL,
[CreditCardApprovalCode] [varchar](15) NULL,
[CurrencyRateID] [int] NULL,
[SubTotal] [money] NOT NULL,
[TaxAmt] [money] NOT NULL,
[Freight] [money] NOT NULL,
[TotalDue] AS (isnull(([SubTotal]+[TaxAmt])+[Freight],(0))),
[Comment] [nvarchar](128) NULL,
[rowguid] [uniqueidentifier] ROWGUIDCOL NOT NULL,
[ModifiedDate] [datetime] NOT NULL,
CONSTRAINT [PK_SalesOrderHeader_SalesOrderID] PRIMARY KEY CLUSTERED
(
[SalesOrderID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
ALTER TABLE [Sales].[OrderHeader] WITH CHECK ADD CONSTRAINT [FK_SalesOrderHeader_SalesPerson_SalesPersonID] FOREIGN KEY([SalesPersonID])
REFERENCES [Sales].[SalesPerson] ([BusinessEntityID])
GO
ALTER TABLE [Sales].[OrderHeader] CHECK CONSTRAINT [FK_SalesOrderHeader_SalesPerson_SalesPersonID]
GO
ALTER TABLE [Sales].[OrderHeader] WITH CHECK ADD CONSTRAINT [FK_SalesOrderHeader_ShipMethod_ShipMethodID] FOREIGN KEY([ShipMethodID])
REFERENCES [Purchasing].[ShipMethod] ([ShipMethodID])
GO
ALTER TABLE [Sales].[OrderHeader] CHECK CONSTRAINT [FK_SalesOrderHeader_ShipMethod_ShipMethodID]
GO
ALTER TABLE [Sales].[OrderHeader] WITH CHECK ADD CONSTRAINT [FK_SalesOrderHeader_Address_BillToAddressID] FOREIGN KEY([BillToAddressID])
REFERENCES [Person].[Address] ([AddressID])
GO
ALTER TABLE [Sales].[OrderHeader] CHECK CONSTRAINT [FK_SalesOrderHeader_Address_BillToAddressID]
GO
ALTER TABLE [Sales].[OrderHeader] WITH CHECK ADD CONSTRAINT [FK_SalesOrderHeader_Address_ShipToAddressID] FOREIGN KEY([ShipToAddressID])
REFERENCES [Person].[Address] ([AddressID])
GO
ALTER TABLE [Sales].[OrderHeader] CHECK CONSTRAINT [FK_SalesOrderHeader_Address_ShipToAddressID]
GO
ALTER TABLE [Sales].[OrderHeader] WITH CHECK ADD CONSTRAINT [FK_SalesOrderHeader_Customer_CustomerID] FOREIGN KEY([CustomerID])
REFERENCES [Sales].[Customer] ([CustomerID])
GO
ALTER TABLE [Sales].[OrderHeader] CHECK CONSTRAINT [FK_SalesOrderHeader_Customer_CustomerID]
GO
ALTER TABLE [Sales].[OrderHeader] WITH CHECK ADD CONSTRAINT [FK_SalesOrderHeader_CurrencyRate_CurrencyRateID] FOREIGN KEY([CurrencyRateID])
REFERENCES [Sales].[CurrencyRate] ([CurrencyRateID])
GO
ALTER TABLE [Sales].[OrderHeader] CHECK CONSTRAINT [FK_SalesOrderHeader_CurrencyRate_CurrencyRateID]
GO
ALTER TABLE [Sales].[OrderHeader] ADD CONSTRAINT [DF_OrderHeader_OnlineOrderFlag] DEFAULT ((1)) FOR [OnlineOrderFlag]
GO
ALTER TABLE [Sales].[OrderHeader] ADD CONSTRAINT [DF_SalesOrderHeader_Status] DEFAULT ((1)) FOR [Status]
GO
ALTER TABLE [Sales].[OrderHeader] ADD CONSTRAINT [DF_SalesOrderHeader_rowguid] DEFAULT (newid()) FOR [rowguid]
GO
方法二:使用 T-SQL 查询系统表 sys.sql_modules
。
SELECT
sm.definition
FROM
sys.tables st
INNER JOIN
sys.sql_modules sm ON sm.object_id = st.object_id
WHERE
st.name = 'SalesOrderHeader'
三、SQL Server 修改表结构语句
修改表结构是非常常见的任务,下面介绍两种方法来修改表结构。
方法一:使用 SSMS 修改表结构。
- 在 SSMS 中,右键单击要修改的表,选择“修改”。
- 进行需要的修改,比如添加、删除或修改列、添加索引、添加或删除约束等。
- 点击“保存”按钮,系统将自动生成 ALTER TABLE 语句。
方法二:使用 ALTER TABLE 语句手动修改表结构。
ALTER TABLE Sales.OrderHeader
ADD Discount decimal(18,2) NOT NULL DEFAULT 0;
上面的语句在 Sales.OrderHeader 表中添加了一个名为 Discount 的列,默认值为 0。
四、SQL Server 查看表结构快捷键
在 SSMS 中,可以通过快捷键 F4 或者选择“对象资源管理器”中的“属性”来查看表的属性。
五、SQL Server 复制表结构语句
复制表结构非常常见,下面介绍一种方法。
SELECT TOP 0 *
INTO Sales.OrderHeaderNew
FROM Sales.OrderHeader
上面的语句会在当前数据库中创建一个名为 Sales.OrderHeaderNew 的表,并复制 Sales.OrderHeader 表的结构。注意,由于使用了 TOP 0
,所以不会复制数据。
六、SQL Server 表结构导出 SQL 语句
如果需要将表结构导出为 SQL 语句,可以使用 SSMS 的“生成脚本向导”。
- 在 SSMS 中,右键单击要导出的表,选择“脚本表”-“生成脚本向导”。
- 在向导中,选择要导出的对象(表、视图、触发器等)、选择脚本选项(生成是否包括数据、是否生成 DROP 语句等),然后生成脚本。
七、SQL Server 查看创建表语句
在 SQL Server 中,查看创建表语句非常简单。可以使用方法二中介绍的 sys.sql_modules
表来查询。
SELECT
sm.definition
FROM
sys.objects so
INNER JOIN
sys.sql_modules sm ON sm.object_id = so.object_id
WHERE
so.name = 'SalesOrderHeader'
八、SQL Server 怎么查看表结构
除了前面介绍的方法外,还可以使用 SSMS 的“设计”功能查看表结构。
- 在 SSMS 中,右键单击要查看的表,选择“设计”。
- 可以通过该界面来查看表的各种属性、添加、删除或修改列、添加索引、添加或删除约束等。
九、SQL Server 查看锁表语句
要查看锁表语句,可以使用以下两种方法。
方法一:使用动态管理视图 sys.dm_tran_locks
。
SELECT
OBJECT_NAME(p.object_id) AS TableName,
p.resource_type AS ResourceType,
p.resource_description AS Description,
t.request_mode AS Mode,
t.request_session_id AS SessionID
FROM
sys.dm_tran_locks AS t
INNER JOIN
sys.partitions AS p ON t.resource_associated_entity_id = p.hobt_id
WHERE
OBJECT_NAME(p.object_id) = 'SalesOrderHeader'
方法二:使用 SQL Server Profiler 工具监视锁信息。
十、SQL Server 修改表结构的 SQL 语句
除了第三个小标题中介绍的方法外,还可以使用以下的 SQL 语句来修改表结构。
ALTER TABLE Sales.OrderHeader
ALTER COLUMN DueDate datetime NOT NULL;
上面的语句会将 Sales.OrderHeader 表中 DueDate 列的数据类型修改为 datetime,同时设置为不允许为空。
总结
本文对 SQL Server 查看表结构的语句进行了详细的解析,例如使用 sp_help
命令查询表结构、使用 SSMS 生成建表语句或修改表结构、使用 T-SQL 查询系统表 sys.sql_modules
查看创建表语句、使用 SSMS 的“设计”功能查看表结构等。希望对大家有所帮助。