쌍용교육센터에서 공부한 내용을 정리하며 기록하는 글이고 주관적인 생각이 들어갈 수 있습니다.
잘못된 내용이나 피드백 및 생각 공유는 언제든 환영입니다.
댓글로 남겨주시면 확인 후 수정하겠습니다.
내용에 대한 소스 코드는 https://github.com/2jaehoon/ssangyonng.git에 올려두었습니다.
외래키 ( foreign key )
- 부모 테이블에 존재하는 컬럼 값으로만 컬럼을 추가해야 할 때
- 테이블의 관계가 설정된다.( 부모-자식관계 )
- null을 허용한다. ( 값이 없을 수도 있지만 값이 있다면 부모테이블의 컬럼 값으로만 존재 )
- 하나의 테이블은 여러 개의 FK를 가질 수 있다.
- user_constraints DD에서 constraint_type이 ‘R’ 로 설정된다.
- 문법
컬럼 단위
create table 테이블명(
컬럼명 데이터형(크기) constraint fk_테이블명_컬럼명 references 부모테이블명(컬럼명)
on delete cascade,
... ,
...
);
-- on delete cascade : 부모 테이블의 레코드가 삭제되면
-- 자식 테이블의 레코드가 자동으로 삭제되는 옵션
테이블 단위
create table 테이블명(
컬럼명 데이터형(크기)
... ,
... ,
constraint fk_테이블명_컬럼명 foreign key(적용 컬럼명) references 부모테이블명(컬럼명)
on delete cascade
);
ERD 예시
- 학생 테이블( 학번, 이름, 이메일, 전화번호, 주소, 입력일 )
- 시험점수 테이블( 학번, 과목코드, 과목명, 점수, 시험일자 )
학생은 시험을 반드시 봐야 하는데 여러 과목을 시험 볼 수 있고
같은 과목은 한번만 시험 볼 수 있다.
- 회원테이블 ( 아이디, 이름, 입력일 )
- 배송지 테이블( 아이디, 배송지명, 우편번호, 주소 )
한 회원은 여러 개의 배송지를 가질 수 있다.
unique
- 값이 없을 수도 있지만, 있다면 유일해야 할 때 ( 카드번호, 이메일... )
- 테이블에서는 여러 개의 unique를 정의할 수 있다.
- user_constraints DD에서 constraint_type이 'U'로 설정된다.
- 문법
컬럼 단위
create table 테이블명(
컬럼명 데이터형( 크기 ) constraint ux_테이블명_컬럼명 unique,
... ,
...
);
테이블 단위
create table 테이블명(
컬럼명 데이터형( 크기 ),
... ,
... ,
constraint ux_테이블명_컬럼명 unique( 적용 컬럼 )
);
Check 조건
- 개발자가 원하는 형태의 값을 받을 때 사용
- 컬럼 단위, 테이블 단위 제약 사항을 설정할 수 있다.
- 주로 제약 사항명을 생략하여 사용
- user_constraints DD에서 constraint_type이 'C'로 설정된다.
- 문법
컬럼단위
create table 테이블명(
컬럼명 데이터형(크기) constraint 제약사항명 check ( 조건 )
-- (constraint 제약사항명)은 주로 생략
-- 조건 : 자신의 컬럼만 가능하고 다른 컬럼을 조건에 넣을 수 없다.
);
테이블 단위
create table 테이블명 (
컬럼명 데이터형( 크기 ),
... ,
constraint 제약사항명 check ( 조건 )
);
not null 조건
- 컬럼의 값을 반드시 입력 받아야할 때
- 제약 사항명을 설정할 수 없다.
- 컬럼 단위 제약 사항으로만 적용할 수 있다.
- user_constraints DD에서 constraint_type이 'C'로 설정된다.
- 문법
컬럼 단위
create table 테이블명(
컬럼명 데이터형( 크기 ) not null
);
default
- 컬럼에 null이 입력되는 상황에서 설정한 값으로 입력하고 싶을 때
- 제약사항이 아니어서 user_constraints DD에 들어가지 않는다.
- user_tab_column DD나 user_tab_cols DD에서 확인한다.
- 문법
create table 테이블명(
컬럼명 데이터형( 크기 ) default null일 때 입력될 값
);
alter
- DDL
- 테이블 관리( 테이블명 변경, 컬럼의 데이터형 변경, 컬럼명 변경, 컬럼 추가 및 삭제 )
- 제약사항 관리( 제약 사항 추가 및 삭제, 제약 사항 활성화 및 비활성화 )
- 계정 관리( 계정 비밀번호를 변경, 계정을 잠그거나 열 수 있다. )
* 테이블 관리
컬럼 추가
alter table 테이블명 add 컬럼명 데이터형( 크기 ) 제약사항;
컬럼 삭제
alter table 테이블명 drop column 컬럼명;
컬럼 데이터 변경
레코드 존재 O : 동일 데이터형에서 크기 증가만 가능
레코드 존재 X : 형 자체를 변경할 수 있다.
alter table 테이블명 modify 컬럼명 데이터형 ( 크기 ) 제약사항;
컬럼명 변경
alter table 테이블명 rename column 이전컬럼명 to 변경할컬럼명;
테이블명 변경
rename 원본테이블명 to 변경할테이블명;
* 제약사항 관리
제약사항 추가 ( 테이블 단위 제약 사항 문법 )
레코드의 구성상 제약사항이 추가되지 않을 수도 있다.
alter table 테이블명 add
constraint 제약사항명 제약사항종류 ( 적용 컬럼 );
제약사항 삭제
alter table 테이블명 drop constraint 제약사항명;
제약사항 활성화
alter table 테이블명 enable constraint 제약사항명;
-- 레코드의 구성상 제약사항이 활성화되지 않을 수도 있다.
제약사항 비활성화
alter table 테이블명 disable constraint 제약사항명;
* 계정관리
비밀번호 변경
관리자 계정은 모든 계정의 비밀번호를 변경할 수 있다.
일반 계정은 자신의 비밀번호만 변경할 수 있다.
alter user 계정명 indentified by 비번;
계정 잠그기, 열기( 관리자 계정만 가능 )
-- 잠금
alter user 계정명 account lock;
-- 열기
alter user 계정명 account unlock;
'성장 일기 > 쌍용교육센터' 카테고리의 다른 글
0131/계정 권한, 백업 및 복원, view (0) | 2023.01.31 |
---|---|
0130/시퀀스, 조인, 정규화 (0) | 2023.01.30 |
0126/집계함수 (0) | 2023.01.26 |
0125/집계함수 (0) | 2023.01.25 |
0120/DBMS 함수 (0) | 2023.01.20 |