개발자 끄적끄적

SQL 기본 구조, rollup 본문

MySQL

SQL 기본 구조, rollup

햏치 2023. 3. 8. 00:15

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