在資料庫開發和管理過程中,查看錶結構是一項非常重要的工作。通過查看錶結構,可以了解表的欄位數據類型、約束、索引等信息。本文將從多個方面對 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 的「設計」功能查看錶結構等。希望對大家有所幫助。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/280468.html