[Oracle] 일반 테이블 생성
create 문으로 만들 수 있는 데이터베이스의 오브젝트
1. table : 데이터베이스에 데이터를 저장하는 기본 저장소
2. view : 복잡한 쿼리를 간단하게 엑세스 하기 위한 db object
3. index : 대용량 데이터에서 특정 데이터의 검색을 빠르게 할 수 있는 db object
4. sequence : 번호 생성기
5. synonym : 동의어 (예: 핸드폰 기계는 하나인데 번호가 2개인 경우)
create table 다음에 테이블명을 적으면 되는데, 테이블명을 지을 때는 반드시 문자로 시작해야 한다.
그리고 테이블명의 길이는 30자를 넘을 수 없고, 특수문자는 $, _, # 만 포함할 수 있다.
컬럼명 다음에는 데이터 유형을 기술하는데, 데이터 유형이 3가지가 있다.
- 문자형 : char, varchar, long, clob, blob
- 숫자형 : number
- 날짜형 : date
number(10) : 숫자를 10자리 허용하겠다.
number(10,2) : 숫자를 10자리 허용하는데, 10자리 중 2자리는 소수점 자리로 쓰겠다. (예: 292.32)
varchar2(10) : 문자를 10자리 허용하겠다. (영어 철자 10개를 허용하겠다. 한글 5개를 허용하겠다.)
date : 날짜형 데이터 유형으로 날짜를 9999/12/31 까지 입력할 수 있다.
char 와 varchar2 의 차이점
char | varchar2 | |
데이터 유형 | 문자형 | 문자형 |
특징 | 고정형 | 가변형 |
허용 길이 | 2000 | 4000 |
char 는 데이터를 입력하고 남은 공간을 회수하지 않는다.
varchar2 는 데이터를 입력하고 남은 공간을 회수하여 저장 공간 낭비가 생기지 않게 한다.
long 과 clob 의 차이점
long 과 clob 은 아주 큰 텍스트 데이터를 입력할 때 사용하는 데이터 유형이다.
long 은 최대 2gb 까지 문자 데이터를 저장할 수 있고, clob 은 최대 4gb 까지 저장할 수 있다.
예제 1. 사원 번호, 이름, 월급, 입사일을 저장하는 테이블을 생성
create table emp93
( empno number(10),
ename varchar2(10),
sal number(10,2),
hiredate date );
예제 2. 보이스 피싱 테이블의 한글 텍스트를 어절 별로 나눈 테이블 생성
create table voice_text
as
select regexp_substr(voice_text, '[^ ]+', 1, num) as word
from voice v, ( select level as num
from dual
connect by level <= 100 );
예제 3. 보이스 피싱 범인 목소리 텍스트에는 긍정 단어가 많은지 부정 단어가 많은지 확인
create table positive_kor
( p_text varchar2(2000) );
create table negative_kor
( n_text varchar2(2000) );
select count(*)
from voice_text v
where exists ( select *
from positive_kor p
where p.p_text = v.word );
select count(*)
from voice_text v
where exists ( select *
from negative_kor n
where n.n_text = v.word );
voice_text 의 어절을 제일 처음부터 하나씩 서브 쿼리의 v.word 에 넣고 존재하는지 확인한다.
그래서 존재하면 출력이 되고, 존재하지 않으면 출력이 되지 않는다.
컬럼 변경하는 alter 명령어
1. 컬럼 추가
alter table 테이블명
add 컬럼명 데이터타입;
2. 컬럼 삭제
alter table 테이블명
drop column 컬럼명;
3. 컬럼 변경 : 컬럼의 길이를 늘릴 때 사용
alter table 테이블명
modify 컬럼명 데이터타입;
4. 컬럼 이름 변경
alter table 테이블명
rename column 이전 컬럼명 to 새로운 컬럼명;