Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
Tags
- 불완전서브타입
- 실행계획
- Workbench
- 제5정규형
- 배타서브타입
- 제1정규형
- order-by
- 중복서브타입
- 데이터통합
- 공통코드
- vue3
- index
- 물리모델
- 함수종속
- bc정규형
- 서브타입
- 더미데이터
- 정규형
- 제3정규형
- SQL
- 인덱스
- mysql
- 제2정규형
- 워크벤치
- 샘플데이터
- 완전서브타입
- 제4정규형
- group-by
- 크롬원격데스크톱
- 요구사항명세서
Archives
- Today
- Total
domsam - IT 기술 블로그
DAY.09 본문
반응형
렌더링 (A:HTML코드 생성)
(B:객체 생성해서 화면에 표시)
SSR (Server Side Rendering) - HTML코드 생성을 백엔드 처리, B는 브라우저
CSR (Client Side Rendering) - HTML코드 생성을 브라우저의 JS 처리, B는 브라우저
데이터 가공은 프론트엔드, 백엔드 DB에서 처리할 수 있다.
가능한 프론트엔드에서 처리할 수 있으면 처리하는데 백엔드에서 처리하는 것이 효율적이면 백엔드에서도 가능하다. 하지만 가능한 DB는 안 할 수 있으면 안 하는 방향으로 처리하는 것이 좋다. DB는 괴롭히지 않는다.
-- 02-(11) 고객의 이름과 고객이 구매한 도서 목록
SELECT C.name, B.bookname
FROM orders O
INNER JOIN customer C
ON C.custid = O.custid
INNER JOIN book B
ON B.bookid = O.bookid;
-- 02-(12) 도서의 가격(Book 테이블)과 판매가격 (Orders 테이블)의 차이가 가장 많은 주문
-- orders 테이블에 있는 내용 모두 출력
-- [1] 가장 큰 차이 금액 (6,000원)
SELECT O.saleprice, B.price, B.price - O.saleprice
FROM orders O
INNER JOIN book B
ON B.bookid = O.bookid;
SELECT MAX(B.price - O.saleprice)
FROM orders O
INNER JOIN book B
ON B.bookid = O.bookid;
-- [2] 6,000원 차이가 있는 책을 찾는다.
SELECT O.orderid, O.custid, B.bookname
FROM orders O
INNER JOIN book B
ON B.bookid = O.bookid
WHERE B.price - O.saleprice = 6000;
-- [3] 1,2번 작업 조합
SELECT O.orderid, O.custid, B.bookname
FROM orders O
INNER JOIN book B
ON B.bookid = O.bookid
WHERE ( B.price - O.saleprice ) = ( SELECT MAX(B.price - O.saleprice)
FROM orders O
INNER JOIN book B
ON B.bookid = O.bookid );
-- 02-(13) 도서의 판매액 평균보다 자신의 구매액 평균이 더 높은 고객의 이름
-- [1] 도서 평균 판매액 (11800.0)
SELECT AVG(saleprice)
FROM orders;
-- [2] 고객 별 평균 판매액(구매액)
SELECT custid, AVG(saleprice)
FROM orders
GROUP BY custid;
SELECT custid, AVG(saleprice) AS avg_saleprice
FROM orders
GROUP BY custid
HAVING avg_saleprice > 11800;
-- [3] 1,2 조합
SELECT C.name
FROM orders O
INNER JOIN customer C
ON C.custid = O.custid
GROUP BY C.name
HAVING AVG(saleprice) > ( SELECT AVG(saleprice)
FROM orders );
/* p.221 숫자 함수
*/
SELECT 4.0, 4.1, ceil(4.0), ceil(4.1), ceil(4.0000001), 4.99999999, FLOOR(4.99999);
-- p.230 IFNULL함수
SELECT custid, NAME, address, IFNULL(phone, '폰번호없음') AS phone
FROM customer;
/* := (대입연산자) >> B의 결과값을 A에 복사한다.
A:=B
@변수명 >> 값을 저장할 수 있는 공간 할당(변수 선언)
초기화: 변수에 최초 값을 복사해서 넣을 때
변수는 read(읽기), write(쓰기)
@seq:=@seq+1 실행 순서
(1) @seq값 읽기
(2) 읽어온 값 + 1 >> 결과값
(3) 결과값을 @seq에 대입
*/
SET @seq:=0; -- seq라는 이름을 가진 공간(변수)에 0을 집어넣겠다.
SELECT @seq:=@seq+1; -- @seq:=0+1, @seq:=1+1
SELECT @seq;
SELECT (@seq:=@seq+1) '순번', custid, NAME, phone
FROM customer;
SELECT @seq;
SELECT custid
FROM customer
WHERE address LIKE '%대한민국%';
-- p.236
SELECT saleprice
FROM orders
WHERE custid = 3;
SELECT *
FROM orders
WHERE saleprice > ALL ( SELECT saleprice
FROM orders
WHERE custid = 3 );
SELECT *
FROM orders
WHERE saleprice > ( SELECT max(saleprice)
FROM orders
WHERE custid = 3 );
SELECT *
FROM orders
WHERE saleprice > SOME ( SELECT saleprice
FROM orders
WHERE custid = 3 );
SELECT *
FROM orders
WHERE saleprice > ( SELECT MIN(saleprice)
FROM orders
WHERE custid = 3 );
-- p.241
SELECT cs.name, SUM(od.saleprice) 'total'
FROM (
SELECT custid, NAME
FROM customer
WHERE custid <= 2
) cs
INNER JOIN orders od
ON od.custid = cs.custid
GROUP BY cs.name;
-- p.244 VIEW
CREATE OR REPLACE VIEW v_vorders
AS
SELECT O.orderid, O.custid, O.bookid, O.saleprice, O.orderdate
, B.bookname, C.name
FROM orders O
INNER JOIN book B
ON B.bookid = O.bookid
INNER JOIN customer C
ON C.custid = O.custid;
SELECT * FROM v_vorders;