文章目录

      • 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的核心是自注意力机制,它允许模型在处理某个位置的输入时,能够直接与其他位置的输入交互,而不…