Abstract

MySQL의 문법을 큰 기능별(Create, Read, Update, Delete)로 정리해 보았다. SQL은 따로 대소문자구분을 하지않으며 여기서는 명령어는 대문자를, 변수명은 소문자를 사용했다.

Create

-- Set Schema
CREATE TABLE classmates (
  name TEXT,
	age INTEGER,
	address TEXT
);

CREATE TABLE classmates (
  id INTEGER PRIMARY KEY AUTO_INCREMENT,
	-- autoincrement가 지정되어있는 primary key의 경우 
	-- 삭제된 후 다시 데이터를 insert해도 삭제된 부분이 채워지지않는다.
  name TEXT NOT NULL,
  age INT NOT NULL,
  address TEXT NOT NULL
);
ALTER TABLE classmates convert to character set UTF8;  -- 한글사용을 위해 인코딩 변경
-- Insert data
INSERT INTO classmates
VALUES ('과메기', 23, '서울');
-- 특정 column만 채울수도 있음
INSERT INTO classmates (name, age, address)
VALUES 
('바지락', 33, '울산'),
('가자미', 33, '부산'),
('가자미', 25, '김해')
;

Read

-- Read
SELECT * FROM classmates;
SELECT name, address FROM classmates;
SELECT id, name FROM classmates LIMIT 10;  -- 10개만
SELECT id, name FROM classmates LIMIT 10 OFFSET 2 ;  -- 3번부터 10개
SELECT DISTINCT address FROM classmates;  -- 겹치지 않게 선택
-- where
SELECT id, name FROM classmates WHERE address='울산';
SELECT name FROM classmates WHERE name IS NOT NULL; -- name이 NULL이 아닌것
-- Order
SELECT * FROM users 
ORDER BY age, balance DESC LIMIT 10; -- age는 asc

SELECT * FROM users 
ORDER BY age DESC, balance ASC LIMIT 10; 
-- 순서는 where 뒤에 order by
-- Group by
SELECT COUNT(*) FROM classmates
GROUP BY name;  -- last_name 개수(COUNT(*) 반환
-- As
SELECT COUNT(*) AS name_count
FROM classmates
GROUP BY name;  -- name_count로 column명 변경

Update

-- Update
UPDATE classmates SET name='갈매기' address='부산' where age=33;  -- 변수명 업데이트
ALTER TABLE old RENAME TO new;  -- 테이블명 변경

Delete

-- Drop table
DROP TABLE classmates
-- Delete
DELETE FROM classmates WHERE address='울산';