기술나눔

SQL 제약조건

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

SQL 제약조건

1. 설명

개념: 제약 조건은 테이블에 저장된 데이터를 제한하기 위해 테이블의 필드에 적용되는 규칙입니다.

목적: 데이터베이스에 있는 데이터의 정확성, 유효성 및 무결성을 보장합니다.

강제설명하다키워드
널이 아닌 제약조건이 필드가 비어 있지 않도록 제한null이 아니다
고유 제약조건이 필드의 모든 데이터가 고유하고 중복되지 않는지 확인하세요.고유한
기본 키 제약 조건기본 키는 데이터 행의 고유 식별자이며 비어 있지 않고 고유해야 합니다.기본 키
기본 제약조건데이터 저장 시 필드 값을 지정하지 않으면 기본값이 사용됩니다.기본
제약조건 확인(8.0.16 이후)필드가 특정 조건을 충족하는지 확인확인하다
외래 키 제약 조건두 테이블의 데이터 간 연결을 설정하는 데 사용됩니다.외래키

2. 사용법

자동 증가: auto_increment

MySQL

ALTER TABLE my_table MODIFY id INT AUTO_INCREMENT;
  • 1

SQL서버

-- 删除依赖于id列的约束
ALTER TABLE my_table DROP CONSTRAINT <constraint_name>;

-- 修改字段为自增
ALTER TABLE my_table ALTER COLUMN id INT IDENTITY(1,1);

-- 重新创建约束(如果有)
ALTER TABLE my_table ADD CONSTRAINT <constraint_name> PRIMARY KEY (id);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

제약 조건 추가

-- 1、添加主键
ALTER TABLE 表名 ADD CONSTRAINT 主键名 PRIMARY KEY (主键字段名);
-- 例:ALTER TABLE Orders ADD CONSTRAINT FK_Orders_Customers FOREIGN KEY (CustomerID) REFERENCES Customers(CustomerID);
-- 2、添加外键
alter table 表名 add constraint 外键名 foreign key (外键字段名) references 主表(主字段名);
-- 删除外键
alter table 表名 drop foreign key 外键名;
-- 3、添加唯一约束
ALTER TABLE 表名 ADD CONSTRAINT 约束名 (需要约束的字段);
-- 4、添加默认约束
ALTER TABLE 表名 ADD CONSTRAINT 约束名 DEFAULT '默认值' FOR 字段名;
-- 5、检查约束
ALTER TABLE 表名 ADD CONSTRAINT 约束名 CHECK (Age >= 18 检查的条件);
-- 6、非空约束
ALTER TABLE 表名 ALTER COLUMN 字段名 varchar(255) NOT NULL;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

외래 키의 역할
데이터의 무결성을 보장하기 위해 외래 키 필드를 하위 테이블이라고 하고, 연관된 테이블을 상위 테이블이라고 합니다.
동작 삭제 및 업데이트

  • no action(기본값): 상위 테이블의 해당 레코드를 삭제/업데이트할 때 해당 레코드에 외래 키가 있는 경우업데이트/삭제할 수 없습니다.
  • cascade: 상위 테이블의 해당 레코드를 삭제/업데이트할 때 해당 레코드에 외래 키가 있는 경우,그런 다음 하위 표의 레코드를 삭제/업데이트합니다.
  • set null: 상위 테이블의 해당 레코드를 삭제/업데이트할 때 해당 레코드에 외래 키가 있는 경우,그런 다음 하위 테이블의 외래 키 값을 null로 설정합니다.
  • 기본값 설정: 상위 테이블이 변경되면 하위 테이블에 생성된 외래 키 열이 기본값으로 설정됩니다(InnoDB에서는 지원되지 않음).
# 指定行为
alter table 表名 add constraint 外键名 foreign key (外键字段) references 主表(主字段名) on update cascade on delete cascade;
  • 1
  • 2