SQL 치트시트(내가 사용했던 SQL 나열하겠다)
책보면서 사용했던 SQL을 다시 책보고 뒤져서 보긴 귀찮으니... 나중에 빠른 참고 응용을 위해 적어 두는 게 좋겠다.
언어는 PHP, DB는 MySQL이다.
column 삭제
ALTER TABLE guitarwars DROP COLUMN score
DESCRIBE guitarwars //확인 코드
column 추가
ALTER TABLE guitarwars ADD COLUMN screenshot varchar(64)
ALTER TABLE mismatch_user ADD username VARCHAR(32) NOT NULL AFTER user_id, ADD password VARCHAR(16) NOT NULL AFTER username
column 이름, 데이터타입 변경
ALTER TABLE mismatch_user CHANGE password password VARCHAR(40) NOT NULL
column 데이터타입 변경 및 컬럼 위치 변경.
ALTER TABLE guitarwars MODIFY COLUMN date DATETIME AFTER age
정보 추가
INSERT INTO mismatch_user (username, password, join_date) VALUE ('jimi', SHA('heyjoe'), NOW()) //일반적으로 컬럼명을 기재하는 게 선호됨
INSERT INTO mismatch_user VALUE ('jimi', SHA('heyjoe'), NOW()) //컬럼명을 생략해도 되지만, 이 때는 컬럼명이 DB컬럼 순서와 동일해야 하고, 컬럼이 하나 혹은 두개 추가되었을 때 다른 코드에서 추가된 컬럼이 없다고 판단해 에러발생 가능성이 있음. 따라서 정적으로 고정된 경우에만 사용하는 것이 좋음. 좀 더 간략해서 타이핑이 편리하긴 함.
정보 조회
SELECT password FROM mismatch_user WHERE username = 'jimi'
SELECT username FROM mismatch_user WHERE password = SHA('heyjoe')
CREATE TABLE mismatch_category (
category_id INT NOT NULL AUTO_INCREMENT,
name VARCHAR(48) NOT NULL,
PRIMARY KEY (category_id)
)
특정 테이블에서 컬럼 하나 지울 때
ALTER TABLE mismatch_topic
DROP COLUMN category;
특정 테이블에서 컬럼 하나 추가할 때
ALTER TABLE mismatch_topic
ADD COLUMN category_id INT NOT NULL
내부조인 예시
SELECT mismatch_topic.topic_id, mismatch_category.name
FROM mismatch_topic
INNER JOIN mismatch_category
ON (mismatch_topic.category_id = mismatch_category.category_id)
WHERE mismatch_topic.name = 'Horror movies'
내부조인 ON대신 USING 사용하기. (제약조건 각각의 테이블에 칼럼들 중 이름이 동일해야함 사용가능)
SELECT mismatch_topic.topic_id, mismatch_category.name
FROM mismatch_topic
INNER JOIN mismatch_category
USING (category_id)
WHERE mismatch_topic.name = 'Horror movies'
내부조인 USING 과 alias(테이블에 별명 붙이기) 사용하기
SELECT mt.topic_id, mc.name
FROM mismatch_topic AS mt
INNER JOIN mismatch_category AS mc
USING (category_id)
WHERE mt.name = 'Horror movies'
내부조인 칼럼명에 별칭 붙여 사용하기
SELECT mt.name AS topic_name, mc.name As category_name
FROM mismatch_topic AS mt
INNER JOIN mismatch_category AS mc
USING (category_id)
WHERE mt.topic_id = '11'
$query = "SELECT mr.response_id, mr.topic_id, mr.response, mt.name AS topic_name, mc.name AS category_name" .
"FROM mismatch_response AS mr" .
"INNER JOIN mismatch_topic AS mt USING (topic_id) " .
"INNER JOIN mismatch_category AS mc USING (category_id)" .
"WHERE mr.user_id ='$_SESSION['user_id'] . "'";
LIKE 구문 위치 확인용
SELECT job_id, title, description FROM riskyjobs
WHERE title LIKE '%fighter%';
% 와일드카드 문자 : 없거나 하나이상의 문자 전부 (예 : %fighter)
_ 와일드카드 문자 : 한개 이상의 문자. (예: ____fighter) fighter 앞에 4개의 문자 포함되는 단어
LIKE 사용법 : 이외의 예 '%er' , 'c%', '% T%', '%test %', '%test %', '%do_' '%ma%',
SELECT job_id, title, description FROM riskyjobs WHERE title LIKE '% t%'
SELECT * FROM riskyjobs
WHERE description LIKE '%Bull%' OR description LIKE '%Fighter%' OR
description LIKE '%Matador%'