SQL SERVR 创建与添加外键

【参考】创建外键关系 - microsoft : https://docs.microsoft.com/zh-cn/sql/relational-databases/tables/create-foreign-key-relationships?view=sql-server-ver15

在新表中创建外键约束

-- 代码引用自 https://docs.microsoft.com/zh-cn/sql/relational-databases/tables/create-foreign-key-relationships?view=sql-server-ver15

CREATE TABLE Sales.TempSalesReason 
   (
      TempID int NOT NULL,
      Name nvarchar(50),
      
      -- 主键约束; CONSTRAINT 约束; PK_TempSales 主键约束别名
      CONSTRAINT PK_TempSales PRIMARY KEY NONCLUSTERED (TempID),

      -- 外键约束; TempID 外键字段
      CONSTRAINT FK_TempSales_SalesReason FOREIGN KEY (TempID)
      
         -- Sales.SalesReason (SalesReasonID) 外键引用字段
         -- 外键引用字段必须为主键或候选键
         REFERENCES Sales.SalesReason (SalesReasonID)

         -- 确保修改外键引用字段的值时会同步更改外键字段的值
         ON DELETE CASCADE
         ON UPDATE CASCADE
   )
;

在已存在的表内添加外键约束

-- 代码引用自 https://docs.microsoft.com/zh-cn/sql/relational-databases/tables/create-foreign-key-relationships?view=sql-server-ver15

ALTER TABLE Sales.TempSalesReason

   -- FK_TempSales_SalesReason 外键约束别名
   ADD CONSTRAINT FK_TempSales_SalesReason FOREIGN KEY (TempID)

      -- Sales.SalesReason (SalesReasonID) 外键引用字段
      -- 外键引用字段必须为主键或候选键
      REFERENCES Sales.SalesReason (SalesReasonID)

      -- 确保修改外键引用字段的值时会同步更改外键字段的值
      ON DELETE CASCADE
      ON UPDATE CASCADE
;


本作品采用知识共享署名-相同方式共享 4.0 国际许可协议进行许可。

转载请标明源地址

### SQL Server 命令列表及用法 #### 数据库管理命令 - **启动SQL Server服务** - 使用Windows服务管理器启动:通过控制面板的服务选项找到并启动SQL Server实例。 - 使用命令提示符启动:`net start MSSQL$SQLEXPRESS` 或者 `sqlservr.exe -s SQLEXPRESS`[^3]。 - **关闭SQL Server服务** - 可以使用命令 `SHUTDOWN WITH NOWAIT` 来立即停止当前正在运行的SQL Server实例,这会尽可能快地终止所有活动连接而不等待事务完成。对于计划内的维护操作建议先通知用户再执行此命令[^2]。 - **备份恢复数据库** - 创建完整备份可以使用如下T-SQL语句:`BACKUP DATABASE [DatabaseName] TO DISK='PathToBackupFile'`。 - 要从备份文件还原整个数据库可采用下面这条命令: `RESTORE DATABASE mydb FROM DISK ='C:\MSDE\Backup\mydb.bak'`[^4]。 #### 结构定义语言 (DDL) - **创建数据库** - 使用CREATE DATABASE语法来建立新的数据库环境,例如:`CREATE DATABASE MyNewDB ON PRIMARY(NAME=MyNewDb_Data,FILENAME='D:\DataFiles\MyNewDb.mdf',SIZE=5MB,MAXSIZE=UNLIMITED)`。 - **修改现有对象属性** - 若要更改表结构或者添加/移除约束条件则需要用到ALTER TABLE语句。比如要删除某个特定名称的关系应该这样写: `alter table 表名 drop constraint 约束名`; 如果想给定名为Stu_PkFk_Sc的数据表解除FK_s这个关联就应该是这样的形式:`alter table Stu_PkFk_Sc drop constraint FK_s;`[^5]。 #### 数据操纵语言(DML) - **插入记录到指定表格里** - 插入单条或多条记录可以通过INSERT INTO...VALUES的方式实现,像这样:`INSERT INTO Employees VALUES ('John Doe','Sales Rep')`。 - **更新已存在的行内容** - UPDATE允许我们针对满足一定条件的一组或多组记录实施批量替换动作,格式类似于:`UPDATE Products SET Price = Price * 1.08 WHERE CategoryID IN(1,2)`。 - **删除不需要的数据项** - DELETE用于清除符合条件的目标集合中的成员,其基本模式为:`DELETE FROM Orders WHERE OrderDate<'2023-01-01' AND ShippedDate IS NULL`。 #### 查询优化工具 - **扩展存储过程(xp_cmdshell)** - 这是一个非常强大的功能,它使得能够在SQL Server内部调用部程序或脚本。不过出于安全考虑,默认情况下它是被禁用的状态。启用前需谨慎评估风险,并确保只授予必要的权限给受信任的应用程序和服务账户[^1]。 ```sql -- 启用 xp_cmdshell 的例子 sp_configure 'show advanced options', 1; RECONFIGURE; sp_configure 'xp_cmdshell', 1; RECONFIGURE; ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

零一魔法

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值