Back-End/Database

Oracle SQL(1)

newny 2023. 2. 22. 20:51
반응형

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 [테이블명];

반응형