01 정렬쿼리
ORDER BY
02
집계 함수와 GROUP BY
- COUNT, SUM, AVG, MIN, MAX, HAVING
03
JOIN
실습> 데이터베이스와 테이블 (account, market)을 만들기
CREATE DATABASE day_4;
USE day_4;
CREATE TABLE account(nickname VARCHAR(30) NOT NULL PRIMARY KEY,
address VARCHAR(100),
manner_point INT,
reg_date DATETIME,
phone_number VARCHAR(15) UNIQUE
);
CREATE TABLE market(market_id BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY,
seller VARCHAR(30),
product VARCHAR(30),
amount INT,
price BIGINT,
reg_date DATETIME,
FOREIGN KEY (seller) REFERENCES account(nickname));
[01 정렬 쿼리 order by]
조회한 레코드 목록을 정렬할 때 사용
- ASC : 오름차순 정렬
- DESC : 내림차순 정렬
* select문을 통해 전체 테이블을 가져오거나 규칙 지정하여 테이블의 일부를 가져올 수 있음
기본적인 사용 구문
SELECT 필드명1, 필드명2, 필드명3 ... FROM 테이블명
* 필드 (컬럼)명은 하나 또는 여러개가 될 수 있으며 콤마로 구분해서 사용함
또한 테이블의 전체를 가져오려면 필드명에 *을 사용함
SELECT*FROM 테이블명
참고) https://yeolco.tistory.com/98
SELECT column1
FROM table_name
ORDER BY column1 ASC | DESC;
* 여러 개의 속성을 정렬 할 때
SELECT column1, column2,....
FROM table_name
ORDER BY column1 ASC | DESC , column2 ASC | DESC
실습> market 테이블울 판매 상품 이름순으로 정렬해서 조회해라
SELECT*
FROM market
ORDER BY product;
실습> market 테이블을 비싼 상품순으로 정렬하여 판매자와 상품만 조회하라
SELECT seller, product
FROM market
ORDER BY price DESC;
실습> market테이블을 판매 개수순으로 정렬하고 같은 개수의 상품은 비싼 상품순으로 정렬하라
SELECT*FROM market
ORDER BY amount, price DESC;
실습> account 테이블을 매너가 나쁜 판매자 순으로 정렬해서 조회하라
SELECT*FROM account
ORDER BY manner_point;
실습> account 테이블을 등록 날자 순으로 정렬하고 판매자 이름과 전화번호만 조회하라
SELECT nickname, phone_number
FROM account
ORDER_BY reg_date;
[02 집계 함수와 GROUP BY]
<집계함수>
집계 함수는 여러 행으로부터 하나의 계산 값을 반환하는 함수임
SELECT 문에만 사용 가능함
- COUNT (column1)
선택한 칼럼의 null을 제외한 행의 개수를 셈
COUNT(*)로 작성하면 테이블에 존재하는 행의 개수를 반환함
-AVG(column1)
선택한 칼럼의 평균을 구함
숫자인 값에 대해서만 연산이 가능, null값은 무시하고 계산함
- SUM(column1)
선택한 칼럼의 합을 구함
평균과 마찬가지로 숫자인 값에 대해서면 연산이 가능
- MIN(column1) | MAX(column1)
선택한 칼럼의 최솟값과 최댓값을 구함
AVG와 SUM과 다르게 숫자가 아닌 값에도 연산이 가능함
<GROUP BY / HAVING>
GROUP BY(column1) 은 column1 값들로 그룹을 묶어서 각 그룹별로 계산을 시켜주는 구문임
* 칼럼이 여러개일 경우 column1을 기준으로 그룹을 만든 후, 그 안에서 column2를 기준으로 하는 그룹을 만듦
GROUP BY(column1, column2);
HAVING 절은 집계함수 그리고 GROUP BY 와 함께 쓰는 조건문임
* WEHRE절과는 다르게 집계 함수와 함께 사용 가능함
* SELECT문과 사용되는 구문들의 순서
SELECT- FROM-WHERE-GROUP BY- HAVING- ORDER BY
[03 JOIN - INNER JOIN, OUTER JOIN]
: JOIN 두개 이상의 테이블을 서로 연결하여 데이터를 검색할 때 사용하는 방법
- 두 테이블의 조인을 위해 키와 외래키 관계를 설정해 두면 속도 향상의 이점이 있음
<INNER JOIN>
두 테이블에 지정한 컬럼의 데이터가 있는 경우만 조회
SELECT column1, column2,...
FROM table_A
INNER JOIN table_B
ON table_A.column = table_B.column;
<OUTER JOIN (외부조인)>
두 테이블 중 하나의 테이블에만 지정한 컬럼에 값이 있어도 조회
SELECT column1, column2,...
FORM table_A - (LEFT 테이블)
<LEFT | RIGHT | FULL> JOIN table_B - (RIGHT 테이블)
ON table_A.column = table_B.column;