본문 바로가기

DataBase(SQL)

(22)
형태변환 1. 날짜 2. 숫자 3. 문자 -- 숫자를 문자로 SELECT TO_CHAR(1234) FROM Dual; -- 문자를 숫자로 SELECT TO_NUMBER('1234') + 55 FROM Dual; -- ☆ 날짜를 문자로 TO_CHAR(날짜, formatter)-> 통계에서 쓰임. 날짜는 사실상 GROUP BY가 불가능하므로 -- JAVA랑 다름. 검색해보기 SELECT TO_CHAR(ORDERDATE,'yyyy.mm.dd HH') FROM ORDERS; -- ☆ 문자를 날짜로 TO_DATE. WHERE조건에 쓰임 SELECT TO_DATE('2014-07-11','yyyy-mm-dd') FROM Dual; -- ADD_MONTHS(date, 숫자). 그냥 더하기도 가능함 -- ☆ SYSDATE. insert시 실행된 시간을 저장해..
DB _ API -- 출력시에 연산이 가능 SELECT orderid + 1, saleprice * 0.1 FROM ORDERS; SELECT 1234, saleprice FROM ORDERS; SELECT '안녕하세요', saleprice FROM ORDERS; -- 문자열 연산 || SELECT '안녕하세요'||'반갑', saleprice FROM ORDERS; SELECT * FROM book WHERE BOOKNAME LIKE '%축구%'; SELECT * FROM book WHERE BOOKNAME LIKE '%' || '축구' || '%'; -- 현재시간 SELECT SYSDATE FROM Dual; SELECT 1234 + 555 FROM Dual; -- ☆ 소수점 반올림. GROUP BY와 같이 쓰임 SE..
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 ;