💡CRUD?
Create
Read
Update
Delete
SELECT id, name, age, gender FROM users # users테이블에서 id, name, age, gender를 읽어온다.
WHERE
구문을 사용해 검색도 가능SELECT id, name, age, gender FROM users WHERE name = "아이유" # users테이블에서 name의 값이 "아이유"인 row의 id, name, age, gender를 읽어온다.
INSERT INTO users ( id, name, age, gender ) VALUES ( 1, "아이유", 27, "여자" ), ( 2, "제인", 19, "여자" ) # users테이블의 id,name,age,gender column에 VALUES의 값을 각각 대입하여 생성한다. # id=1, name="아이유", age=27, gender="여자" # id=2, name="제인", age=19, gender="여자"
UPDATE users SET age = 25 WHERE name = "아이유" # users테이블의 name값이 "아이유" row의 age를 25로 수정한다.
DELETE FROM users WHERE gender = "남자" # users테이블에서 gender값이 "남자"인 row를 삭제한다.
user_name
이 이미 존재하는지 확인 하고 싶을 때SELECT 1 FROM users WHERE EXISTS (SELECT * FROM users WHERE user_name = '아이유'); # users테이블에서 만약 users테이블의 user_name이 "아이유"인 row의 개수만큼 1을 반환하라
💡 SELECT 1
- SQL에서 1은
True
를 의미한다.- 만약 만족하는 테이블의 row의 수가 N개면 N개 만큼 1을 반환하게 된다.
💡
NOT EXIST
EXISTS
의 반대의 경우로 체크 할 수 있다.SELECT lname, fname FROM customer WHERE NOT EXISTS (SELECT * FROM orders WHERE customers.customer_id = orders.c_id);
join
문을 사용해야 함.join
은 교집합이라고 생각하면 된다.SELECT 테이블별칭.조회할칼럼, 테이블별칭.조회할칼럼 FROM 기준테이블 별칭 INNER JOIN 조인테이블 별칭 ON 기준테이블별칭.기준키 = 조인테이블별칭.기준키
SELECT users.id, users.name, users.age, users.gender, accounts.account_type FROM users JOIN accounts ON accounts.id = users.account_id
(INNER) JOIN
LEFT (OUTER) JOIN
RIGHT (OUTER) JOIN
FULL (OUTER) JOIN
CREATE TABLE accounts( id INT NOT NULL AUTO_INCREMENT, account_type VARCHAR(100) NOT NULL, PRIMARY KEY (id) ); CREATE TABLE users( id INT NOT NULL AUTO_INCREMENT, name VARCHAR(255) NOT NULL, email VARCHAR(255) NOT NULL, hashed_password VARCHAR(255) NOT NULL, account_id INT NOT NULL, PRIMARY KEY (id), UNIQUE KEY email (email), CONSTRAINT `users_account_fkey` FOREIGN KEY (`account_id`) REFERENCES `accounts` (`id`) );