DB 설계
**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(컬럼이름 자료형 제약조건);
- 기존의 데이터가 존재하는 경우 자료형이나 크기를 변경하는 것은 기존 데이터에 손실이 발생할 수 있음
- 무조건 변경되는것은 아님
3) 열삭제
alter table 테이블명
drop coliumn 열이름;
- 문법적으로 이상이 없는 경우에도 삭제가 안되는 경우가 있을 수 있다.
다른 테이블에서 이 열의 값을 참조하는 경우에는 삭제가 안됨
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는 롤백이 안되고 얘는 됨.