常用的T-SQL命令

文章目錄

      • 1. 數據庫操作
      • 2. 表操作
      • 3. 數據插入、更新、刪除
      • 4. 數據查詢
      • 5. 存儲過程
      • 6. 事務處理
      • 7、如何使用T-SQL在表中設置主鍵和外鍵?
        • 1. 設置主鍵(PRIMARY KEY)
          • 方法1:創建表時定義主鍵
          • 方法2:通過ALTER TABLE添加主鍵
        • 2. 設置外鍵(FOREIGN KEY)
          • 方法1:創建表時定義外鍵
          • 方法2:通過ALTER TABLE添加外鍵
        • 3. 命名約束(推薦)
        • 4、注意事項:

T-SQL(Transact-SQL)是SQL Server專用的SQL擴展語言,以下是一些常用的T-SQL命令示例:

1. 數據庫操作

-- 創建數據庫
CREATE DATABASE MyDatabase;-- 切換數據庫
USE MyDatabase;-- 刪除數據庫
DROP DATABASE MyDatabase;

2. 表操作

-- 創建表
CREATE TABLE Customers (CustomerID INT PRIMARY KEY IDENTITY(1,1),Name VARCHAR(50) NOT NULL,Email VARCHAR(100) UNIQUE,RegistrationDate DATETIME DEFAULT GETDATE()
);-- 修改表(添加列)
ALTER TABLE Customers 
ADD Phone VARCHAR(20);-- 刪除表
DROP TABLE Customers;

3. 數據插入、更新、刪除

-- 插入數據
INSERT INTO Customers (Name, Email)
VALUES ('張三', 'zhangsan@example.com'),('李四', 'lisi@example.com');-- 更新數據
UPDATE Customers
SET Email = 'newemail@example.com'
WHERE CustomerID = 1;-- 刪除數據
DELETE FROM Customers
WHERE CustomerID = 2;

4. 數據查詢

-- 基本查詢
SELECT Name, Email 
FROM Customers
WHERE RegistrationDate > '2023-01-01'
ORDER BY Name ASC;-- 聚合查詢
SELECT COUNT(*) AS TotalCustomers,YEAR(RegistrationDate) AS RegYear
FROM Customers
GROUP BY YEAR(RegistrationDate)
HAVING COUNT(*) > 10;-- 連接查詢
SELECT c.Name, o.OrderID
FROM Customers c
INNER JOIN Orders o ON c.CustomerID = o.CustomerID;

5. 存儲過程

-- 創建存儲過程
CREATE PROCEDURE GetCustomerByID@ID INT
AS
BEGINSELECT * FROM Customers WHERE CustomerID = @ID;
END;-- 執行存儲過程
EXEC GetCustomerByID @ID = 1;

6. 事務處理

BEGIN TRANSACTION;BEGIN TRYINSERT INTO Orders (CustomerID, OrderDate) VALUES (1, GETDATE());INSERT INTO OrderDetails (OrderID, ProductID, Quantity) VALUES (SCOPE_IDENTITY(), 101, 5);COMMIT TRANSACTION;
END TRY
BEGIN CATCHROLLBACK TRANSACTION;SELECT ERROR_MESSAGE() AS ErrorMessage;
END CATCH;

這些是T-SQL中最常用的基本命令,實際使用中可以根據具體需求進行組合和擴展。T-SQL還支持游標、觸發器、函數等更復雜的數據庫操作。

7、如何使用T-SQL在表中設置主鍵和外鍵?

在T-SQL中,可以通過CREATE TABLEALTER TABLE語句來設置主鍵(PRIMARY KEY)和外鍵(FOREIGN KEY),以下是具體實現方法:

1. 設置主鍵(PRIMARY KEY)

主鍵用于唯一標識表中的每條記錄,具有唯一性且不能為NULL。

方法1:創建表時定義主鍵
CREATE TABLE Customers (CustomerID INT NOT NULL,Name VARCHAR(50) NOT NULL,Email VARCHAR(100),-- 定義主鍵(單個字段)PRIMARY KEY (CustomerID)
);-- 復合主鍵(多個字段組合唯一)
CREATE TABLE OrderDetails (OrderID INT NOT NULL,ProductID INT NOT NULL,Quantity INT,-- 定義復合主鍵PRIMARY KEY (OrderID, ProductID)
);
方法2:通過ALTER TABLE添加主鍵
-- 先創建表
CREATE TABLE Products (ProductID INT NOT NULL,ProductName VARCHAR(100) NOT NULL
);-- 后期添加主鍵
ALTER TABLE Products
ADD PRIMARY KEY (ProductID);
2. 設置外鍵(FOREIGN KEY)

外鍵用于建立兩個表之間的關聯,確保引用完整性(即外鍵值必須在被引用表的主鍵中存在)。

方法1:創建表時定義外鍵
CREATE TABLE Orders (OrderID INT NOT NULL PRIMARY KEY,OrderDate DATETIME,CustomerID INT,-- 定義外鍵,關聯Customers表的CustomerIDFOREIGN KEY (CustomerID) REFERENCES Customers(CustomerID)-- 可選:刪除被引用記錄時的處理規則ON DELETE SET NULL  -- 當客戶被刪除時,訂單的CustomerID設為NULLON UPDATE CASCADE   -- 當客戶ID更新時,訂單的CustomerID同步更新
);
方法2:通過ALTER TABLE添加外鍵
-- 先創建表
CREATE TABLE OrderDetails (OrderID INT NOT NULL,ProductID INT NOT NULL,Quantity INT,PRIMARY KEY (OrderID, ProductID)
);-- 后期添加外鍵
ALTER TABLE OrderDetails
ADD -- 關聯Orders表FOREIGN KEY (OrderID) REFERENCES Orders(OrderID) ON DELETE CASCADE,-- 關聯Products表FOREIGN KEY (ProductID) REFERENCES Products(ProductID) ON DELETE CASCADE;
3. 命名約束(推薦)

為約束指定名稱可以更方便地管理(如后期刪除約束):

CREATE TABLE Orders (OrderID INT NOT NULL,CustomerID INT,-- 命名主鍵CONSTRAINT PK_Orders PRIMARY KEY (OrderID),-- 命名外鍵CONSTRAINT FK_Orders_Customers FOREIGN KEY (CustomerID) REFERENCES Customers(CustomerID)
);-- 刪除約束的方法
ALTER TABLE Orders
DROP CONSTRAINT FK_Orders_Customers;
4、注意事項:
  • 主鍵字段必須唯一且非空,一個表只能有一個主鍵(可由多個字段組成)。
  • 外鍵字段的類型必須與被引用的主鍵字段類型一致。
  • ON DELETEON UPDATE用于指定當被引用的記錄被刪除或更新時的處理規則,常用選項有:
    • CASCADE:級聯操作(刪除/更新子表中對應記錄)
    • SET NULL:將子表中對應字段設為NULL(需字段允許NULL)
    • NO ACTION:不允許操作(默認值,會報錯)

通過主鍵和外鍵的設置,可以有效保證數據庫中數據的完整性和一致性。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/93244.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/93244.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/93244.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

C++面試題及詳細答案100道( 31-40 )

《前后端面試題》專欄集合了前后端各個知識模塊的面試題,包括html,javascript,css,vue,react,java,Openlayers,leaflet,cesium,mapboxGL,threejs&…

給純小白的 Python 操作 Excel 筆記

🧰 1. 先裝工具電腦鍵盤按 Win R,輸入 cmd,回車,把下面一行粘進去回車,等它跑完。 bashpip install openpyxl——————————————————🛠? 2. 打開一個空白的 Excel 打開 Jupyter Notebook…

HTML 常用屬性介紹

目錄 HTML 屬性 HTML 屬性速查表 一、通用屬性(所有元素適用) 二、鏈接與引用相關屬性 三、表單與輸入控件屬性 四、媒體與多媒體屬性 五、事件屬性(常用 JavaScript 事件) 六、其他常用屬性 核心通用屬性 id 屬性 cla…

HTML5練習代碼集:學習與實踐核心特性

本文還有配套的精品資源,點擊獲取 簡介:HTML5作為新一代網頁標準,對Web開發提供了更豐富的功能和工具。本練習代碼集專門針對HTML5的核心特性,包括語義化標簽、離線存儲、多媒體支持、圖形繪制等,以及CSS3的3D效果和…

【RH134知識點問答題】第 10 章:控制啟動過程

目錄 1. 請簡要說明 RHEL9 的啟動過程。 2. 系統重啟和關機的命令分別是什么? 3. Systemd target 是什么? 4. 重置丟失的 root 密碼需要哪些步驟? 5. 如何讓系統日志在重啟后持久保留 1. 請簡要說明 RHEL9 的啟動過程。 答:①開機自檢…

Apollo10.0學習之固態雷達與IMU的外參標定

固態雷達(如Livox、禾賽等非旋轉式激光雷達)與IMU(慣性測量單元)的外參標定(Extrinsic Calibration)是自動駕駛、機器人定位(如LIO-SAM、FAST-LIO)的關鍵步驟。1. 標定原理 外參標定…

HTML5實現古典音樂網站源碼模板1

文章目錄 1.設計來源1.1 網站首頁1.2 古典音樂界面1.3 著名人物界面1.4 古典樂器界面1.5 歷史起源界面 2.效果和源碼2.1 動態效果2.2 源代碼 源碼下載萬套模板,程序開發,在線開發,在線溝通 作者:xcLeigh 文章地址:http…

40 C++ STL模板庫9-容器2-vector

C STL模板庫9-容器2-vector 文章目錄C STL模板庫9-容器2-vector一、基礎概念1. 類型成員(Type Members)2. 模板參數二、構造函數1. 語法2. 示例三、元素訪問1. 函數說明2. 示例代碼四、容量操作1. 函數說明2. 關鍵點說明3. 關鍵操作解析4. 操作示例五、修…

GPT-5系列文章2——新功能、測試與性能基準全解析

引言 2025年8月,OpenAI正式發布了其新一代旗艦模型GPT-5。與業界此前期待的AGI(人工通用智能)突破不同,GPT-5更像是OpenAI對現有技術的一次深度整合與用戶體驗優化。本文將全面解析GPT-5的新特性、實際測試表現以及官方發布的基準數據,幫助開…

利用cursor+MCP實現瀏覽器自動化釋放雙手

小伙伴們,我們今天利用cursorMCP實現瀏覽器自動化,釋放雙手,工作效率嘎嘎提升!前期準備:安裝node.js網址:https://nodejs.org/zh-cn下載下來安裝即可。 下載browser-tools-mcp擴展程序:下載擴展…

指針/邊界索引混淆梳理

在處理數組/鏈表等數據結構時,時常混淆長度和指針序號。處理技巧:使用0-base索引。則區間長度 rightIndex - LeftIndex 1總長度 lastIndex - firstIndex 1鏈表創建一個dummy節點,添加到head前,則可認為從索引0開始。末尾指針判…

LeetCode 刷題【43. 字符串相乘】

43. 字符串相乘 自己做 解1:矩陣計數 class Solution { public:string multiply(string num1, string num2) {int len1 num1.size();int len2 num2.size();if (num1[0] 0 || num2[0] 0) //結果為0的情況return "0";//存儲計算過程的矩陣vector…

NLP數據增強方法及實現-A

目錄 詞替換 主要參考:paddlenlp/data_aug模塊 詞替換數據增強策略也即將句子中的詞隨機替換為其他單詞進行數據增強,這里我們將介紹如何使用paddlenlp.dataaug.WordSubstitute進行詞級別替換的數據增強。 WordSubstitute 參數介紹:aug_ty…

EhViewer安卓ios全版本類下載安裝工具的完整路徑解析

開發一款類似EhViewer的下載安裝工具(集下載管理、應用部署等功能于一體),需要經歷從需求錨定到落地發布的系統性流程。以下從需求拆解到技術落地的全維度指南,將幫你理清開發脈絡,避開常見陷阱。安裝 GitHub - huangy…

MySQL 主鍵詳解:作用與使用方法

在 MySQL 數據庫中,主鍵(Primary Key) 是表結構設計中最重要的約束之一。它不僅是數據唯一性的保障,也是多表關聯、查詢優化的核心工具。本文將從 主鍵的作用 和 主鍵的用法 兩個方面進行講解,并配合代碼示例幫助理解一…

lib.dom.d.ts

lib.dom.d.ts 是一個 TypeScript 類型聲明文件,它是 TypeScript 標準庫的一部分,用于定義瀏覽器 DOM(文檔對象模型)相關的類型和接口。這個文件為開發者提供了瀏覽器中所有內置的 DOM 類型的定義,包括 localStorage、d…

Spring 工具類:StopWatch

StopWatch 是 Spring 框架提供的一個簡單而強大的計時工具類,用于測量代碼塊的執行時間。它特別適合在開發階段進行性能分析、調試和優化。 基本使用方法 // 創建 StopWatch 實例(可指定 ID) StopWatch stopWatch new StopWatch("性能分…

解決 VSCode 運行 Python 時 ModuleNotFoundError: No module named ‘open_webui‘ 問題

目錄 1. 問題原因分析 2. 解決思路 3. 解決步驟 3.1 打開或創建 .vscode/launch.json 3.2 添加調試配置 3.3 配置說明 3.4 運行測試 4. 總結 在使用 VSCode 調試 Python 項目時,我們經常會遇到類似下面的錯誤: Exception has occurred: ModuleN…

Python基礎-數據結構

數據結構 Python提供了四種主要的內置數據結構:列表(List)、元組(Tuple)、字典(Dictionary)和集合(Set)。每種數據結構都有其特定的用途和特性。 Python數據結構概覽&…

NLP學習之Transformer(1)

初識 Transformer (1) 1.簡介 1.1主要特點: self-attention: 自注意力機制,Transformer的核心是自注意力機制,它允許模型在處理某個位置的輸入時,能夠直接與其他位置的輸入交互,而不…