Command | 기능 |
---|---|
CREATE | 테이블의 생성 |
ALTER | 테이블의 구조 변경 |
DROP | 테이블 삭제 |
RENAME | 테이블 이름 변경 |
COMMENT | 테이블 및 컬럼 주석 추가 |
TRUNCATE | 데이터 초기화 |
Command | 기능 |
---|---|
SELECT | 데이터 조회 |
INSERT | 데이터 삽입 |
UPDATE | 데이터 수정 |
DELETE | 데이터 삭제 |
Command | 기능 |
---|---|
GRANT | 특정 사용자에게 권한 부여 |
REVOKE | 특정 사용자의 권한 회수 |
COMMIT | 트랜잭션의 작업이 정상적으로 완료 |
ROLLBACK | 트랜잭션의 작업이 비정상적으로 종료되어 원래 상태로 복구 |
파일 시스템 | DB 모델링 | 관계형 DB |
---|---|---|
파일 File | 엔티티 Entity | 테이블 Table |
레코드 Record | 튜플 Tuple | 행 Row |
키 Key | 유니크값 Identifier | 키 Primary Key, Unique Key |
필드 Field | 어트리뷰트 Attribute | 컬럼 Column |
칼럼명은 백틱(`), 문자열은 작은 따옴표(')를 사용한다.
CREATE DATABASE [DB명]
CREATE TABLE [테이블명]
(
[컬럼명][타입][컬럼 속성][DEFAULT][COMMENT]
...
PRIMARY KEY([기본키 컬럼])
)
혹은 Workbench GUI를 통해 만들 수도 있다. 이 편이 더 쉽고 간편하기도 하다.
INSERT INTO [테이블 이름]
(
[컬럼 이름1],
[컬럼 이름2],
[컬럼 이름3]
)
VALUES
(
[컬럼1의 데이터 값],
[컬럼2의 데이터 값],
[컬럼3의 데이터 값]
)
INSERT INTO `user`
(
`name`,
`age`,
`email`
)
VALUES
(
'홍길동',
10,
'gildong@gmail.com'
);
UPDATE [테이블 이름] SET
[컬럼 이름]=[값],
...
WHERE [조건절]
UPDATE `user` SET
age = 20
WHERE
id>0 and name='홍길동';
QUERY 문을 치기 번거롭다면, 테이블에 직접 입력할 수도 있다. 적용을 누르면 알아서 WORKBENCH가 쿼리문을 작성해준다.
GUI를 사용하여 행을 삭제할 수도 있고, 쿼리문을 작성할 수도 있다.
DELETE FROM `user`.`user`
WHERE (`id` = '2');
GUI를 사용하여 테이블 우클릭-TRUNCATE를 실행할 수도 있고, 쿼리문을 작성할 수도 있다.
TRUNCATE `user`.`user`;
DROP TABLE `user`.`user`;
SELECT [선택할 필드]
FROM [테이블 명] AS [별칭]
WHERE [조건절]
MySQL | JAVA | 설명 |
---|---|---|
CHAR(n) | String | 고정된 길이(n)의 문자열 데이터 |
VARCHAR(n) | String | 최대길이가 n인 가변 길이 문자열 데이터 |
TINYTEXT(n) | String | 문자열 데이터(255) |
TEXT(n) | String | 문자열 데이터(65535) |
MEDIUMTEXT(n) | String | 문자열 데이터(16777215) |
LONGTEXT(n) | String | 문자열 데이터(4294967295) |
JSON | String | JSON 문자열 데이터 |
가장 많이 사용하는 것은 VARCHAR, TEXT, 그리고 JSON이다. JSON 타입을 사용하면 JSON body 안의 내용 검색, 인덱싱이나 필터링이 가능해진다. TEXT에도 JSON 문자열을 담을 수 있긴 하지만, 이 경우에는 JSON 타입을 활용할 수 없다.
MySQL | JAVA | 설명 |
---|---|---|
TINYINT(n) | Integer, int | 정수형 데이터 (-128~127, 0~255) |
SMALLINT | Integer, int | 정수형 데이터 (-32768~32767, 0~65536) |
MEDIUMINT | Integer, int | 정수형 데이터 |
INT | Integer, int | 정수형 데이터 |
BIGINT | Long, long | 정수형 데이터(수 제한 x) |
FLOAT | Float, float | 부동소수점 데이터 |
DECIMAL | BigDecimal | 고정 소수형 데이터 |
DOUBLE | Double, double | 부동 소수형 데이터 |
숫자는 주로 INT를 사용하고, DECIMAL은 금액을 다룰 때 사용한다. BIGINT는 혹시 모를 데이터 오버플로우를 막기 위해 PRIMARY KEY 등에 사용한다.
default 값에 null을 허용한 경우에는 primitive 타입을 쓸 수 없어 참조형 데이터타입 Integer, Long, Double 등을 사용한다.
MySQL | JAVA | 설명 |
---|---|---|
DATE | Date, LocalDate | 날짜 (년월일) 형태 기간 데이터 |
TIME | Time, LocalTime | 시간 (시분초, 나노초) 형태 데이터 |
DATETIME | DateTime, LocalDateTime | 날짜와 시간 데이터 |
TIMESTAMP | DateTime, LocalDateTime | 날짜와 시간 데이터, TimeZone 속성 사용 |
Year | Year | 연도 표현 데이터 타입 |
MySQL | JAVA | 설명 |
---|---|---|
BINARY(n) | BYTE[] | CHAR 형태 이진 타입 |
BYTE(n) | BYTE[] | CHAR 형태 이진 타입 |
VARBINARY(n) | BYTE[] | VARCHAR 형태 이진 타입 |
TINYBLOB(n) | BYTE[] | 이진데이터 타입(255) |
BLOB(n) | BYTE[] | 이진데이터 타입(65535) |
MEDIUMBLOB(N) | BYTE[] | 이진데이터 타입(16777215) |
LONGBLOB(B) | BYTE[] | 이진데이터 타입(4294967295) |