[SQL] 데이터베이스 객체 (1) TABLE

오잉·2023년 7월 3일
0

SQL

목록 보기
1/3
post-thumbnail

1. 데이터베이스 객체

데이터베이스 객체

  • 테이블, 뷰, 인덱스 등 데이터베이스 내에 정의하는 모든 것
  • 객체 : 데이터베이스 내에 실체를 가지는 어떤 것
    (테이블=객체, SQL명령!=객체)
  • 명명규칙
    • 기존 이름이나 예약어와 중복하지 않는다
    • 숫자로 시작할 수 없다
    • 언더스코어(_) 이외의 기호는 사용할 수 없다
    • 한글을 사용할 때는 백쿼트로 둘러싼다

스키마

데이터베이스 객체는 스키마라는 그릇 안에 만들어진다.
-> 객체의 이름이 같아도 스키마가 서로 다르면 상관없다.

DDL

  • 데이터베이스를 정의하는 명령
  • 스키마 내의 객체를 관리할 때 사용
  • CREATE + 객체 : 객체 작성
  • DROP + 객체 : 객체 삭제
  • ALTER + 객체 : 객체 변경

2. TABLE 작성, 삭제, 변경

1) TABLE 생성

CREATE TABLE test (
	no INTEGER NOT NULL,
    a VARCHAR(30),
    b DATE
);
  • 열명 : 열에 붙이는 이름
  • 자료형 : INTEGER, VARCHAR 등
  • 기본값 : DEFAULT (생략 가능)
  • NULL 허용여부
    • NULL 명시적 지정 or 생략 : NULL 허용
    • NOT NULL : NULL 불가

2) TABLE 삭제

DROP TABLE test;

실수로 TABLE을 삭제하지 않도록 DROP TABLE은 신중히!

cf)
DROP TABLE : 테이블 삭제
DELETE : 행 삭제 (WHERE 안 붙이면 모든 행 삭제)
TRUNCATE TABLE : 모든 행 삭제

3) TABLE 변경

열 추가, 삭제, 변경

열 추가

ALTER TABLE test ADD newcol INTEGER DEFAULT 100;
  • 기존 데이터행 존재하면 추가한 열의 값이 모두 NULL
  • 기본값이 지정되어 있으면 기본값으로 데이터 저장
  • NOT NULL 제약을 붙인 열을 추가하고 싶다면 먼저 NOT NULL로 제약을 건 뒤에 NULL 이외의 값으로 기본값 지정
  • (주의) 열 추가시 INSERT 명령 사용하는 곳 체크

열 속성 변경

ALTER TABLE test MODIFY newcol VARCHAR(20);
  • MODIFY로 열 이름은 변경할 수 없지만, 자료형이나 기본값, NOT NULL 제약 등의 속성은 변경할 수 있다
  • 기존 데이터행 존재하면, 열 속성 변경에 따라 데이터도 변환됨
  • 처리과정에서 에러 발생하면 ALTER TABLE 명령 실행되지 않음

열 이름 변경

ALTER TABLE test CHANGE newcol c VARCHAR(20);
  • CHANGE는 열 이름 뿐 아니라 열 속성도 변경 가능

열 삭제

ALTER TABLE test DROP c;
  • DROP뒤에 삭제하고 싶은 열명 지정

3. 제약

테이블에 제약을 설정함으로써 저장될 데이터를 제한할 수 있다.

1) 제약이란

제약은 테이블에 설정하는 것이다.
CREATE TABLE로 테이블을 작성할 때 제약을 같이 정의한다.
또한 ALTER TABLE로 제약을 지정하거나 변경할 수 있다.

열 제약

열에 대해 제약

CREATE TABLE test (
    a VARCHAR(30),
    b INTEGER NOT NULL UNIQUE
);

테이블 제약

한 개의 제약으로 복수의 열에 제약

CREATE TABLE test (
    no INTEGER NOT NULL,
    sub_no INTEGER NOT NULL,
    PRIMARY KEY (no, sub_no)
);

CONSTRAINT : 제약에 이름 붙이기

CREATE TABLE test (
    no INTEGER NOT NULL,
    sub_no INTEGER NOT NULL,
    CONSTRAINT pkey_sample PRIMARY KEY (no, sub_no)
);

2) 제약 추가

기존 테이블에도 나중에 제약을 추가할 수 있다.

열 제약 추가

ALTER TABLE test MODIFY c VARCHAR(20) NOT NULL;
  • ALTER TABLE로 열 정의 변경
  • 기존 테이블에 제약을 위반하는 데이터가 있는지 검사
  • 예시의 경우, 만약 c열에 NULL값이 존재한다면 ALTER TABLE 명령 에러 발생

테이블 제약 추가

ALTER TABLE test ADD CONSTRAINT pkey_sample PRIMARY KEY(a);
  • ALTER TABLE의 ADD로 추가
  • 기존 테이블에 제약을 위반하는 데이터가 있는지 검사

3) 제약 삭제

테이블 제약은 나중에 삭제할 수도 있다.

열 제약 삭제

ALTER TABLE test MODIFY c VARCHAR(20);
  • ALTER TABLE로 열 제약 삭제

테이블 제약 삭제

ALTER TABLE test DROP CONSTRAINT pkey_sample;
  • ALTER TABLE의 DROP으로 삭제
  • 삭제시 제약명 지정
  • 단, 기본키의 경우 굳이 제약명 지정안해도 삭제 가능
    ALTER TABLE test DROP PRIMARY KEY;

4) 기본키

  • 검색키 : 검색할 때의 키워드
    (대량의 데이터에서 원하는 데이터를 찾아낼 때 키가 되는 요소를 지정해 검색)
  • 기본키 : 테이블의 행 한 개를 특정할 수 있는 검색키
  • 기본키 제약(=유일성 제약)
    • 열을 기본키로 지정해 유일한 값을 가지도록
    • 이때 지정된 열은 NOT NULL 제약 필수
    • 복수의 열을 기본키로 지정할 수도 있다

참고

인덱스(index)란?

profile
오잉이라네 오잉이라네 오잉이라네 ~

0개의 댓글