[DB] 데이터타입의 종류

박정현·2023년 10월 26일
0

💽 데이터베이스

목록 보기
2/11
post-thumbnail

1. 데이터 타입

  • 데이터 타입이란 컬럼이 저장되는 데이터 유형을 말한다.
  • 기본 데이터 타입과 사용자 정의 데이터 타입으로 구분
  • 기본 데이터 타입은 문자형, 실수, 소수, 자료형 등의 여러 데이터를 식별하는 타입이다.

1) 문자데이터 타입

  • CHAR(n) : 고정길이 문자, 최대 1000byte, 디폴트 값은 1byte,
    • 반드시 입력 데이터길이까지 → 성별: 1(남자), 0(여자)
  • VARCHAR2(n) : 가변길이 문자, 최대 4000byte, 디폴트 값은 1byte
    • 주소, 이름, 전화번호… 대부분의 변동 가능성이 있는 문자데이터는 이걸 씀
  • NCHAR(n) : 고정길이 유니코드 문자(다국어 입력가능), 최대 1000byte, 디폴트 값은 1byte
    • N: 다국어입력가능, 한국어로 변환
  • NVARCHAR(n) : 가변길이 유니코드 문자(다국어 입력가능), 최대 2000byte, 디폴트 값은 1byte
  • LONG : 최대 2GB 크기의 가변길이 문자형
  • CLOB : 대용량 텍스트 데이터 타입(최대 4GB)

[ char와 varchar의 차이 ]

  • char(100)
    • 실제로 10개만 넣었을 때 90개가 남아 있음
    • 원래 크기가 변하지 않음
    • 변동폭이 적을 때 사용한다.
    • 문자 2개 ab를 넣었다고 해서 나중에 ab라고 조회해도 조회되지 않는다.
  • varchar(100)
    • 실제로 10개만 넣었을 때 10개로 변함 → 가변길이이기 때문에
    • 용량을 줄일 수 있지만 시간이 걸릴 수 있다.
    • 문자 2개 ab를 넣었다고 해서 나중에 ab라고 조회해도 조회되지

2) 숫자형 데이터 타입

  • NUMBER: 숫자
  • 대부분 NUMBER형을 사용
  • sysdate: 값에 넣으면 시스템의 기본 날짜가 저장된다.

3) 날짜형 데이터 타입

  • DATE : BC 4712년 1월 1일 부터 9999년 12월 31일, 년, 월, 일, 시, 분, 초 까지 입력가능
  • TIMESTAMP: 년, 월, 일, 시, 분, 초 +밀리초까지 입력가능

4) LOB데이터 타입

  • CLOB : 문자형 대용량 객체 고정길이와 가변길이 문자집합 지원
  • NCLOB : 유니코드를 지원하는 문자형 대요량 객체
  • LOB이란 Large Object의 약자로 대용량 데이터를 저장할 수 있는 데이터 타입
  • 실제는 이미지 주소값 입력

2. Sequence

  • 하나의 규칙이다.
    • 예) 1부터 자동으로 1씩 증가하는 규칙
  • 값을 넣을 때 객체.nextval 하면 된다.
  • 하나의 테이블에 하나의 시퀀스를 만들어야 한다.
  • 시퀀스를 변경하면 충돌이 일어날 수 있으므로 삭제하고 처음부터 다시 만드는 것이 좋다.
CREATE SEQUENCE 시퀀스명
INCREMENT BY 1 --증감값
START WITH 1 --시작값
MINVALUE 1 -- 최소값, 시작값은 최소값보다 작거나 같아야 한다.(작아질 경우)
MAXVALUE 1000 -- 최대값, 시작값은 최소값보다 크거나 같아야 한다.
NOCYCLE -- 반복유무(NOCYCLE 계속증가)
COCADHE -- 임시저장 공간을 할당 유무
-- 하나의 테이블 당 하나의 시퀀스를 만들어야 하므로
-- 중복방지를 위해 먼저 생성할 시퀀스를 삭제해본다.
drop sequence board_id_seq;

create sequence board_id_seq
start with 1 --시작
increment by 1 --1씩 증가
nocycle; --다시 돌지마라(반복하지마라) -> 계속 증가해라

insert into board0616_2(board_id, board_title, board_content, board_writer)
 values(board_id2_seq.nextval, '제목3', '내용3', '글쓴이3');

  • 1부터 1씩 증가하는 것을 볼 수 있다.
  • 정의된 시퀀스조회
    • SELECT * FROM user_sequences; —존재하는 모든 시퀀스 조회
    • 현재 시퀀스 조회: select 시퀀스명.currval from dual;
    • 다음 시퀀스 조회: select 시퀀스명.nextval from dual;
    • dual은 가상테이블이다.

4. count() 함수

테이블에 존재하는 데이터의 개수를 가져오고 싶을 때 사용하는 함수이다.
-select count* from 테이블;
테이블의 전체 행 개수를 가져온다.
-select count(칼럼) from 테이블;
해당 칼럼의 데이터 개수를 가져온다.
-select count(칼럼) as cnt from 테이블;
해당 칼럼의 결과를 cnt라는 이름으로 가져올 수 있다.

profile
개발을 개발괴발하지 않기 위한 노력

0개의 댓글