테이블을 생성할때는 데이터의 형식을 설정해야한다.
각 데이터에 맞는 데이터 형식을 지정함으로써 효율적으로 저장할 수 있다.
1. 정수형
DataType | Byte | Range |
TINYINT | 1 | -128 ~ 127 |
SMALLINT | 2 | -32,768 ~ 32,767 |
INT | 4 | 약 -21억 ~ +21억 |
BIGINT | 8 | 약 -900경 ~ +900경 |
2. 문자형
DataType | Byte | 설명 |
CHAR | 1 ~ 255 | 고정형 |
VARCHAR | 1 ~ 16383 | 가변형 |
- VARCHAR가 CHAR보다 메모리를 효율적으로 운영할 수 있지만 MySQL 내부적으로 성능 면에서는 CHAR로 설정하는 것이 더 좋다.
- 전화번호와 같은 숫자로써 의미가 없고 연산에 의미가 없다면 문자형으로 지정하는 것이 좋다.
(더하기 빼기 등의 연산에 의미가 있다, 크다/작다 또는 순서에 의미가 있다에 해당하지 않는다면 문자형)
물론, 정수형으로 지정해도 타당성면에서 비효율적일뿐 문제는 없다.
* 문자형에는 BINARY, VARBINARY 형식도 있다. 그러나 잘 사용하지 않는다고 한다.
3. 대량의 데이터 형식
DataType | Byte | |
TEXT 형식 | TEXT | 1~65535 |
LONGTEXT | 1~4294967295 | |
BLOB 형식 | BLOB | 1~65535 |
LONGBLOB | 1~4294967295 |
*TINYTEXT, MIDIUMTEXT,TINYBLOB,MEDIUMBLOB 형식도 있지만 잘 사용하지 않는다.
- TEXT : 소설 또는 영화 대본과 같은 내용을 저장할 때 필요한 데이터 형식
- BLOB : 바이너리 데이터로 된 사진 또는 동영상
4. 실수형
DataType | Byte | 설명 |
FLOAT | 4 | 소수점 아래 7자리까지 표현 |
DOUBLE | 8 | 소수점 아래 15자리까지 표현 |
5. 날짜형
DataType | Byte | 설명 |
DATE | 3 | YYYY-MM-DD |
TIME | 3 | HH:MM:SS |
DATETIME | 8 | YYYY-MM-DD HH:MM:SS |
6. 변수의 사용
/*변수 선언 및 연산*/
SET @var1 = 5 ;
SET @var2 = 10;
SELECT @var1 + @var2;
변수는 @변수이름 형식으로 만들고, SET 문으로 변수에 값을 대입
변수는 예외적으로 LIMIT 절에 사용할 수 없다.
LIMIT 대신 PREPARE, EXECUTE를 사용할 수있다.
6. CREATE TABLE 문 연습 (전화번호부 테이블)
CREATE TABLE phonebook (
phone_num CHAR(8) NOT NULL PRIMARY KEY,
nick_name VARCHAR(20) NOT NULL,
rel CHAR(8) NULL CHECK (rel IN ('friend', 'family', 'company')),
address VARCHAR(20) NULL );
DESC phonebook;
phone_num = 전화번호를 기본키로.. 지금 생각해보니 전화번호가 8자가 넘어가는데 char바이트를 잘못 지정해줬다...
닉넴은 20자 내외로 작성
rel은 관계 컬럼이다. CHECK 제약 조건으로 'friend', 'family', 'company' 3가지만 입력 될 수 있도록 했다.
address는 주소를 넣는 컬럼...
'SQL (RDBMS)' 카테고리의 다른 글
INSERT, DELETE, UPDATE 문 (0) | 2023.04.09 |
---|---|
테이블 제약조건(Constraint) (0) | 2023.02.26 |
ORDER BY, GROUP BY (0) | 2022.12.05 |
혼공SQL) SELECT문 실습 (0) | 2022.12.05 |
데이터베이스(DataBase)/DBMS/SQL 개념 (0) | 2022.11.29 |