전체 글 277

SQL VIEW

중첩쿼리문을 많이 중첩시켜서 사용할 경우 가독성이 떨어진다 이때 VIEW를 사용하여 쿼리문의 가독성을 높일 수 있다. 각 직무별 데이터 수요에 알맞은, 다양한 구조의 데이터 분석 기반을 구축해둘 수 있습니다. 컴퓨터에 일일히 물리적으로 저장되지는 않는 가상의 테이블이다. CREATE VIEW three_tables_joined AS SELECT i.id, i.name, AVG(star) AS avg_star, COUNT(*) AS count_star FROM item AS i LEFT OUTER JOIN review AS r on r.item_id = i.id LEFT OUTER JOIN member AS m ON r.mem_id = m.id WHERE m.gender = 'f' GROUP BY i.id..

SQL 서브쿼리 실습

select * from review where item_id in ( select id from item where registration_date < '2018-12-31' ); - where절 서브쿼리 * review 테이블의 모든 컬럼 * 2018-12-31 이전의 review 확인 * in 으로 review 테이블의 item_id와 item 테이블의 id가 같은게 있으면 값을 가져오게함 SELECT AVG(review_count), MAX(review_count), MIN(review_count) FROM (SELECT SUBSTRING(address, 1, 2) AS region, COUNT(*) AS review_count FROM review AS r LEFT OUTER JOIN membe..

SQL 서브쿼리 종류

*서브쿼리 1) SELECT절에서 서브쿼리 사용(스칼라 서브쿼리) - price 컬럼 옆에 평균 price를 붙여서 비교하면서 볼 수 있도록함 SELECT id, name, price, (SELECT AVG(price) FROM item) AS avg_price FROM copang_main.item; 2) WHERE절에서 서브쿼리 사용(중첩쿼리) - item 테이블에서 최소가격인 항목만 보여준다. SELECT id, name, price FROM item WHERE price = (SELECT MIN(price) FROM item); 3) FROM절에서 서브쿼리 사용(인라인뷰) - 리뷰 테이블에서 item_id를 GROUP BY 했을때 리뷰수가 3개 이상인 item_id를 가져온다. 그 item_id를..

SQL COALESCE, JOIN, USING, UNION

SELECT p.name AS name, COALESCE(s.sales_volume, '판매량 정보 없음') AS '판매량' FROM pizza_price_cost p LEFT OUTER JOIN sales s on p.id = s.menu_id ; * COALESCE SELECT A, COALESCE(A,'널입니다.') FROM TABLE; SELECT 문에 사용함 NULL일 때 나타낼 내용을 지정한다. (오라클에서 NVL() 같은것) * JOIN문 -- OLD ITEM 테이블 기준으로 보기 -- OLD 테이블에는 있지만 NEW 테이블에는 없는 SELECT OLD.ID OLD ID, OLD.NAME OLD NAME, NEW.ID NEW ID, NEW.NAME NEW NAME FROM ITEM AS OL..

SQL Foreign Key

*Foreign Key Foreign Key는 다른 테이블의 특정 row를 식별할 수 있어야 하기 때문에 주로 다른 테이블의 Primary Key를 참조한다. products, customers 테이블이 부모가 되고 orders 테이블이 자식 테이블이됨 orders에서 product의 name이나 price를 알 수 없지만 Foreign Key 통한 join을 통해서 정보를 확인 할 수 있음 SELECT o.productID, p.name, p.price FROM products p INNER JOIN orders o ON p.name = o.productID; 내생각에는 이런 간다한 그림이 이해하는게 좋을것 같아 정리함

SQL 실용함수들 살펴보기

-- 5~100세 사이 member들의 나이 평균 SELECT AVG(age) FROM copang_main.member WHERE age BETWEEN 5 AND 100; -- 끝자리에 호가 없는행 SELECT * FROM copang_main.member WHERE address NOT LIKE '%호'; --COMMENT가 NULL이 아닌 ROW들로 평균 별점 구하기 SELECT COUNT(COMMENT) AS 'COUNT(*)', ROUND(AVG(star)) FROM review WHERE COMMENT IS NOT NULL; -- 비만도 계산식 SELECT email, height, weight, weight / ((height/100) * (height/100)) FROM copang_mai..

SQL 백문이 불여일타

데이터특성 구성하기 SELECT COUNT(*) FROM copang_main.member; SELECT COUNT(email) FROM copang_main.member; SELECT MIN(weight) FROM copang_main.member; SELECT MAX(weight) FROM copang_main.member; SELECT AVG(weight) FROM copang_main.member; SELECT SUM(age) FROM copang_main.member; SELECT STD(age) FROM copang_main.member; -- 표준편차 SELECT CEIL(height) FROM copang_main.member; -- 올림함수 SELECT FLOOR(height) FROM ..

ORA-0093: "SQL command not properly ended"

console에 이런게 찍혀서 블로그를 찾아보니 쿼리가 잘못되었을때 나오는 오류라고 하여 아무리 봐도 문제가 없는듯하였는데 쿼리 문제가 맞았다. 하도 안되서 다시 싹 지우고 하니까 된다. DAO에서 게시물 목록을 조회, 안에 게시물 조회를 위한 쿼리가 있음 // 검색 조건에 맞는 게시물 목록을 반환합니다. public List selectList(Map map) { List bbs = new Vector(); // 게시물 목록 조회 결과를 담을 변수 // Vector - ArrayList와 비슷함 스레드 환경에서의 안정성은 높지만 ArrayList와 비교하여 추가, 검색, 삭제 성능 떨어짐 String query = "SELECT * FROM board "; if (map.get("searchWord")..

JSP 2023.01.10