SQL 명령문의 그룹
① DDL : 데이터 정의언어(Data Definition Language) - 데이터베이스 객체인 테이블, 인덱스, 뷰 등의 구성에 영향을 주는 명령문
- DBA(데이터베이스관리자)만이 권한을 갖는다.
- CREATE TABLE, CREATE INDEX, CREATE VIEW, DROP TABLE, DROP INDEX, ALTER
TABLE, RENAME
② DML : 데이터 조작언어(Data Manipulation Language)
- 테이블의 내용을 변경하고 질의하는 명령문
- SELECT, INSERT, UPDATE, DELETE, COMMIT, ROLLBACK, SAVEPOINT, LOCK
③ DCL : 데이터 제어언어(Data Control Language)
- 유저관리와 데이터 보호와 관련된 명령문
- GRANT, ROVOKE, CONNECT, DISCONNECT
데이터 타입
1) 숫자 데이터형
① 정수 데이터형(INT) : int 데이터형은 정수형 데이터(0, 음수, 양수)를 저장
ex) INT(n)
② 실수 데이터형(FLOAT) : 실수 데이터형은 소수점을 포함하여 값을 저장
ex) FLOAT(N, M)
2) 문자 데이터형(CHAR, VARCHAR, BLOB)
①CHAR 데이터형
- 1바이트에서 255바이트까지의 고정 길이 문자열을 저장
- 정의된 저장공간보다 입력 데이터가 짧으면 나머지 공간은 공백(SPACE)으로 -정의된 길이보다
입력 데이터가 길면 길이에 맞게 잘린 데이터가 입력
- 테이블 생성시 저장할 데이터의 최대크기로 정의해야만 데이터의 손실 방지
② VARCHAR 데이터형
- 정의된 저장공간보다 긴 문자열이 입력되면 VARCHAR에서는 에러 값을 리턴
- 최대로 정의할 수 있는 데이터의 길이는 255바이트까지 저장
- 메모 등의 다양한 길이의 데이터에 적절하고, 가변적인 길이의 문자열을 저장
- VARCHAR가 CHAR보다 검색 속도가 훨씬 느리다.
③ BLOB ,TEXT 데이터형
- BLOB와 TEXT는 65,535 이상의 거대한 텍스트 데이터를 저장할 때 사용
- BLOB는 검색시 대소문자를 구분
- TEXT는 대소문자의 구분이 없이 검색
3) 날짜 데이터형
- 날짜 및 시간 데이터를 저장하기 위해서 Date 데이터형을 제공
- SYSDATE이라는 함수를 사용해서 현재 OS의 날짜를 조회
mysql> select now();
+---------------------+
| now() |
+---------------------+
| 2007-09-07 15:03:35 |
+---------------------+
1 row in set (0.03 sec)
- select는 산술 계산의 결과나 날짜 등을 볼 수 있다.
- 위의 실행결과는 현재 오늘 시스템 날짜가 2007년 09월 07일인 경우
- Date형은 B․C. 4712년 1월 1일~A․D. 9999년 12월 31일까지 범위 값 저장
4) 바이너리(binary) 데이터형
- 음성, 화상(이미지), 동영상과 같은 데이터를 저장하기 위해서 바이너리 데이터형으로 RAW와 LONG RAW 데이터형을 사용
- 제약점으로는 내장함수를 사용할 수 없다.
① RAW 데이터형 : 이진형 데이터를 255바이트까지 사용, 저장 공간의 제한점 때문에 많이 사용하지 않는다.
② LONG RAW 데이터형 : 이진형 데이터를 2GB까지 수용
③ BLOB 데이터형 : 이진형 데이터를 4GB까지 수용 NULL 값
- NULL 값은 “값이 알려져 있지 않다” 또는 “값이 존재하지 않는다”라는 의미 - NULL 값은 다른 NULL 값과 결코 일치하지 않는다.
- NOT NULL의 의미는 모든 행에서 해당 열은 특정한 값으로 채워져 있어야 한다는 것을 의미
- NOT NULL로 정의된 칼럼은 NULL값을 사용할 수 없다.