DB

DB 설계

스물훈 2020. 5. 8. 15:42

**DDL(Data Definition Language)
=>데이터 구조와 관련된 SQL - 관리자의 언어

 

1.오라클의 기본 자료형

숫자: number(전체자릿수, 소수자릿수)

- 소수 자리수는 생략하면 0

- 전체 자리수를 생략하면 38

 

문자열

- char(자릿수): 고정된 크기의 문자열

- varchar2(자릿수): 가변 문자열

- clob: 긴 문자열

- 한글 1글자는 3자리를 확보해야함

- 자릿수를 한번 정하면 이 자릿수보다 큰 데이터는 저장이 안됨

 

날짜 및 시간

- date

 

파일의 내용

- blob

 

테이블 생성

create table 테이블명(

          열이름 자료형 제약조건,

          ...

);

 

ex1) 게시판 테이블

글번호 - 정수

제목 - 문자열

작성자 - 문자열

작성일 - 날짜

조회수 - 정수 

 

서브 쿼리를 이용한 테이블 생성

create table 테이블명

as

select 구문

 

ex2) emp 테이블의 데이터를 복사해서 새로운 emp01 테이블을 생성

 

ex3) emp의 구조만 복사해서 emp02생성

- 구조만 복사하고자 할 때는 where절에 무조건 거짓인 조건을 설정해서 데이터가 1개도 조회되지 않도록 하면 됨.

 

1) 열을 추가

alter table 테이블이름

add(컬럼이름 자료형 제약조건)

기존 테이블에 열 추가

2) 열의 자료형 변경

alter table 테이블명

modify(컬럼이름 자료형 제약조건);

- 기존의 데이터가 존재하는 경우 자료형이나 크기를 변경하는 것은 기존 데이터에 손실이 발생할 수 있음

- 무조건 변경되는것은 아님

varchar -> char로 변경

3) 열삭제

alter table 테이블명

drop coliumn 열이름;

- 문법적으로 이상이 없는 경우에도 삭제가 안되는 경우가 있을 수 있다.

   다른 테이블에서 이 열의 값을 참조하는 경우에는 삭제가 안됨

boardcontent 열 삭제

4) 서비스 중 열을 삭제하는 경우

- db가 서비스 되고 있는 상태에서 열을 삭제하는것은 권장하지 않음.

   lock이 설정되서 다른 곳에서 이 db에 작업을 수행할 수 없음

- 이런 경우 db에 열을 사용하지 못하도록 해놓고 나중에 삭제하는 방법을 권장

 

사용 중지

-> alter table 테이블명

     set unused(열이름);

 

중지 중인 열을 삭제

-> alter table 테이블명

     drop unused columns;

 

테이블 삭제

drop table 테이블명

* 다른 테이블에서 데이터 참조중이면 삭제 안됨

 

테이블에서 데이터만 삭제

truncate table 테이블명

 

테이블 이름 변경

rename 전이름 to 새이름

 

DML

- 데이터를 삽입, 삭제, 갱신하는 명령어

 

2. 데이터 삽입

1) 컬럼 이름을 기재해서 삽입

insert into 테이블이름(열이름 나열)

values(값을 나열)

 

2) 열이름을 생략하고 나열

- 테이블을 만들때 사용한 순서대로 데이터를 대입

 

3) null 삽입

- 값에 직접 null이라고 입력해도 되고 ''만 해도 됨.

- 데이터를 삽입할 때 열 이름을 제외하고 삽입하면 기본값이 삽입됨

 

3. 데이터 수정

update 테이블이름

set 수정할 열 이름 = 계산식이나 값

where 조건;

-> where를 생략하면 테이블의 모든 데이터가 수정됨

4. 데이터 삭제

delete from 테이블명

where 조건;

- 조건이 있으면 조건에 맞는 데이터만 삭제하고 없으면 모든 데이터 삭제

*truncate는 롤백이 안되고 얘는 됨.