📅  最后修改于: 2023-12-03 15:20:16.341000             🧑  作者: Mango
在 SQL 中,约束 (Constraint) 是被用来限制、规范表数据中某一列或多列的值必须满足的条件。
在 TypeScript 中,可以使用类型约束(Type Constraints)来确保代码中传递的数据类型符合我们预期。
主键约束是表中一个列或一组列的唯一标识符,该列或组合不允许有重复值出现。
主键约束可以用于保证数据的完整性和一致性。主键约束经常被用作其他表的外键参考,从而确保表之间的关联是有效的。
主键约束可以在表创建时或后期添加,通常是使用以下 SQL 语句:
-- 创建表时指定主键约束
CREATE TABLE users (
id INT PRIMARY KEY,
name VARCHAR(20) NOT NULL,
email VARCHAR(50) UNIQUE NOT NULL
);
-- 后期添加主键约束
ALTER TABLE users
ADD PRIMARY KEY (id);
唯一约束确保表中的某一列或多列的值唯一,但允许空值出现。
与主键约束不同,唯一约束可以在表中具有多个列,某列上允许有多个 null 值出现。唯一约束可以在表创建时或后期添加,例如:
-- 创建表时指定唯一约束
CREATE TABLE users (
id INT,
name VARCHAR(20),
email VARCHAR(50) UNIQUE
);
-- 后期添加唯一约束
ALTER TABLE users
ADD UNIQUE (email);
非空约束要求某一列的值不能为 null ,并且必须在表创建时指定。
-- 创建表时指定非空约束
CREATE TABLE users (
id INT,
name VARCHAR(20) NOT NULL,
email VARCHAR(50) NOT NULL
);
外键约束用于确保表中两列之间的关系符合其他表中列的值的要求。外键约束在一个表中引用另一个表的一列或多列,作为它的约束条件。
外键约束可以用于确保表之间的关联是有效的,并且可以在以下 SQL 语句中创建或添加:
-- 创建表时指定外键约束
CREATE TABLE orders (
id INT,
user_id INT,
item_id INT,
FOREIGN KEY (user_id) REFERENCES users(id),
FOREIGN KEY (item_id) REFERENCES items(id)
);
-- 后期添加外键约束
ALTER TABLE orders
ADD FOREIGN KEY (user_id) REFERENCES users(id);
TypeScript 中的类型约束可以确保代码中传递的数据类型符合我们预期。可以通过多种方式实现类型约束,例如:
使用接口可以定义一个对象所需要拥有的属性及其对应的类型,例如:
interface User {
id: number;
name: string;
email: string;
}
function getUser(user: User) {
console.log(user);
}
getUser({ id: 1, name: 'Alice', email: 'alice@example.com' });
在这个例子中,getUser
函数接受一个 User
类型的对象参数,该参数必须具有 id
、name
和 email
属性,且其类型分别是 number
、string
和 string
。
可以使用泛型来包装具体类型,从而增加代码的复用性和灵活性。
例如:
function getLength<T>(arg: T[]): number {
return arg.length;
}
console.log(getLength<string>(['foo', 'bar']));
上述代码中,getLength
是一个泛型函数,接受一个 T
类型的数组参数,返回该数组的长度,可以通过指定类型参数 <string>
来传递一个字符串类型的数组参数。
约束在 SQL 和 TypeScript 中都具有显著的作用。在 SQL 中,约束可以用于保证数据的完整性、一致性和关联性;在 TypeScript 中,约束可以确保代码中传递的数据类型符合我们预期。不同的约束类型可以在不同场景中发挥作用,程序员们可以灵活地运用约束来提高代码的健壮性和可维护性。