Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
Tags
- 백준 4949번
- 지네릭스
- 백준 5525번
- 정리
- 모두의네트워크
- 문자열
- 자바
- SQL
- 백준 4358 자바
- 리액트 네이티브 프로젝트 생성
- 리액트 네이티브
- 데베
- 백준 4358번
- 깃허브 로그인
- 깃허브 토큰 인증
- 스터디
- 머신러닝
- HTTP
- 데이터베이스
- 모두를위한딥러닝
- 네트워크
- 모두의 네트워크
- 백준
- 팀플회고
- 모두를 위한 딥러닝
- 리액트 네이티브 시작하기
- React Native
- 깃 터미널 연동
- 딥러닝
- 깃 연동
Archives
- Today
- Total
솜이의 데브로그
25-27강 ) DB 객체, 테이블 작성/삭제/변경,작성 제약 본문
Reference : SQL 첫걸음
25강) 데이터베이스 객체
1. 데이터베이스 객체
- 데이터베이스 객체란 테이블이나 뷰, 인덱스 등 데이터베이스 내에 정의하는 모든 것을 일컫는 말이다.
- 객체는 데이터베이스 내에 실체를 가지는 어떤 것을 말한다.
- 이름은 붙일 때는 다음과 같은 제약사항을 따른다.
- 기존 이름이나 예약어와 중복하지 않는다.
- 숫자로 시작할 수 없다.
- 언더스코어(_) 이외의 기호는 사용할 수 없다.
- 한글을 사용할 때는 더블쿼트로 둘러싼다.
- 시스템이 허용하는 길이를 초과하지 않는다.
- 의미 없는 이름을 붙이지 않도록 한다.
2. 스키마
- 데이터베이스 객체는 스키마 안에 만들어진다.
- 따라서 객체의 이름이 같아도 스키마가 서로 다르면 상관 없다.
- 스키마는 SQL 명령의 DDL을 이용해 정의한다.
- 스키마나 테이블은 네임스페이스이기도 하다.
26강) 테이블 작성, 삭제, 변경
1. 테이블 작성
- CREATE 로 작성
- CREATE TABLE에 이어 작성하고 싶은 테이블의 이름 지정.
- 테이블명 뒤에 괄호로 묶어 열을 지정
-
CREATE TABLE 테이블명( 열 정의1, 열 정의2, ... )
- 열 자료형은 INTEGER나 VARCHAR 등을 지정
- CHAR, VARCHAR같은 문자열형으로 지정해 최대길이를 괄호로 묶는다.
- 기본값 설정 시 DEFAULT로 지정해 자료형에 맞는 리터럴로 기술
- NULL 허용 여부 지정.
Ex)
CREATE TABLE sample62(
no INTEGER NOT NULL,
a VARCHAR(30),
b DATE);
2. 테이블 삭제
- DROP TABLE 명령을 사용해 필요 없는 테이블은 삭제한다.
- 명령 실행 시 많은 데이터베이스가 확인을 요구하지 않는다. 따라서 신중하게 실행하는 것이 좋다.
데이터 행 삭제
- 테이블 정의는 그대로 둔 채 데이터만 삭제할 때는 DELETE 명령어를 사용한다.
- WHERE 조건을 지정하지 않으면 테이블의 모든 행 삭제
- DELETE 명령은 행 단위로 여러가지 내부처리가 일어나므로 삭제할 행이 많으면 처리 속도가 늦어진다.
- 이런 경우 DDL로 분류되는 TRUNCATE TABLE 명령을 사용한다.
- TRUNCATE TABLE 명령 사용 시 삭제할 행을 지정할 수 없고, WHERE 구를 지정할 수 없지만 모든 행을 삭제할 때 빠른 속도로 삭제 가능하다.
TRUNCATE TABLE 테이블명
3. 테이블 변경
- 테이블 변경은 ALTER TABLE 명령을 통해 가능하다.
- 테이블 작성 뒤 열을 추가하거나 데이터 최대길이 변경 등 구성을 바꿔야하는 경우 사용
- ALTER TABLE 명령을 사용하면 테이블에 저장되어 있는 데이터는 그대로 남긴 채 구성만 변경.
열 추가
- ALTER TABLE에서 열 추가 시 ADD 하부 명령을 통해 실행할 수 있다.
- 열 정의는 CREATE TABLE의 경우와 동일
- 열 이름과 자료형을 지정하고 필요에 따라 기본값과 NOT NULL 제약을 지정
- 열 추가 시, 기존 데이터행이 존재하면 추가한 열의 값이 모두 NULL 이 된다. (기본값 존재하면 기본값으로 저장)
- NOT NULL 제약이 걸린 열을 추가할 때는 기본값을 지정해야한다.
Ex)
ALTER TABLE sample62 ADD newcol INTEGER;
열 속성 변경
- 열 속성 변경 시 MODIFY 하부명령을 실행한다.
- MODIFY로 열 이름을 변경할 수는 없지만, 자료형이나 기본값, NOT NULL 제약 등의 속성은 변경할 수 있다.
- 열 정의는 CREATE TABLE과 동일
- 기존 데이터 행이 존재하는 경우 속성 변경에 따라 데이터 역시 변환된다.
- 처리 과정에서 에러가 발생하면 ALTER TABLE 명령은 실행되지 않는다.
Ex)
ALTER TABLE smaple62 MODIFY newcol VARCHAR(20);
열 이름 변경
- CHANGE 하부 명령으로 시행
- 열 이름을 변경할 때는 MODIFY가 아닌 CHANGE를 사용.
- CHANGE는 열 이름 뿐만 아니라 열 속성도 변경할 수 있다.
- Oracle에서는 열 이름을 변경할 경우 RENAME TO 하부명령을 사용한다.
Ex)
ALTER TABLE sample62 CHANGE newcol c VARCHAR(20);
열 삭제
- DROP 하부 명령을 사용한다.
- DROP 뒤에 삭제하고 싶은 열명을 지정.
- 테이블에 존재하지 않는 열이 지정되면 에러 발생.
Ex)
ALTER TABLE sample62 DROP c;
4. ALTER TABLE로 테이블 관리
최대 길이 연장
- 열의 자료형은은 처음 CREATE TABLE을 실행할 때 결정된다.
- 이 최대 길이를 ALTER TABLE을 실행해 늘릴 수 있다.
-
ALTER TABLE sample MODIFY col VARCHAR(30)
반대로 저장 공간을 늘리기 위해 최대길이를 줄이고 싶은 경우 여러가지 문제가 발생한다.
기존의 행에 존재하는 데이터의 길이보다 작게 지정할 수는 없다. (이미 저장된 데이터의 일부가 잘려나가므로 에러 발생)
열 추가
- 시스템 기능 확장 등 여러 이유로 테이블에 열을 추가하는 경우
-
ALTER TABLE smaple ADD new_col INTEGER
- 변경한 테이블에 행을 추가하는 INSERT 명령을 확인하는 것이 좋다.
- 기존 시스템의 INSERT 명령에서 열 지정이 생략되어 있는 경우 에러 발생
27강 ) 제약
1. 테이블 작성시 제약 정의
- CREATE TABLE로 테이블을 작성할 때 제약을 같이 정의한다.
Ex) 테이블 열에 제약 정의하기
CREATE TABLE sample631 (
a INTEGER NOT NULL,
b INTEGER NOT NULL UNIQUE,
c VARCHAR(30)
);
- 위 처럼 열에 대해 정의하는 제약을 열 제약이라 한다.
Ex) 테이블에 '테이블 제약' 정의하기
CREATE TABLE sample632(
no INTEGER NOT NULL,
sub_no INTEGER NOT NULL,
name VARCHAR(30),
CONSTRAINT pkey_sample (no, sub_no)
);
- 복수열에 의한 기본키 제약처럼 한 개의 제약으로 복수의 열에 제약을 설명하는 경우를 '테이블제약'이라 한다.
- 제약에 이름에 CONSTRAINT 키워드를 사용해 이름을 붙여 관리할 수 있다.
2. 제약 추가
열 제약 추가
- 열 제약을 추가할 경우 ALTER TABLE로 열 정의를 변경할 수 있다.
- 기존의 테이블을 변경할 경우 제약을 위반하는 데이터가 있는지 먼저 검사.
-
ALTER TABLE sample631 MODIFY c VARCHAR(30) NOT NULL;
테이블 제약 추가
- 테이블 제약은 ALTER TABLE의 ADD 하부 명령으로 추가할 수 있다.
- 제약을 추가할 때와 마찬가지로 기존의 행을 검사해 추가할 제약을 위반하는 데이터가 있으면 에러가 발생한다.
-
ALTER TABLE sample631 ADD CONSTRAINT pkey_sample631 PRIAMRY KEY(a);
3. 제약 삭제
- 열 제약의 경우, 제약을 추가할때와 동일하게 열 정의를 변경.
- 테이블 제약은 ALTER TABLE의 DROP 하부명령으로 삭제할 수 있다. 삭제할 때는 제약명을 지정한다.
-
ALTER TABLE sample631 DROP CONSTRAINT pkey_sample631;
- 기본키는 테이블당 하나만 설정할 수 있기 때문에 굳이 제약명을 지정하지 않고도 삭제할 수 있다.
-
4. 기본키
예제 테이블
CREATE TABLE sample634(
p INTEGER NOT NULL,
a VARCHAR(30),
CONSTRAINT pkey_sample634 PRIMARY KEY(p)
);
- 위의 예시에서 sample634가 테이블의 기본키이다.
- 기본키로 지정할 열은 NOT NULL 제약이 설정되어 있어야 한다.
- 기본키는 테이블의 행 한개를 특정할 수 있는 검색키이다.
- 즉, 기본키로 설정된 열이 중복하는 데이터 값을 가지면 제약에 위반된다.
- UPDATE 명령을 실행할 때도 제약을 위반하는 값이 없는지 검사한다.
★ 기본키 제약 : 열을 기본키로 지정해 유일한 값을 가지도록 하는 구조
행이 유일성을 필요로 한다는 의미로 '유일성 제약' 이라고도 한다.
복수의 열로 기본키 구성하기
- 기본키 제약에는 이를 구성할 열 지정이 필요하다.
- 지정된 열은 NULL 값을 허용하지 않음.
- 기본키를 구성하는 열은 복수라도 상관 없다.
- 키를 구성하는 모든 열을 사용해 중복하는 값이 있는지 없는지를 검사.
'CS > Database' 카테고리의 다른 글
28-30강 ) 인덱스, 뷰 (0) | 2021.12.05 |
---|---|
8장 ) 테이블 설계(2) (0) | 2021.12.05 |
8장 ) 테이블 설계(1) (0) | 2021.11.28 |
23,24강 ) 서브쿼리, 상관 서브쿼리 (0) | 2021.11.14 |
7장 ) 트랜잭션과 동시성 제어 (0) | 2021.11.14 |