🔴 CREATE 구문
1. 데이터 베이스 생성
CREATE DATABASE DB명;
2. 테이블 생성
CREATE TABLE 테이블명 (
컬럼명1 데이터타입(크기) [제약조건],
컬럼명2 데이터타입(크기) [제약조건],
컬럼명3 데이터타입(크기) [제약조건],
컬럼명4 데이터타입(크기) [제약조건]
);
🔍 SQL 데이터타입
데이터 타입(DataType) 정의
데이터 타입(자료형)이란 컴퓨터 시스템과 프로그래밍 언어에서 실수, 정수, 소수 자료형 등의 여러 종류의 데이터를 식별하는 타입으로서, 해당 자료형에 대한 가능한 값, 해당 자료형에서 수행을 할 수 있는 명령어, 데이터의 형태, 의미, 크기와 해당 자료형의 값이 저장되는 방식이다.
✔ 문자형 데이터 타입
데이터 유형 | 정의 |
CHAR(n) | 고정 길이 데이터 타입(최대 255byte)- 지정된 길이보다 짦은 데이터 입력될 시 나머지 공간 공백으로 채워진다. |
VARCHAR(n) | 가변 길이 데이터 타입(최대 65535byte)- 지정된 길이보다 짦은 데이터 입력될 시 나머지 공간은 채우지 않는다. |
TINYTEXT(n) | 문자열 데이터 타입(최대 255byte) |
TEXT(n) | 문자열 데이터 타입(최대 65535byte) |
MEDIUMTEXT(n) | 문자열 데이터 타입(최대 16777215byte) |
LONGTEXT(n) | 문자열 데이터 타입(최대 4294967295byte) |
JSON | JSON 문자열 데이터 타입 - JSON 형태의 포맷을 꼭 준수해야 한다. |
✔ 숫자형 데이터 타입
데이터 유형 | 정의 |
TINYINT(n) | 정수형 데이터 타입(1byte) -128 ~ +127 또는 0 ~ 255수 표현할 수 있다. |
SMALLINT(n) | 정수형 데이터 타입(2byte) -32768 ~ 32767 또는 0 ~ 65536수 표현할 수 있다. |
MEDIUMINT(n) | 정수형 데이터 타입(3byte) -8388608 ~ +8388607 또는 0 ~ 16777215수 표현할 수 있다. |
INT(n) | 정수형 데이터 타입(4byte) -2147483648 ~ +2147483647 또는 0 ~ 4294967295수 표현할 수 있다. |
BIGINT(n) | 정수형 데이터 타입(8byte) - 무제한 수 표현할 수 있다. |
FLOAT(길이, 소수) | 부동 소수형 데이터 타입(4byte) -고정 소수점을 사용 형태이다. |
DECIMAL(길이, 소수) | 고정 소수형 데이터 타입고정(길이+1byte) -소수점을 사용 형태이다. |
DOUBLE(길이, 소수) | 부동 소수형 데이터 타입(8byte) -DOUBLE을 문자열로 저장한다. |
✔ 날짜형 데이터 타입
데이터 유형 | 정의 |
DATE | 날짜(년도, 월, 일) 형태의 기간 표현 데이터 타입(3byte) |
TIME | 시간(시, 분, 초) 형태의 기간 표현 데이터 타입(3byte) |
DATETIME | 날짜와 시간 형태의 기간 표현 데이터 타입(8byte) |
TIMESTAMP | 날짜와 시간 형태의 기간 표현 데이터 타입(4byte) -시스템 변경 시 자동으로 그 날짜와 시간이 저장된다. |
YEAR |
년도 표현 데이터 타입(1byte) |
✔ 이진 데이터 타입
데이터 유형 | 정의 |
BINARY(n) & BYTE(n) | CHAR의 형태의 이진 데이터 타입 (최대 255byte) |
VARBINARY(n) | VARCHAR의 형태의 이진 데이터 타입 (최대 65535byte) |
TINYBLOB(n) | 이진 데이터 타입 (최대 255byte) |
BLOB(n) | 이진 데이터 타입 (최대 65535byte) |
MEDIUMBLOB(n) | 이진 데이터 타입 (최대 16777215byte) |
LONGBLOB(n) | 이진 데이터 타입 (최대 4294967295byte) |
✔ 데이터 타입 선택 방법
● 타입은 작을수로 좋다
일반적으로 데이터를 저장하고 표현하는 데 문제가 없는 데이터 타입 중 가장 작은 것을 골라야 한다. 보통 작은 데이터 타입일수록 디스크나 메모리, CPU 캐시에 더 적은 공간을 사용하기 때문에 더 빠르며 덜 소비한다.
하지만 저장할 값의 크기를 너무 작게 추정하지 않도록 주의해야 한다. 스키마의 이곳저곳에서 데이터 타입의 범위를 늘리는 작업은 어렵고, 시간을 많이 소모하기 때문이다.
● 타입은 단순한게 좋다
보통 간단한 데이터 타입을 처리할수록 CPU 사이클로 덜 소비한다. 예로 문자 비교는 문자 셋 (Character set)과 콜레이션 (Collation)으로 인해 복잡해지므로, 문자 비교보다는 정수 비교가 비용이 더 저렴하다. 날짜와 시간은 문자열로 저장하지 말고, MySQL의 내장 형식에 저장해야 하며 IP 주소는 정수를 이용해 저장해야 한다.
IP 주소를 사용할 수 있는 함수로 INET_ATON 함수와 INET_NTOA 함수가 있으니 참고
● 가능하면 NULL을 쓰지말자
컬럼은 되도록 NOT NULL (NULL 허용 안 함)로 정의해야 한다. NULL 허용이 기본값이다 보니 사용하는 응용 프로그램이 NULL을 저장할 필요가 없을 때조차 테이블에 NULL을 허용하는 컬럼을 포함한 경우가 많다. NULL을 저장할 의도가 아니라면 컬럼을 NOT NULL로 정의하자.
NULL 허용 컬럼은 저장 공간도 더 많이 사용하며 NULL 허용 컬럼을 인덱싱할 땐 항목마다 한 바이트씩 더 들어간다. 만약 ‘값이 없다’라는 사실을 테이블에 기록해야 하더라도 굳이 NULL을 쓸 필요는 없을지 모른다. NULL 대신 0이나 특수한 어떤 값, 빈 문자열 등을 사용하는 걸 고려해보자.
🔍 SQL 제약조건(Constraint)
제약조건(Constraints)의 개념
제약조건이란, SQL 테이블에 문제되는/결함있는 데이터가 입력되지 않도록 컬럼별로 미리 지정해 둔 조건입니다. DESC 명령어를 통해서 변수별로 null이 가능한지 조회가 가능하고, GUI를 이용해 테이블의 제약조건을 모아서 볼 수도 있습니다.
제약조건(Constratints) 종류
제약조건 | 설명 | 설정레벨 |
NOT NULL | Null값 포함할수 없음 | 컬럼 |
UNIQUE | 한 열에서 각기 다른 값만 가지도록 설정합니다. (중복된 값 불가) | 컬럼, 테이블 |
DEFAULT | 한 열에 특정한 값이 없을 경우, 대체할 기본값 (Default)을 설정합니다. |
컬럼, 테이블 |
PRIMARY KEY | 데이터베이스 테이블에서 각각의 행/레코드가 유일하게 식별 가능한 값을 가지도록 합니다. | 컬럼, 테이블 |
FOREIGN KEY | 다른 테이블 열을 참조하여 해당 테이블에 존재하는 값만 입력 가능
다른 테이블의 고유키(PRIMARY KEY)를 참조
|
컬럼, 테이블 |
CHECK | 설정한 조건식을 만족하는 데이터만 입력가능 조건식을 만족하지 않는 데이터는 입력이 거부됨
|
컬럼, 테이블 |
INDEX | 데이터베이스에서 데이터를 매우 빠르게 생성하거나 검색할 때 사용합니다. | 컬럼,테이블 |
🔴 DROP 구문
DROP 명령어는 잘못사용하면 데이터내용이 다 날라가므로 사용시 각별히 주의해야한다!!
1. DB 삭제
DROP DATABASE DB명;
2. 테이블 삭제
DROP TABLE 테이블명;
🔴 ALTER 구문
1. 컬럼추가 (ADD)
ALTER TABLE 테이블명 ADD 컬럼명 데이터타입;
2. 특정 컬럼뒤에 추가 (ADD)
ALTER TABLE 테이블명 ADD COLUMN 추가할컬럼명 컬럼타입 DEFAULT 기본값 컬럼위치;
3. 컬럼 타입 변경 ( MODIFY)
ALTER TABLE 테이블명 MODIFY 컬럼명 데이터타입;
4. 여러개 컬럼 한번에 변경 ( MODIFY)
ALTER TABLE 테이블명
MODIFY 컬럼명 데이터타입,
MODIFY 컬럼명 데이터타입,
MODIFY 컬럼명 데이터타입
;
5. 컬럼 순서 변경 (MODIFY)
ALTER TABLE 테이블명 MODIFY 순서변경할 컬럼명 컬럼타입 AFTER 컬럼위치;
6. 컬럼 이름,타입 변경 (CHAHGE)
ALTER TABLE 테이블명 CHANGE 변경전컬럼명 변경후컬럼명 컬럼타입;
7. 컬럼 삭제 (DROP)
ALTER TABLE 테이블명 DROP 컬럼명;
8. Primary Key(PK) 설정
ALTER TABLE 테이블명 ADD PRIMARY KEY (PK설정할컬럼명);
9. Primary Key(PK) 삭제
ALTER TABLE 테이블명 DROP PRIMARY KEY;
10. 컬럼 Default 값 변경
ALTER TABLE 테이블명 ALTER COLUMN 컬럼명 SET DEFAULT 기본값;
11. 컬럼 Default 값 삭제
ALTER TABLE 테이블명 ALTER 컬럼명 DROP DEFAULT;
12. 컬럼 Index 설정
ALTER TABLE 테이블명 ADD INDEX 인덱스명(인덱스설정할컬럼);
13. 컬럼 Index 삭제
ALTER TABLE 테이블명 DROP INDEX 인덱스명;
14. 테이블 이름 변경 (RENAME)
ALTER TABLE 테이블명 RENAME 변경후테이블명;
'Programming > Database' 카테고리의 다른 글
[Database] SQL ORDER BY 절을 이용한 정렬 (0) | 2022.09.23 |
---|---|
[Database] SQL 조건문 (0) | 2022.09.23 |
[Database] SQL 함수 (0) | 2022.09.23 |
[Database] SQL 연산자 (1) | 2022.09.23 |
[Database] SQL 기본문법(INSERT, SELECT, UPDATE, DELETE) (0) | 2022.09.23 |
🔴 CREATE 구문
1. 데이터 베이스 생성
CREATE DATABASE DB명;
2. 테이블 생성
CREATE TABLE 테이블명 (
컬럼명1 데이터타입(크기) [제약조건],
컬럼명2 데이터타입(크기) [제약조건],
컬럼명3 데이터타입(크기) [제약조건],
컬럼명4 데이터타입(크기) [제약조건]
);
🔍 SQL 데이터타입
데이터 타입(DataType) 정의
데이터 타입(자료형)이란 컴퓨터 시스템과 프로그래밍 언어에서 실수, 정수, 소수 자료형 등의 여러 종류의 데이터를 식별하는 타입으로서, 해당 자료형에 대한 가능한 값, 해당 자료형에서 수행을 할 수 있는 명령어, 데이터의 형태, 의미, 크기와 해당 자료형의 값이 저장되는 방식이다.
✔ 문자형 데이터 타입
데이터 유형 | 정의 |
CHAR(n) | 고정 길이 데이터 타입(최대 255byte)- 지정된 길이보다 짦은 데이터 입력될 시 나머지 공간 공백으로 채워진다. |
VARCHAR(n) | 가변 길이 데이터 타입(최대 65535byte)- 지정된 길이보다 짦은 데이터 입력될 시 나머지 공간은 채우지 않는다. |
TINYTEXT(n) | 문자열 데이터 타입(최대 255byte) |
TEXT(n) | 문자열 데이터 타입(최대 65535byte) |
MEDIUMTEXT(n) | 문자열 데이터 타입(최대 16777215byte) |
LONGTEXT(n) | 문자열 데이터 타입(최대 4294967295byte) |
JSON | JSON 문자열 데이터 타입 - JSON 형태의 포맷을 꼭 준수해야 한다. |
✔ 숫자형 데이터 타입
데이터 유형 | 정의 |
TINYINT(n) | 정수형 데이터 타입(1byte) -128 ~ +127 또는 0 ~ 255수 표현할 수 있다. |
SMALLINT(n) | 정수형 데이터 타입(2byte) -32768 ~ 32767 또는 0 ~ 65536수 표현할 수 있다. |
MEDIUMINT(n) | 정수형 데이터 타입(3byte) -8388608 ~ +8388607 또는 0 ~ 16777215수 표현할 수 있다. |
INT(n) | 정수형 데이터 타입(4byte) -2147483648 ~ +2147483647 또는 0 ~ 4294967295수 표현할 수 있다. |
BIGINT(n) | 정수형 데이터 타입(8byte) - 무제한 수 표현할 수 있다. |
FLOAT(길이, 소수) | 부동 소수형 데이터 타입(4byte) -고정 소수점을 사용 형태이다. |
DECIMAL(길이, 소수) | 고정 소수형 데이터 타입고정(길이+1byte) -소수점을 사용 형태이다. |
DOUBLE(길이, 소수) | 부동 소수형 데이터 타입(8byte) -DOUBLE을 문자열로 저장한다. |
✔ 날짜형 데이터 타입
데이터 유형 | 정의 |
DATE | 날짜(년도, 월, 일) 형태의 기간 표현 데이터 타입(3byte) |
TIME | 시간(시, 분, 초) 형태의 기간 표현 데이터 타입(3byte) |
DATETIME | 날짜와 시간 형태의 기간 표현 데이터 타입(8byte) |
TIMESTAMP | 날짜와 시간 형태의 기간 표현 데이터 타입(4byte) -시스템 변경 시 자동으로 그 날짜와 시간이 저장된다. |
YEAR |
년도 표현 데이터 타입(1byte) |
✔ 이진 데이터 타입
데이터 유형 | 정의 |
BINARY(n) & BYTE(n) | CHAR의 형태의 이진 데이터 타입 (최대 255byte) |
VARBINARY(n) | VARCHAR의 형태의 이진 데이터 타입 (최대 65535byte) |
TINYBLOB(n) | 이진 데이터 타입 (최대 255byte) |
BLOB(n) | 이진 데이터 타입 (최대 65535byte) |
MEDIUMBLOB(n) | 이진 데이터 타입 (최대 16777215byte) |
LONGBLOB(n) | 이진 데이터 타입 (최대 4294967295byte) |
✔ 데이터 타입 선택 방법
● 타입은 작을수로 좋다
일반적으로 데이터를 저장하고 표현하는 데 문제가 없는 데이터 타입 중 가장 작은 것을 골라야 한다. 보통 작은 데이터 타입일수록 디스크나 메모리, CPU 캐시에 더 적은 공간을 사용하기 때문에 더 빠르며 덜 소비한다.
하지만 저장할 값의 크기를 너무 작게 추정하지 않도록 주의해야 한다. 스키마의 이곳저곳에서 데이터 타입의 범위를 늘리는 작업은 어렵고, 시간을 많이 소모하기 때문이다.
● 타입은 단순한게 좋다
보통 간단한 데이터 타입을 처리할수록 CPU 사이클로 덜 소비한다. 예로 문자 비교는 문자 셋 (Character set)과 콜레이션 (Collation)으로 인해 복잡해지므로, 문자 비교보다는 정수 비교가 비용이 더 저렴하다. 날짜와 시간은 문자열로 저장하지 말고, MySQL의 내장 형식에 저장해야 하며 IP 주소는 정수를 이용해 저장해야 한다.
IP 주소를 사용할 수 있는 함수로 INET_ATON 함수와 INET_NTOA 함수가 있으니 참고
● 가능하면 NULL을 쓰지말자
컬럼은 되도록 NOT NULL (NULL 허용 안 함)로 정의해야 한다. NULL 허용이 기본값이다 보니 사용하는 응용 프로그램이 NULL을 저장할 필요가 없을 때조차 테이블에 NULL을 허용하는 컬럼을 포함한 경우가 많다. NULL을 저장할 의도가 아니라면 컬럼을 NOT NULL로 정의하자.
NULL 허용 컬럼은 저장 공간도 더 많이 사용하며 NULL 허용 컬럼을 인덱싱할 땐 항목마다 한 바이트씩 더 들어간다. 만약 ‘값이 없다’라는 사실을 테이블에 기록해야 하더라도 굳이 NULL을 쓸 필요는 없을지 모른다. NULL 대신 0이나 특수한 어떤 값, 빈 문자열 등을 사용하는 걸 고려해보자.
🔍 SQL 제약조건(Constraint)
제약조건(Constraints)의 개념
제약조건이란, SQL 테이블에 문제되는/결함있는 데이터가 입력되지 않도록 컬럼별로 미리 지정해 둔 조건입니다. DESC 명령어를 통해서 변수별로 null이 가능한지 조회가 가능하고, GUI를 이용해 테이블의 제약조건을 모아서 볼 수도 있습니다.
제약조건(Constratints) 종류
제약조건 | 설명 | 설정레벨 |
NOT NULL | Null값 포함할수 없음 | 컬럼 |
UNIQUE | 한 열에서 각기 다른 값만 가지도록 설정합니다. (중복된 값 불가) | 컬럼, 테이블 |
DEFAULT | 한 열에 특정한 값이 없을 경우, 대체할 기본값 (Default)을 설정합니다. |
컬럼, 테이블 |
PRIMARY KEY | 데이터베이스 테이블에서 각각의 행/레코드가 유일하게 식별 가능한 값을 가지도록 합니다. | 컬럼, 테이블 |
FOREIGN KEY | 다른 테이블 열을 참조하여 해당 테이블에 존재하는 값만 입력 가능
다른 테이블의 고유키(PRIMARY KEY)를 참조
|
컬럼, 테이블 |
CHECK | 설정한 조건식을 만족하는 데이터만 입력가능 조건식을 만족하지 않는 데이터는 입력이 거부됨
|
컬럼, 테이블 |
INDEX | 데이터베이스에서 데이터를 매우 빠르게 생성하거나 검색할 때 사용합니다. | 컬럼,테이블 |
🔴 DROP 구문
DROP 명령어는 잘못사용하면 데이터내용이 다 날라가므로 사용시 각별히 주의해야한다!!
1. DB 삭제
DROP DATABASE DB명;
2. 테이블 삭제
DROP TABLE 테이블명;
🔴 ALTER 구문
1. 컬럼추가 (ADD)
ALTER TABLE 테이블명 ADD 컬럼명 데이터타입;
2. 특정 컬럼뒤에 추가 (ADD)
ALTER TABLE 테이블명 ADD COLUMN 추가할컬럼명 컬럼타입 DEFAULT 기본값 컬럼위치;
3. 컬럼 타입 변경 ( MODIFY)
ALTER TABLE 테이블명 MODIFY 컬럼명 데이터타입;
4. 여러개 컬럼 한번에 변경 ( MODIFY)
ALTER TABLE 테이블명
MODIFY 컬럼명 데이터타입,
MODIFY 컬럼명 데이터타입,
MODIFY 컬럼명 데이터타입
;
5. 컬럼 순서 변경 (MODIFY)
ALTER TABLE 테이블명 MODIFY 순서변경할 컬럼명 컬럼타입 AFTER 컬럼위치;
6. 컬럼 이름,타입 변경 (CHAHGE)
ALTER TABLE 테이블명 CHANGE 변경전컬럼명 변경후컬럼명 컬럼타입;
7. 컬럼 삭제 (DROP)
ALTER TABLE 테이블명 DROP 컬럼명;
8. Primary Key(PK) 설정
ALTER TABLE 테이블명 ADD PRIMARY KEY (PK설정할컬럼명);
9. Primary Key(PK) 삭제
ALTER TABLE 테이블명 DROP PRIMARY KEY;
10. 컬럼 Default 값 변경
ALTER TABLE 테이블명 ALTER COLUMN 컬럼명 SET DEFAULT 기본값;
11. 컬럼 Default 값 삭제
ALTER TABLE 테이블명 ALTER 컬럼명 DROP DEFAULT;
12. 컬럼 Index 설정
ALTER TABLE 테이블명 ADD INDEX 인덱스명(인덱스설정할컬럼);
13. 컬럼 Index 삭제
ALTER TABLE 테이블명 DROP INDEX 인덱스명;
14. 테이블 이름 변경 (RENAME)
ALTER TABLE 테이블명 RENAME 변경후테이블명;
'Programming > Database' 카테고리의 다른 글
[Database] SQL ORDER BY 절을 이용한 정렬 (0) | 2022.09.23 |
---|---|
[Database] SQL 조건문 (0) | 2022.09.23 |
[Database] SQL 함수 (0) | 2022.09.23 |
[Database] SQL 연산자 (1) | 2022.09.23 |
[Database] SQL 기본문법(INSERT, SELECT, UPDATE, DELETE) (0) | 2022.09.23 |