본문 바로가기

DataBase(SQL)/DAY 25 _ 23.09.21

(9)
Exists -- 서브쿼리의 결과 집합이 비어 있지 않은 경우에만 주 쿼리의 조건을 만족시킬 때 사용됩니다. -- 이것은 주로 서브쿼리의 결과가 존재하는지 여부를 확인하고 필터링할 때 유용하게 사용됩니다. --> exists() : 유!일! 하게 매트릭스를 받을 수 있음 --> 그럼 벡터랑 스칼라는 당연하게 들어갈 수 있겠지? --> exists안의 결과가 (개수 상관없이) 있으면 true, 없으면 false... SELECT * FROM ORDERS o WHERE o.CUSTID = 1000; --> 이런건 없으니까 -- 여담 SELECT 1 FROM ORDERS o WHERE o.CUSTID = 1000; --> 이렇게도 쓸 수 있따. 1이 반환되면 false --> 결과 존재유무 확인하기 좋겠찌? SELECT ..
집합 연산 1) 차집합 SELECT * FROM CUSTOMER c minus SELECT * FROM CUSTOMER c WHERE c.CUSTID in(1, 3, 5) 2) 교집합 SELECT * FROM CUSTOMER c intersect SELECT * FROM CUSTOMER c WHERE c.CUSTID in(1, 3, 5) 3) union : 두 개의 결과 집합을 하나로 합칠 수 있다.... 하지만 이해가 안된다면 패스 SELECT BOOKID a, BOOKNAME b FROM BOOK b UNION SELECT CUSTID a, NAME b FROM CUSTOMER c
Sub Query2 --Q.대한미디어에서 출판한 도서를 구매한 고객의 이름을 보이시오 --1) join이용 SELECT c.NAME FROM ORDERS o INNER JOIN BOOK b ON o.BOOKID = b.BOOKID INNER JOIN CUSTOMER c ON c.CUSTID = o.CUSTID WHERE b.PUBLISHER = '대한미디어'; --2) where in 이용 --1) 고객의 이름 SELECT c.NAME FROM CUSTOMER c --2) 도서를 구매한 SELECT * FROM ORDERS o --3) 대한미디어에서 출판한 SELECT * FROM BOOK b WHERE b.PUBLISHER = '대한미디어' --4) 결과 SELECT c.NAME FROM CUSTOMER c WHERE c..
Where~in / inner join SQL에서 데이터를 필터링하고 결합하는 데 사용되는 두 가지 다른 기능입니다. 이들 간의 주요 차이점은 다음과 같습니다: 1. 용도 및 사용 사례: WHERE IN: 일반적으로 하나의 테이블에서 다른 테이블과 관련된 값을 필터링할 때 사용됩니다. 예를 들어, 특정 열의 값을 다른 테이블의 열 값과 비교하여 일치하는 행을 선택할 때 사용합니다. INNER JOIN: 두 개 이상의 테이블을 결합하여 두 테이블 간의 관련된 데이터를 가져올 때 사용됩니다. 주로 관계형 데이터베이스에서 테이블 간의 관계를 활용하여 데이터를 가져오는 데 사용됩니다. 2. 결과 집합: WHERE IN: 주로 하나의 테이블에서 선택된 행을 필터링하는 데 사용되며 결과는 원래 테이블에서 선택한 열 값만 포함하는 단일 테이블의 결과를 반..
Sub Query --Q. 가장 비싼 도서의 이름을 검색하시오 -- 강의 SELECT * FROM BOOK b1 WHERE b1.PRICE = 35000; SELECT MAX(PRICE) FROM BOOK; --> 합치기 SELECT * FROM BOOK b1 WHERE b1.PRICE = (SELECT MAX(PRICE) FROM BOOK); --> if) max(price)가 아니라 그냥 price면 스칼라가 아니라 벡터가 나오겠지? --> 벡터를 비교하고싶으면 in을 쓰면 되겠지! SELECT * FROM BOOK b1 WHERE b1.PRICE in (SELECT PRICE FROM BOOK); --Q.도서를 구매한 경험이 있는 고객의 이름을 검색하시오 SELECT * FROM CUSTOMER c INNER JOI..
Outer join --Q. 도서를 구매하지 않은 고객을 포함하여, 고객의 이름과 고객이 주문한 도서의 판매가격을 구하시오 SELECT * FROM CUSTOMER c --> 고객의 이름을 출력하고싶으니까 기준도 customer여야겠지 LEFT OUTER JOIN ORDERS o ON c.CUSTID = o.CUSTID ORDER BY c.CUSTID ; --> 기준이 달라지면 박세리가 안나오겠지 ㅠ (웬만하면 foriegnkey가 기준!) SELECT * FROM ORDERS o LEFT OUTER JOIN CUSTOMER c ON c.CUSTID = o.CUSTID ORDER BY c.CUSTID ;
Inner Join --1) SELECT * FROM CUSTOMER, ORDERS; --> orders의 행이 10개인데, 각 customer마다 10개씩 출력됨 --> for를 도는데, 1번일때 10개가 나오고, 나머지9개의 null에는 1번을 넣어버리는구나. --2) SELECT * FROM ORDERS o, CUSTOMER c WHERE o.CUSTID = c.CUSTID; --> 일단은 custid가 같은애들끼리 묶으면 10개만 딱 나오긴해. --3) 기본키, 외래키 조합이어야 함 SELECT * FROM ORDERS o, BOOK b WHERE o.BOOKID = b.BOOKID; --> 각 테이블의 primarykey를 찾고, 겹치는걸 엮으면되지뭐 --4) 외래키 외래키 끼리 하는건 의미가 없지? SELECT ..
집계 함수 Quiz -- 1 마당서점의 고객이 요구하는 다음 질문에 대해 SQL 문을 작성하시오. -- (1) 도서번호가 1인 도서의 이름 SELECT BOOKNAME FROM BOOK WHERE BOOKID = 1; -- (2) 가격이 20,000원 이상인 도서의 이름 SELECT BOOKNAME FROM BOOK WHERE PRICE >= 20000; -- (3) 박지성의 총 구매액(박지성의 고객번호는 1번으로 놓고 작성) SELECT SUM(SALEPRICE) FROM ORDERS WHERE CUSTID = 1; -- (4) 박지성이 구매한 도서의 수(박지성의 고객번호는 1번으로 놓고 작성) SELECT count(*) FROM ORDERS o WHERE CUSTID = 1; -- 2 마당서점의 운영자와 경영자가 요구..