어느덧 3주차..
데이터 입력: INSERT
-> INSERT INTO 테이블 [(열1, 열2, ...) VALUES (값1, 값2, ...)]
테이블 이름 다음에 나오는 열 생략 가능, 생략시 VALUES 다음에 나오는 값들의 순서 및 개수는 테이블 정의 시 열 순서 및 개수와 동일해야 함.
자동증가 AUTO_INCREMENT: 열 정의 시 1부터 증가하는 값입력. -=> PRIMARY KEY로 지정해줘야 함.
다른 테이블 데이터 한 번에 입력 INSERT INTO ~ SELECT
-> MYSQL 기본 데이터인 world.city를 활용해서 풀기.
SELECT FROM world.city;
SELECT FROM world.city LIMIT 5; -> 5건 정도 살펴봄
여기서 이름과 인구를 가져오려면 먼저 테이블을 만들고 추출
CREATE TABLE city_popul (city_name CHAR(35), popluation INT);
INSERT INTO city_popul SELECT name, population from world.city
(1) 데이터 형식
(2) 데이터 조인
내부조인의 기본
SELECT <열 목록>
FROM <첫 번째 테이블>
INNER JOIN <두 번째 테이블>
ON <조인될 조건>
[WHERE 검색 조건] ;
->INNER JOIN을 그냥 JOIN으로 써도 INNER로 인식함.
이거 예시
WHERE 조건 생략하면 전체 내부조인된 표가 나옴.
내부 조인은 두 테이블에 모두 데이터가 있어야만 결과가 나옴. 반면, 외부 조인은 한 쪽에만 데이터가 있어도 결과가 나옴.
외부조인의 기본
SELECT <열 목록>
FROM <첫 번째 테이블(LEFT 테이블)>
<LEFT | RIGHT | FULL> OUTER JOIN <두번째 테이블(RIGHT 테이블)>
ON <조인될 조건> -> 그냥 LEFT JOIN이라고만 적어도 인식함.
[WHERE 검색 조건] ;
SELECT DISTINCT M.med_id, B.prod_name, M.men_name, M.addr
FROM member M
LEFT OUTER JOIN buy B
ON M.med_id = B.men_id
[ ]
ORDER BY M.men_id;
=> SQL은 회원가입만 하고 한번도 구매한 적 없는 회원의 목록임. 빈칸에 들어갈 적합한 구문은?
(1) JOIN B.prod_name IS NULL
(2) LIMIT B.prod_name IS NULL
(3) HAVING B.prod_name IS NULL
(4) WHERE B.prod_name IS NULL
(선택) 4번 (외부조인의 활용)
(정답) 4번 (이유: 회원 가입하고 멤버 ID랑 이름, 구매 물건을 ID 기준으로 합침. 근데 물건은 한번도 산 적이 없으니, 검색 조건인 prod_name에는 NULL로 나올 수 밖에 없음.
=> 우리 사이트에서 구매한 기록이 있는 횐님 찾기 완료!
3주차 공부 완료
-> SQL 문법은 R이랑 비슷한 거 같다.. R에서 JOIN 활용하던 기억을 더듬어서 이번 주 숙제 마무리. 1-2주차는 지각했다는 사실에 쫓겨서 제대로 못 풀었지만, 이번주는 차분하게 하니 숙제도 잘 풀 수 있었다. 다음주도 화이팅..