[DB] MySQL 기초 문법 정리
- MySQL에서 키워드와 구문, 문자열은 대소문자를 구분하지 않는다.
- MySQL에서 테이블 명과 필드의 이름은 대소문자를 구분한다.
DB
DB 생성
CREATE DATABASE [DB 이름] CHARACTER SET [character set];
예시)
CREATE DATABASE Account CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
위에서 COLLATE의 utf8mb4_general_ci의 ci는 case_insensitive의 약자이며, 대소문자를 구분하지 않게 설정된다.
DB 선택
USE [DB이름];
예시)
USE Account;
DB 삭제
DROP DATABASE [DB 이름];
예시)
DROP DATABASE Account;
테이블
테이블 생성
CREATE TABLE [테이블 이름] ([column1 name] [data type], ...);
예시)
CREATE TABLE user
(
ID INT,
Name VARCAHR(30),
BirthDay DATE,
Age INT
);
테이블 삭제
DROP TABLE [테이블 이름];
예시)
DROP TABLE user;
테이블에 필드(열) 추가
ALTER TABLE [테이블 이름] ADD [column name] [data type];
예시)
ALTER TABLE user ADD PhoneNumber INT;
테이블에 필드(열) 타입 변경
ALTER TABLE [테이블 이름] MODIFY COLUMN [column name] [data type];
예시)
ALTER TABLE user MODIFY ID VARCHAR(20);
테이블 필드(열) 삭제
ALTER TABLE [테이블 이름] DROP [column name];
예시)
ALTER TABLE user DROP Age;
테이블에 레코드(행) 추가
INSERT INTO [테이블 이름] VALUES (value1, value2, value3...);
예시)
INSERT INTO user(ID, Name, BirthDay) VALUES (1, '홍길동', '0000-00-00');
테이블의 레코드(행) 선택
SELECT * FROM [테이블 이름] WHERE [condition];
예시)
SELECT * FROM User WHERE id = 1 ORDER BY id LIMIT 2;
ORDERD BY에 DESC를 추가하면 데이터를 내림차순으로 나열한다.
Default 옵션은 오름차순(ASC)이다.
LIMIT 2는 상위 2개의 데이터만 가져오라는 뜻이다.
테이블의 레코드(행) 내용 수정
UPDATE [테이블 이름] SET [column name]=[value] WHERE [condition];
예시)
UPDATE user SET Age = 20 WHERE Name = '홍길동';
테이블의 레코드(행) 삭제
DELETE FROM [테이블 이름] WHERE [condition];
예시)
DELETE FROM user WHERE Name = '홍길동';
다중 테이블 연산
Join
Join은 두 개의 table들을 연결(join)해서 두 table의 레코드를 읽어 들이고 싶을 때 사용한다.
Join 기본 문법
SELECT 테이블.조회할 필드, 테이블.조회할 필드, ...
FROM 기준 테이블
(INNER, LEFT, RIGHT FULL) JOIN 조인 테이블
ON 기준 테이블.기준 필드 = 조인 테이블.기준 필드;
예시)
SELECT users.id, users.name, accounts.info
FROM users
JOIN accounts ON users.id = accounts.id;