SQL 제약 조건은 테이블의 데이터에 대한 규칙을 지정하는 데 사용됩니다.

 

이렇게 하면 테이블에 있는 데이터의 정확성과 신뢰성이 보장됩니다.

제약 조건과 데이터 작업 사이에 위반 사항이 있으면 작업이 중단됩니다.

 

제약 조건은 열 수준 또는 테이블 수준일 수 있습니다. 

열 수준 제약 조건은 열에 적용되고 테이블 수준 제약 조건은 전체 테이블에 적용됩니다.

 

CONSTRAINT 제약조건 신택스

 

 

다음 제약 조건은 SQL에서 일반적으로 사용됩니다.

 

  • NOT NULL - 열이 NULL 값을 가질 수 없도록 합니다.
  • UNIQUE - 열의 모든 값이 다른지 확인(중복값 불가)
  • PRIMARY KEY -  NOT NULL와UNIQUE의 조합  테이블의 각 행을 고유하게 식별합니다.
  • FOREIGN KEY - 테이블 간의 링크를 파괴하는 행위를 방지합니다.(참조키)
  • CHECK- 열의 값이 특정 조건을 충족하는지 확인
  • DEFAULT- 값이 지정되지 않은 경우 열의 기본값을 설정합니다.
  • CREATE INDEX- 데이터베이스에서 매우 빠르게 데이터를 생성하고 검색하는 데 사용됩니다.

 

 

1. NOT NULL 제약조건

 

기본적으로 열은 NULL 값을 보유할 수 있습니다.

NOT NULL 제약 조건은 열이 NULL 값을 허용하지 않도록 합니다.

 

NOT NULL 예시

 

2. UNIQUE 제약조건

중복값 불가

 

UNIQUE 제약조건은 테이블당 많은 제약 조건을 가질 수 있지만,  

PRIMARY KEY제약조건은 테이블당 하나의 제약 조건만 가질 수 있습니다.

 

3. PRIMARY KEY 제약 조건

 

기본키라고 부른다.

NOT NULL + UNIQUE 라고 생각하면 된다.

테이블은 하나의 기본 키만 가질 수 있습니다.

 

MYSQL 기본키 예시

 

다른 디비 예시

 

 

4. FOREIGN KEY 제약조건

 

테이블 간의 참조(링크) 키이다.

외래 키가 있는 테이블을 자식 테이블이라고 하고

기본키(primary key)가 있는 테이블을 참조 또는 부모 테이블이라고 합니다.

 

 

 

 

 

"Orders" 테이블의 "PersonID" 열은 "Persons" 테이블의 "PersonID" 열을 가리킵니다.

"Persons" 테이블의 "PersonID" 열은 PRIMARY KEY "(부모테이블)

"Orders" 테이블의 "PersonID" 열은 FOREIGN KEY "(자식테이블)

 

MYSQL에서는 REFERENCES 키워드를 사용한다.

FOREIGN KEY MYSQL 예시

 

5. CHECK 제약조건

CHECK 제약 조건은 열에 배치할 수 있는 값 범위를 제한하는 데 사용됩니다.

 

체크 제약조건 예시

 

6. DEFAULT 제약조건

 

기본값을 설정하는 데 사용한다.

 

디폴트 제약조건 예시

 

7.CREATE INDEX  ~ ON 문

 

테이블에 인덱스를 만드는 데 사용한다.

인덱스는 다른 경우보다 더 빨리 데이터베이스에서 데이터를 검색하는 데 사용됩니다.

사용자는 인덱스를 볼 수 없으며 검색/쿼리 속도를 높이는 데만 사용됩니다.

 

 

CREATE INDEX 신택스

테이블에 인덱스를 생성합니다. 중복 값이 ​​허용됩니다.

 

CREATE UNIQUE INDEX 구문

CREATE UNIQUE INDEX  신택스

 

테이블에 고유 인덱스를 생성합니다. 중복 값은 허용되지 않습니다.

 

 

 

자동순번 (DB 별로 정리)

 

새 레코드가 테이블에 삽입될 때 고유 번호가 자동으로 생성됩니다.

새 레코드가 삽입될 때마다 자동으로 생성하려는 기본키(PRIMARY KEY) 필드인 경우가 많습니다.

 

 

MYSQL

 

MySQL은 AUTO_INCREMENT키워드를 사용하여 자동 증가 기능을 수행합니다.

기본적으로 시작 값 AUTO_INCREMENT은 1이며 각 새 레코드에 대해 1씩 증가합니다.

MySQL은   AUTO_INCREMENT키워드 예시

 

 

시퀀스가 다른 값으로 시작 되도록 하려면 AUTO_INCREMENT다음 SQL 문을 사용하십시오.

100부터 시작

 

 

자동 순번 열에는 INSERT INTO 시 생략가능하다.

자동순번 적용 테이블 인서트 예시

 

SQL Server

 

MS SQL Server는 IDENTITY키워드를 사용하여 자동 증분 기능을 수행합니다.

 

IDENTITY 시작 값은 1이며 새 레코드마다 1씩 증가합니다.

IDENTITY(시작값, 증가값)

"Personid" 열이 값 10에서 시작하고 5씩 증가하도록 지정하려면 값을 IDENTITY(10,5)

SQL Server 자동순번 예시

 

자동 순번 열에는 INSERT INTO 시 생략가능하다.

 

예시

 

MS Access

 

MS Access는 AUTOINCREMENT키워드를 사용하여 자동 증분 기능을 수행합니다.

 

기본적으로 시작 값 AUTOINCREMENT은 1이며 각 새 레코드에 대해 1씩 증가합니다.

 "Personid" 열이 값 10에서 시작하고 5씩 증가하도록 지정하려면 자동 증가를 AUTOINCREMENT(10,5)

 

 

MS Access 자동순번 예시

 

 

자동 순번 열에는 INSERT INTO 시 생략가능하다.

 

MS Access insert 예시

 

Oracle

Oracle에서는 코드가 조금 더 까다롭습니다.(오라클이 좀 독특하다.)

CREATE SEQUENCE 구문을 사용

시퀀스 객체로 자동 순번 필드를 만들어야 합니다

 

oracle 시퀀스 객체 생성

 

위의 코드는 1부터 시작하여 1씩 증가하는 seq_person이라는 시퀀스 객체를 생성합니다.

또한 성능을 위해 최대 10개의 값을 캐시합니다. 

캐시 옵션은 더 빠른 액세스를 위해 얼마나 많은 시퀀스 값을 메모리에 저장할지 지정합니다.

 


자동 순번 insert into 삽입 시 nextval 함수를 사용해야한다.

 

oracle 자동순번 insert

 

SQL 날짜

 

데이터에 날짜 부분만 포함되어 있으면 쿼리가 예상대로 작동합니다. 

그러나 시간 부분이 관련되면 더 복잡해집니다.

 

 

MySQL 은 데이터베이스에 날짜 또는 날짜/시간 값을 저장하기 위한 다음 데이터 유형과 함께 제공됩니다.

  • DATE- YYYY-MM-DD 형식 (보통 이걸 많이씀)
  • DATETIME- 형식: YYYY-MM-DD HH:MI:SS
  • TIMESTAMP- 형식: YYYY-MM-DD HH:MI:SS
  • YEAR- YYYY 또는 YY 형식

 

 

SQL Server 는 데이터베이스에 날짜 또는 날짜/시간 값을 저장하기 위한 다음 데이터 유형과 함께 제공됩니다.

  • DATE- YYYY-MM-DD 형식 (보통 이걸 많이씀)
  • DATETIME- 형식: YYYY-MM-DD HH:MI:SS
  • SMALLDATETIME- 형식: YYYY-MM-DD HH:MI:SS
  • TIMESTAMP- 형식: 고유 번호

 

마리아 DB는 NOW() 

오라클 DB는 SYSDATE()

현재 시간 적용 함수다. 

 

'DB > SQL' 카테고리의 다른 글

SQL INJECTION  (0) 2022.12.27
SQL VIEW  (0) 2022.12.27
SQL 데이터베이스  (0) 2022.12.26
SQL 저장 프로시저  (0) 2022.12.23
여러가지 SQL 명령문  (0) 2022.12.23

+ Recent posts