表级约束

#添加表级约束
/*
语法:在各个字段的最下面
【constraint 约束名】 约束类型(字段名)

*/
DROP TABLE IF EXISTS stuinfo;
CREATE TABLE stuinfo(
       id INT,
       stuname VARCHAR(20),
       gender CHAR(1),
       seat INT,
       age INT,
       majorid INT,
       
       CONSTRAINT pk PRIMARY KEY(id),
       CONSTRAINT uq UNIQUE(seat),
       CONSTRAINT ck CHECK(gender='男' OR gender='女'),
       CONSTRAINT fk_stuinfo_major FOREIGN KEY(majorid) REFERENCES major(id)
      
);

CREATE TABLE stuinfo(
       id INT,
       stuname VARCHAR(20),
       gender CHAR(1),
       seat INT,
       age INT,
       majorid INT,
       
       PRIMARY KEY(id),
       UNIQUE(seat),
       CHECK(gender='男' OR gender='女'),
       FOREIGN KEY(majorid) REFERENCES major(id)
      
);
SHOW INDEX FROM stuinfo;
#通用的写法:
CREATE TABLE IF NOT EXISTS stuinfo(
        id INT PRIMARY KEY,
        stuname VARCHAR(20) NOT NULL,
        sex CHAR(1),
        age INT DEFAULT 18,
        seat INT UNIQUE,
        majorid INT,
        CONSTRAINT fk_stuinfo_major FOREIGN KEY(majorid) REFERENCES major(id)

);
### SQL Server 约束概述 在 SQL Server 中,约束用于定义数据完整性规则。这些约束可以应用于单个列或多列组合上。常见的约束包括 `UNIQUE`、`CHECK`、`FOREIGN KEY` 和默认值约束。 #### 创建唯一约束 为了确保多列组合中的每一组值都是唯一的,可以使用 `UNIQUE` 约束。下面展示了如何在一个名为 `PersonSkills` 的中创建包含两列 (`person_id`, `skill_id`) 的唯一约束: ```sql CREATE TABLE PersonSkills ( person_id INT NOT NULL, skill_id INT NOT NULL, proficiency_level VARCHAR(50), CONSTRAINT UC_PersonSkill UNIQUE (person_id, skill_id) ); ``` 上述命令通过指定 `CONSTRAINT ... UNIQUE (...)` 来实现这一目标[^1]。 #### 查询现有约束信息 当不确定某个特定约束的名字时,可以通过查询系统视图来获取所需的信息。例如,如果想要查看 `Employees` 下的所有约束详情,则可执行如下语句: ```sql SELECT CONSTRAINT_NAME, CONSTRAINT_TYPE FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE TABLE_NAME = 'Employees' AND TABLE_SCHEMA = 'dbo'; ``` 这段脚本利用了 `INFORMATION_SCHEMA.TABLE_CONSTRAINTS` 视图来检索有关给定内各个约束的数据[^2]。 #### 修改默认值约束 对于已经存在的,默认值可以在不改变原有结构的情况下被更新或移除。这里有一个例子说明怎样先删除旧有的默认值再设置新的默认值到某一字段: ```sql ALTER TABLE t_24 DROP CONSTRAINT DF__t_24__money__060DEAE8; ALTER TABLE t_24 ADD CONSTRAINT moneydefault100 DEFAULT 100.00 FOR money; ``` 此操作先是清除了之前关联于 `money` 列上的任何预设初始值,接着指定了一个新的固定数值作为新记录插入时如果没有提供具体金额情况下所采用的标准值[^3]。
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值