SQL Server 查看錶結構的語句全解析

在資料庫開發和管理過程中,查看錶結構是一項非常重要的工作。通過查看錶結構,可以了解表的欄位數據類型、約束、索引等信息。本文將從多個方面對 SQL Server 查看錶結構的語句進行詳細的闡述,希望對大家有所幫助。

一、SQL Server 查看錶結構命令

要查看 SQL Server 中表的結構,最基本的方法就是使用 sp_help 命令,語法格式如下:

sp_help '表名'

使用該命令可以查詢表結構、索引、觸發器、約束等信息。下面是一個示例:

sp_help 'Sales.OrderHeader'

執行結果如下圖所示:

除了 sp_help 命令,還有一些其他的命令可以查看錶結構,比如 sp_helpindexsp_columnssp_pkeyssp_fkeys 等,不同的命令可以用來查看不同的信息。具體使用方法可以參考 MSSQL 官方文檔。

二、SQL Server 建表語句

如果需要查看錶的建表語句,可以使用以下兩種方法。

方法一:使用 SQL Server Management Studio(SSMS)生成建表語句。

  1. 在 SSMS 中,右鍵單擊要查看的表,選擇「腳本表」-「生成到」-「新查詢編輯器窗口」
  2. 生成的腳本如下圖所示:
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 修改表結構。

  1. 在 SSMS 中,右鍵單擊要修改的表,選擇「修改」。
  2. 進行需要的修改,比如添加、刪除或修改列、添加索引、添加或刪除約束等。
  3. 點擊「保存」按鈕,系統將自動生成 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 的「生成腳本嚮導」。

  1. 在 SSMS 中,右鍵單擊要導出的表,選擇「腳本表」-「生成腳本嚮導」。
  2. 在嚮導中,選擇要導出的對象(表、視圖、觸發器等)、選擇腳本選項(生成是否包括數據、是否生成 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 的「設計」功能查看錶結構。

  1. 在 SSMS 中,右鍵單擊要查看的表,選擇「設計」。
  2. 可以通過該界面來查看錶的各種屬性、添加、刪除或修改列、添加索引、添加或刪除約束等。

九、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

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-21 13:03
下一篇 2024-12-21 13:03

相關推薦

  • Python3支持多行語句

    Python3是一種高級編程語言,開發人員可以輕鬆地使用該語言編寫簡單到複雜的代碼。其中Python3支持多行語句,方便開發人員編寫複雜的代碼,提高代碼的可讀性和可維護性。 一、使…

    編程 2025-04-29
  • Python for循環語句列印九九乘法表

    本篇文章將詳細介紹如何使用Python的for循環語句列印九九乘法表。列印九九乘法表是我們初學Python時經常練習的一項基礎操作,也是編寫Python程序的基本能力之一。 1、基…

    編程 2025-04-29
  • Hibernate日誌列印sql參數

    本文將從多個方面介紹如何在Hibernate中列印SQL參數。Hibernate作為一種ORM框架,可以通過列印SQL參數方便開發者調試和優化Hibernate應用。 一、通過配置…

    編程 2025-04-29
  • Python中while語句和for語句的區別

    while語句和for語句是Python中兩種常見的循環語句,它們都可以用於重複執行一段代碼。然而,它們的語法和適用場景有所不同。本文將從多個方面詳細闡述Python中while語…

    編程 2025-04-29
  • Vue TS工程結構用法介紹

    在本篇文章中,我們將從多個方面對Vue TS工程結構進行詳細的闡述,涵蓋文件結構、路由配置、組件間通訊、狀態管理等內容,並給出對應的代碼示例。 一、文件結構 一個好的文件結構可以極…

    編程 2025-04-29
  • Python中自定義函數必須有return語句

    自定義函數是Python中最常見、最基本也是最重要的語句之一。在Python中,自定義函數必須有明確的返回值,即必須要有return語句。本篇文章將從以下幾個方面對此進行詳細闡述。…

    編程 2025-04-29
  • 使用SQL實現select 聚合查詢結果前加序號

    select語句是資料庫中最基礎的命令之一,用於從一個或多個表中檢索數據。常見的聚合函數有:count、sum、avg等。有時候我們需要在查詢結果的前面加上序號,可以使用以下兩種方…

    編程 2025-04-29
  • 理解Mybatis中的SQL Limit用法

    Mybatis是一種非常流行的ORM框架,提供了SQL映射配置文件,可以使用類似於傳統SQL語言的方式編寫SQL語句。其中,SQL的Limit語法是一個非常重要的知識點,能夠實現分…

    編程 2025-04-29
  • Python程序的三種基本控制結構

    控制結構是編程語言中非常重要的一部分,它們指導著程序如何在不同的情況下執行相應的指令。Python作為一種高級編程語言,也擁有三種基本的控制結構:順序結構、選擇結構和循環結構。 一…

    編程 2025-04-29
  • Python中升序排列的if語句

    本文將為大家介紹Python中升序排列的if語句。首先,我們來看一下如何實現。 if a > b: a, b = b, a if b > c: b, c = c, b …

    編程 2025-04-29

發表回復

登錄後才能評論