tjddndk17
[MySQL] 정리 본문
데이터베이스
SQL( Structured Query Language ) 은 DB에서 데이터를 정의,조작,제어하기 위한 언어
속성 | 명렁어 | 설명 |
DDL (Data Definition Language) |
CREATE, ALTER, DROP | 테이블을 생성,변경,삭제 |
DML (Data Manipulation Language) |
INSERT, UPDATE, DELETE, SELECT | 데이터를 생성,변경,삭제,조회 |
DCL (Data Control Language) |
GRANT, REVOKE | 데이터의 보안성 및 무결정 제어 권한 부여, 회수 |
스키마(Schema)
데이터베이스의 전체적인 구조와 제약조건에 대한 명세
- 외부 스키마: 사용자 관점에서의 논리적 구조
- 개념 스키마: 논리점 관점에서 본 전체적인 데이터 구조
- 내부 스키마: 물리적 저장 장치 관점에서 본 DB의 물리적인 구조

character & collation & mb4
MySQL / MariaDB에서만 일어나는 문제
- 다국어를 처리할수 있는 UTF-8 원래는 가변 4byte
- 전세계 모든 언어문자를 다 카운트 해봤는데 3byte가 안되서 가변 3byte로 설계함
- Emoji(ex:특수문자)같은 새로나온 문자가 4byte필요
- 가변 4byte 인 utf8mb4 를 추가함 ( MySQL 5.5.3 )
character : 문자집합
collation : 정렬 ( number, date 같은 경우는 명확하지만 text는 명확하지 않아서 정렬기준 필요 )
주요 collation
utf8mb4_unicode_ci : 공식 유니코드 규칙을 기반으로 광범위한 언어에서 정확하게 정렬
utf8mb4_general_ci : 속도 향상을 위해 설계된 단순화된 정렬, 특정 언어나 문자를 사용할때 정렬 제대로 안됨
* 컴퓨터 성능이 발전하면서 큰차이는 없음
데이터 타입
타입 | 저장공간 | 범위 signed | 범위 unsigned |
TINYINT(n) | 1바이트 | -128 ~ 127 | 0 ~ 255 |
SMALLINT(n) | 2바이트 | -32768 ~ 32767 | 0 ~ 65535 |
MEDIUMINT(n) | 3바이트 | -8388608 ~ 8388607 | 0 ~ 16777215 |
INT(n) | 4바이트 | -2147483648 ~ 2147483647 | 0 ~ 4294967295 |
BIGINT(n) | 8바이트 | -9223372036854775808 ~ 9223372036854775807 |
0 ~ 18446744073709551615 |
FLOAT(m,d) | 4바이트 | -3.402823466×1038 ~ 3.402823466×1038 |
X |
DOUBLE(m,d) | 8바이트 | -1.7976931348623157×10308 ~ 1.7976931348623157×10308 |
X |
DECIMAL(m,d) | 가변 | 전체자리수와 소수점자리수를 가짐
|
X |
(n) - 숫자의 개수를 제약하는것이 아님, ZeroFill(자동으로 unsigned) 속성이 지정되었을때 쓰임
ex) int(5) UNSIGNED ZEROFILL 경우: '3' => '00003'
(m) - 소수 부분을 포함한 실수의 총 자릿수
(d) - 소수 부분의 자릿수, 0이면 소수 부분X