"2018 sql 워크샵"의 두 판 사이의 차이
DH 교육용 위키
(→UPDATE : 데이터 수정하기) |
(→JOIN(inner join/교집합) 구문 활용하기) |
||
(2명의 사용자에 의한 10개의 중간 편집이 숨겨짐) | |||
4번째 줄: | 4번째 줄: | ||
'''INSERT INTO table (column1, column2, ...) VALUES ( value1, value2)''' | '''INSERT INTO table (column1, column2, ...) VALUES ( value1, value2)''' | ||
*<span style="color:green">INSERT INTO 인물 (식별자, 이름, 생년, 시대) VALUES ('이혜영', '이혜영', 1993, '현대')</span> | *<span style="color:green">INSERT INTO 인물 (식별자, 이름, 생년, 시대) VALUES ('이혜영', '이혜영', 1993, '현대')</span> | ||
− | *<span style="color:green">INSERT INTO 인물 (식별자, 이름, 생년, 시대) VALUES ('김현규', '김현규', | + | *<span style="color:green">INSERT INTO 인물 (식별자, 이름, 생년, 시대) VALUES ('김현규', '김현규', 1989, '현대'), ('김선미','김선미', 1989, '현대')</span> |
====DELETE : 데이터 삭제하기==== | ====DELETE : 데이터 삭제하기==== | ||
'''DELETE FROM table_name WHERE condition''' | '''DELETE FROM table_name WHERE condition''' | ||
23번째 줄: | 23번째 줄: | ||
*조선시대 인물들이 등장하는 콘텐츠(조선시대가 배경인 콘텐츠)<br/><span style="color:green">SELECT 캐릭터.콘텐츠 FROM 캐릭터, 인물 WHERE 인물.식별자=캐릭터.인물 and 인물.시대='조선시대'</span> | *조선시대 인물들이 등장하는 콘텐츠(조선시대가 배경인 콘텐츠)<br/><span style="color:green">SELECT 캐릭터.콘텐츠 FROM 캐릭터, 인물 WHERE 인물.식별자=캐릭터.인물 and 인물.시대='조선시대'</span> | ||
*이혜영이 담당한 콘텐츠<br/><span style="color:green">SELECT 캐릭터.콘텐츠 FROM 캐릭터, 인물 WHERE 인물.식별자=캐릭터.인물 and 인물.담당자='이혜영'</span> | *이혜영이 담당한 콘텐츠<br/><span style="color:green">SELECT 캐릭터.콘텐츠 FROM 캐릭터, 인물 WHERE 인물.식별자=캐릭터.인물 and 인물.담당자='이혜영'</span> | ||
+ | *<span style="color:blue">Q)여자 배우가 등장하는 콘텐츠는?</span> ''hint. '캐릭터', '연기자' 테이블 사용 '' | ||
+ | |||
===JOIN(inner join/교집합) 구문 활용하기=== | ===JOIN(inner join/교집합) 구문 활용하기=== | ||
'''SELECT tableA.column, tableB.column FROM tableA INNER JOIN tableB ON tableA.column1 = tableB.column1''' | '''SELECT tableA.column, tableB.column FROM tableA INNER JOIN tableB ON tableA.column1 = tableB.column1''' | ||
*조선시대 인물들이 등장하는 콘텐츠(조선시대가 배경인 콘텐츠)<br/><span style="color:green">SELECT 캐릭터.콘텐츠 FROM 캐릭터 INNER JOIN 인물 on 인물.식별자=캐릭터.인물 WHERE 인물.시대='조선시대'</span> | *조선시대 인물들이 등장하는 콘텐츠(조선시대가 배경인 콘텐츠)<br/><span style="color:green">SELECT 캐릭터.콘텐츠 FROM 캐릭터 INNER JOIN 인물 on 인물.식별자=캐릭터.인물 WHERE 인물.시대='조선시대'</span> | ||
*이혜영이 담당한 콘텐츠<br/><span style="color:green">SELECT 캐릭터.콘텐츠 FROM 캐릭터 INNER JOIN 인물 ON 인물.식별자=캐릭터.인물 WHERE 인물.담당자='이혜영'</span> | *이혜영이 담당한 콘텐츠<br/><span style="color:green">SELECT 캐릭터.콘텐츠 FROM 캐릭터 INNER JOIN 인물 ON 인물.식별자=캐릭터.인물 WHERE 인물.담당자='이혜영'</span> | ||
+ | *<span style="color:blue">Q)드라마 이산에 출연한 배우들의 이름과 태어난 년도(생년)는?</span> ''hint. '캐릭터', '연기자' 테이블 사용 '' | ||
*성별이 여자인 역사인물<br/><span style="color:green">SELECT 캐릭터.인물 FROM 캐릭터 INNER JOIN 인물 ON 인물.식별자=캐릭터.인물 join 연기자 on 연기자.식별자=캐릭터.연기자 WHERE 연기자.성별='여'</span> | *성별이 여자인 역사인물<br/><span style="color:green">SELECT 캐릭터.인물 FROM 캐릭터 INNER JOIN 인물 ON 인물.식별자=캐릭터.인물 join 연기자 on 연기자.식별자=캐릭터.연기자 WHERE 연기자.성별='여'</span> | ||
− | + | ===JOIN(left join/차집합) 구문 활용하기=== | |
+ | <span style="color:red">데이터의 오류를 확인할 때 주로 사용</span> | ||
+ | '''SELECT * FROM tableA LEFT JOIN tableB ON tableA.column = tableB.column WHERE tableB.column IS NULL''' | ||
+ | *캐릭터 테이블과 연결되지 않는 인물<br/><span style="color:green">SELECT * FROM 캐릭터 LEFT JOIN 인물 ON 인물.식별자 = 캐릭터.인물 WHERE 인물.식별자 IS NULL</span> |
2018년 8월 16일 (목) 17:25 기준 최신판
목차
데이터 수정(Modify)
행(law 기준)
INSERT : 데이터 추가하기
INSERT INTO table (column1, column2, ...) VALUES ( value1, value2)
- INSERT INTO 인물 (식별자, 이름, 생년, 시대) VALUES ('이혜영', '이혜영', 1993, '현대')
- INSERT INTO 인물 (식별자, 이름, 생년, 시대) VALUES ('김현규', '김현규', 1989, '현대'), ('김선미','김선미', 1989, '현대')
DELETE : 데이터 삭제하기
DELETE FROM table_name WHERE condition
조건을 지정하지 않으면 모든 데이터가 삭제되니 주의할 것!
- DELETE FROM 인물 WHERE 식별자 = '이혜영'
- DELETE FROM 인물 WHERE 시대 = '현대'
열(column 기준)
UPDATE : 데이터 수정하기
UPDATE table_name SET column1 = value1, column2 = value2, ... WHERE condition
조건을 지정하지 않으면 한 칼럼의 데이터값이 모두 변경되니 주의할 것
- UPDATE 콘텐츠 SET 이름 = '나는 왕이로소이다' where 식별자 = '나는왕이로소이다'
- UPDATE 콘텐츠 SET 제작사 = null WHERE 제작사 = 'NULL'
- UPDATE 콘텐츠 SET 방송사 = null, 홈페이지 = null WHERE 방송사 = 'NULL' or 홈페이지 = 'NULL'
관련있는 테이블 함께 보기
WHERE 조건 활용하기
SELECT tableA.column, tableB.column FROM tableA,tableB WHERE tableA.column1 = tableB.column1
- 조선시대 인물들이 등장하는 콘텐츠(조선시대가 배경인 콘텐츠)
SELECT 캐릭터.콘텐츠 FROM 캐릭터, 인물 WHERE 인물.식별자=캐릭터.인물 and 인물.시대='조선시대' - 이혜영이 담당한 콘텐츠
SELECT 캐릭터.콘텐츠 FROM 캐릭터, 인물 WHERE 인물.식별자=캐릭터.인물 and 인물.담당자='이혜영' - Q)여자 배우가 등장하는 콘텐츠는? hint. '캐릭터', '연기자' 테이블 사용
JOIN(inner join/교집합) 구문 활용하기
SELECT tableA.column, tableB.column FROM tableA INNER JOIN tableB ON tableA.column1 = tableB.column1
- 조선시대 인물들이 등장하는 콘텐츠(조선시대가 배경인 콘텐츠)
SELECT 캐릭터.콘텐츠 FROM 캐릭터 INNER JOIN 인물 on 인물.식별자=캐릭터.인물 WHERE 인물.시대='조선시대' - 이혜영이 담당한 콘텐츠
SELECT 캐릭터.콘텐츠 FROM 캐릭터 INNER JOIN 인물 ON 인물.식별자=캐릭터.인물 WHERE 인물.담당자='이혜영' - Q)드라마 이산에 출연한 배우들의 이름과 태어난 년도(생년)는? hint. '캐릭터', '연기자' 테이블 사용
- 성별이 여자인 역사인물
SELECT 캐릭터.인물 FROM 캐릭터 INNER JOIN 인물 ON 인물.식별자=캐릭터.인물 join 연기자 on 연기자.식별자=캐릭터.연기자 WHERE 연기자.성별='여'
JOIN(left join/차집합) 구문 활용하기
데이터의 오류를 확인할 때 주로 사용
SELECT * FROM tableA LEFT JOIN tableB ON tableA.column = tableB.column WHERE tableB.column IS NULL
- 캐릭터 테이블과 연결되지 않는 인물
SELECT * FROM 캐릭터 LEFT JOIN 인물 ON 인물.식별자 = 캐릭터.인물 WHERE 인물.식별자 IS NULL