MySQL

SQL 치트시트(내가 사용했던 SQL 나열하겠다)

Sharpen 2015. 7. 2. 15:56

책보면서 사용했던 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%'