July 27, 2020
💡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`)
);