"2018 sql 워크샵"의 두 판 사이의 차이

DH 교육용 위키
이동: 둘러보기, 검색
(JOIN(inner join/교집합) 구문 활용하기)
(JOIN(inner join/교집합) 구문 활용하기)
 
(2명의 사용자에 의한 3개의 중간 편집이 숨겨짐)
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 ('김현규', '김현규', 1990, '현대'), ('김선미','김선미', 1990, '현대')</span>
+
*<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>
+
*<span style="color:blue">Q)여자 배우가 등장하는 콘텐츠는?</span> ''hint. '캐릭터', '연기자' 테이블 사용 ''
  
 
===JOIN(inner join/교집합) 구문 활용하기===
 
===JOIN(inner join/교집합) 구문 활용하기===
29번째 줄: 29번째 줄:
 
*조선시대 인물들이 등장하는 콘텐츠(조선시대가 배경인 콘텐츠)<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>
+
*<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/차집합) 구문 활용하기===
 
===JOIN(left join/차집합) 구문 활용하기===
<span style="color:red">데이터의 오류를 확인할 때 주로 사용</span>
+
<span style="color:red">데이터의 오류를 확인할 때 주로 사용</span>  
 
  '''SELECT * FROM tableA LEFT JOIN tableB ON tableA.column = tableB.column WHERE tableB.column IS NULL'''
 
  '''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>
 
*캐릭터 테이블과 연결되지 않는 인물<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