Oracle SQL(1)
1. 자료형
문자형 char, varchar
char(n)
- 고정길이 문자
- 1바이트의 문자열이 할당 되더라도 10바이트 전부를 사용함
- 사용된 사이즈를 계산할 필요가 없어 속도는 빠르지만, 메모리 낭비가 심함
- 주민번호, 우편번호, 계좌번호 등
- 예) char(5) → ‘SKY ‘
varchar(n)
- 가변길이 문자
- 1바이트를 사용하면 나머지 9바이트는 재사용 가능함
- 사용된 사이즈를 계산해야 함으로 속도가 느리지만, 메모리 절약에 좋음
- 게시판 제목, 아이디, 비번, 이름 등
- 예) varchar(5) → ‘SKY’
숫자형 int (정수형)
수업시간에 숫자 자료형을 int형으로만 사용해서 다른 자료형이 어떤것이 있는지 궁금해서 서칭한 결과, 오라클DB에는 'int' 라는 키워드의 자료형이 없다고 한다.(integer 키워드는 있는데 잘 안쓴다고 한다)
데이터의 타입을 확인할 수 있는 파일로 들어가서 확인해보니 number(38,0) 이라고 자동 인식 되어있다.
오라클 디벨롭퍼 프로그램이 여러 언어사용이 가능하다보니 int로 입력해도 알아서 인식할 수 있게 만들었나보다.
→ 찾아보니 정수형의 키워드를 자료형으로 넣어도 오라클에서 number로 자동인식한다고 한다.
number
- 38자리 숫자 저장됨, 22byte 가변길이 타입
- 고정소수점 방식
- NUMBER(P, S)S(scale): 실수의 소수자리 s개 만큼만 반환, s개 아래 소수자리는 반올림
- P(precision: 정밀도): 최상위 유효 자릿수는 0이 아닌 가장 왼쪽 자릿수고, 최하위 유효 자릿수는 가장 오른쪽 자릿수
고정 소수점 방식이란?
→ 특정위치에 소수점을 고정해놓고 그 앞자리에는 실수의 정수부를 뒷자리에는 실수의 소수부를 나타내는 방식
[예시]
입력값 타입 저장되는 값
입력값 | 타입 | 저장되는 값 |
123.89 | NUMBER | 123.89 |
123.89 | NUMBER(3) | 124 |
123.89 | NUMBER(3,2) | exceeds precision |
123.89 | NUMBER(4,2) | exceeds precision |
123.89 | NUMBER(5,2) | 123.89 |
123.89 | NUMBER(6,1) | 123.9 |
123.89 | NUMBER(6,-2) | 100 |
0.01234 | NUMBER(4,5) | 0.01234 |
0.00012 | NUMBER(4,5) | 0.00012 |
0.000127 | NUMBER(4,5) | 0.00013 |
0.0000012 | NUMBER(2,7) | 0.0000012 |
0.00000123 | NUMBER(2,7) | 0.0000012 |
1.20E-04 | NUMBER(2,5) | 0.00012 |
1.20E-05 | NUMBER(2,5) | 0.00001 |
날짜형
date
- 구분기호 - 와 / 기호를 사용함
- 문자열 타입으로 입력함
빨간색으로 써놓은 번호 순으로 읽고 동작함
2. CRUD
✅create
table&column 생성
CREATE TABLE [table명]
row 추가
INSERT INTO [table명(colum)] VALUES [(colum에 들어갈 row 데이터값)]
✅Read
데이터 조회의 제한, 데이터 조회 방법
⭐키워드 오는 순서 알고있기
[오늘 배운 키워드]
select, from, as, count, where, not
SELECT
[ALL | DISTINCT | DISTINCTROW ]
[HIGH_PRIORITY]
[STRAIGHT_JOIN]
[SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT]
[SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS]
select_expr [, select_expr] ...
[into_option]
[FROM table_references
[PARTITION partition_list]]
[WHERE where_condition]
[GROUP BY {col_name | expr | position}, ... [WITH ROLLUP]]
[HAVING where_condition]
[WINDOW window_name AS (window_spec)
[, window_name AS (window_spec)] ...]
[ORDER BY {col_name | expr | position}
[ASC | DESC], ... [WITH ROLLUP]]
[LIMIT {[offset,] row_count | row_count OFFSET offset}]
[into_option]
[FOR {UPDATE | SHARE}
[OF tbl_name [, tbl_name] ...]
[NOWAIT | SKIP LOCKED]
| LOCK IN SHARE MODE]
[into_option]
into_option: {
INTO OUTFILE 'file_name'
[CHARACTER SET charset_name]
export_options
| INTO DUMPFILE 'file_name'
| INTO var_name [, var_name] ...
}
✅alter
테이블의 구조 수정 및 변경
1. 컬럼 추가
ALTER TABLE [table명] ADD [(컬럼명 데이터타입)];
2. 컬럼명 수정
ALTER TABLE [table명] RENAME COLUMN [원래컬럼명] TO [바꿀컬럼명];
3. 컬럼 데이터 타입 수정
ALTER TABLE [table명] MODIFY[(컬럼명 데이터타입)];
4. 컬럼 삭제
ALTER TABLE [table명] DROP[(컬럼명)];
✅update
값 변경
update ~ set ~ where 키워드 사용
예) 칼럼3의 값6을 업데이트할 때
칼럼1 | 칼럼2 | 칼럼3 |
값1 | 값3 | 값5 |
값2 | 값4 | 값6 |
UPDATE [table명] SET [칼럼3] = [값6] WHERE [칼럼1] = [값2]
✅drop
table 삭제
drop 키워드 사용 → 주의해서 사용해야함
DROP TABEL [table명];
✅delete
row 삭제
table&column의 구조는 그대로 있음
DELETE FROM [테이블명];