Advertisement

mysql 서브쿼리

Master - CodeSquad at CodeSquad
Dec. 22, 2014
Advertisement

More Related Content

Advertisement

mysql 서브쿼리

  1. 데이터베이스 베이직 서브쿼리, 뷰 NHN NEXT 정호영 나눔고딕 및 나눔고딕코딩 글꼴을 설치해 주세요.
  2. 오늘의 실습자료
  3. 셀프 조인 테이블이 자기 자신과 조인하는 걸 말합니다. 예) 사용자와 추천인의 이름을 보여주세요.
  4. 셀프 조인 사용자와 추천인의 이름을 보여주세요. SELECT u.name, R.name FROM user U LEFT JOIN user R ON U.CHOO = R.ID;
  5. 서브 쿼리(SUB QUERY) 쿼리 안에 다른 쿼리가 들어가는 형태 중첩 쿼리(nested query) 라고도 합니다.
  6. 서브 쿼리 예제 1 ‘맥북’을 팔고 있는 유저의 정보를 출력하세요. 바깥쪽 쿼리 : OUTER QUERY 안쪽 쿼리 : INNER QUERY, SUB QUERY SELECT * FROM user u WHERE u.id = ( SELECT seller FROM trade t WHERE item_name = '맥북' );
  7. 서브 쿼리의 특징 SELECT, INSERT, UPDATE, DELETE 모두에 사용 가능 단, 안쪽 쿼리는 무조건 SELECT 쿼리입니다.
  8. 서브 쿼리의 특징 모든 단일 값(스칼라)이 올 수 있는 자리에 사용 가능 하나의 레코드가 올 수 있는 자리도 대치 가능 테이블(여러 레코드)이 올 수 있는 자리도 대치 가능
  9. 스칼라 값 대체 쿼리 GTA5를 팔고 있는 유저 1명의 정보를 출력하세요. SELECT * FROM user u WHERE u.id = ( SELECT seller FROM trade t WHERE item_name = ‘GTA5‘ limit1 );
  10. 스칼라 값 대체 쿼리 2번 마켓에서 가장 많은 상품을 팔고 있는 사람의 정보를 출력하세요.
  11. 스칼라 값 대체할 때 주의사항 서브 쿼리의 결과값으로 두 개의 값이 오면 에러 발생
  12. IN 과 NOT IN IN과 NOT IN은 스칼라 집합에 대해 사용 가능 예) 아이폰을 팔고 있는 유저의 정보를 모두 출력하시오 SELECT * FROM user WHERE iD = ( SELECT seller FROM trade WHERE item_name like '아이폰%' );
  13. IN 과 NOT IN IN과 NOT IN은 스칼라 집합에 대해 사용 가능 예) 아이폰을 팔고 있는 유저의 정보를 모두 출력하시오 SELECT * FROM user WHERE id IN ( SELECT seller FROM trade WHERE item_name like '아이폰%' );
  14. IN 과 NOT IN 2번 마켓에 파는 물건이 없는 유저의 정보를 검색하세요.
  15. ANY 컬럼이름 비교연산자 ANY (쿼리) 결과값에 하나라도 만족하면 TRUE 적어도 하나의 상품을 구매가능한 유저의 정보를 출력하세요.
  16. ANY 컬럼이름 비교연산자 ANY (쿼리) 결과값에 하나라도 만족하면 TRUE 적어도 하나의 상품을 구매가능한 유저의 정보를 출력하세요. SELECT * FROM user WHERE money >= any ( SELECT price FROM trade );
  17. ALL 컬럼이름 비교연산자 ALL (쿼리) 서브 쿼리의 모든 결과를 만족시키는 경우에만 참 마켓의 어떤 물건이라도 구매 가능한 유저의 정보를 출력하라.
  18. 상관 쿼리 상관 쿼리 : 바깥 쿼리 테이블의 속성이 안쪽 쿼리에 나오는 경우 SELECT * FROM T1 WHERE COL1 = (SELECT COL3 FROM T2 WHERE t1.COL2 = T2.COL4);
  19. 비상관 쿼리의 동작 방식 안쪽 쿼리 실행 -> 스칼라 값 추출 -> 바깥쿼리 실행 ->최종 결과 안쪽 테이블 바깥쪽 테이블 안쪽 쿼리 수행 결과값 최종 결과
  20. 상관 쿼리의 동작 방식 바깥쪽 쿼리 실행 -> 레코드 하나의 각각의 값이 안쪽 쿼리를 만족 바깥쪽 테이블 최종 결과 안쪽 테이블
  21. 상관 쿼리 유저 자신의 판매 물품 가격의 총합이 그 유저의 재산보다 많은 유저의 정보를 출력하시오.
  22. EXISTS와 NOT EXISTS EXISTS(서브쿼리) : 쿼리가 하나 이상 나오면 참 NOT EXISTS(서브쿼리) : 결과가 하나라도 있으면 거짓 주로 상관 쿼리에 사용됩니다. 앞에 컬럼 이름이 나오지 않습니다.
  23. EXISTS와 NOT EXISTS 2번 마켓에 판매 물품이 없는 유저를 검색하시오.
  24. FROM 절의 서브쿼리 FROM 절에도 쿼리가 올 수 있습니다. 반드시 테이블에 별명을 붙여줘야 합니다. SELECT m.name, m.item_name FROM (SELECT * FROM user u LEFT JOIN TRADE t ON u.id = t.seller) AS m;
  25. VIEW SELECT 쿼리를 이용해서 만든 가상 테이블 용량을 차지하지 않음 생성: CREATE VIEW 명령 사용 CREATE VIEW 뷰이름 as (SELECT…); 사용 : 일반적인 테이블과 동일 SELECT * FROM 뷰이름 ...; 삭제 : DROP VIEW 명령 사용 DROP VIEW my_view;
  26. 학습 정리 서브 쿼리에 대해 배웠습니다. 서브 쿼리를 사용하면 의미가 명확해 집니다. 중첩 상관 쿼리는 성능이 좋지 않을 수 있습니다. 데이터베이스에 따라 최적화에 의해 성능이 달라집니다.
  27. THANK YOU!!!
Advertisement