개발자 끄적끄적
SQL 기본 구조, rollup 본문
SELECT : 저장된 데이터를 선택하는 문장
기본구조
SELECT *| 컬럼명들 - 3
[from 테이블명] - 1
[where 조건] - 2
[group by 컬럼명]
[with rollup]
[having 조건]
[order by 컬럼명 [asc | desc]]
[limit 시작위치, 개수]
실행 순서 : 1->2->3
기술 순서 : 3->1->2
[select 절]
- select절에 사용되는 컬럼명에는 연산식, 함수 등을 사용할 수 있다
- 컬럼명에 as(Alias) "별칭"과 같이 별칭을 사용할 수 있다
- '*'(All)는 모든 컬럼을 의미하지만 보안이나 성능 저하 등의 이유로 사용을 지양해야한다
- 공백이 있으면 as "성 명" -> 출력 : 성 명
공백이 없으면 as"성명"-> 출력 : 성명
[from 절]
- 데이터가 들어 있는 테이블명을 작성한다
- 서브 쿼리를 테이블명 대신 사용할 수 있다
- 생략된다면 select절에는 단순 함수나 문자열, 수식만을 작성할 수 있다
[where 절]
- 관계 연산자, 논리연산자 등을 사용하여 선택될 데이터들의 조건을 작성
- as "..."를 사용할 수 없다(order by는 사용가능)
이유->as는 select절에 선언되어 있고 select절보다 조건절(where)이 먼저 실행되기 때문
[group by 절]
- 데이터들 특정 컬럼의 크룹별로 취합하여 결과를 보여준다
- group by절을 사용하면 select절에는 group by절에서 사용된
컬럼이나 집계함수만을 사용할 수 있다
ex)고객별 지불금액의 합계를 조회(합계순)
select customerNumber, sum(amount) as "amt"
from payments
group by customerNumber
order by amt desc;
[having 절]
- group by절에 의해 취합된 결과를 선택하는 조건절이다
[order by절]
- 선택된 데이터를 정렬한다
- 2개 이상의 컬럼을 사용하여 1차로 정렬된 값들 중에서 2차로 정렬순서를 정할 수 있다
- order by절은 select절에 기술된 as "..."를 사용할 수 있다
ex)고객별 지불금액의 합계를 조회(합계순)
select customerNumber, sum(amount) as "amt"
from payments
group by customerNumber
order by amt desc;
[limit 절]
- 보여줄 행의 시작 위치와 갯수를 지정한다
- 출력 결과를 분리하여(페이징)보여주어야 할 때 많이 사용된다
ex)연산식을 계산하여 출력
select 10+10, 10*10;
*집계함수 count(컬럼명), sum(컬럼명), avg(컬럼명)
ex)customers테이블의 모든 값 조회
select *from customers
ex)컬럼명을 지정하여 값 조회
SELECT customerNumber, phone, city FROM customers;
ex)조건을 설정하여 값 조회
SELECT *FROM customers WHERE customerNumber = 112;
with rollup : group by된 그룹별 소계를 다시 계산해준다
ex)oderNumber별 합계와 전체 합계
select orderNumber, sum(priceEach), from orderdetails group by orderNumber with rollup;
- 전체를 기준으로 합계를 계산해준다
'MySQL' 카테고리의 다른 글
join, like, 정규화 (0) | 2023.03.08 |
---|---|
SQL 테이블, 무결성 제약, case (0) | 2023.03.08 |
MySQL 설치 및 cmd (0) | 2023.03.04 |