use sample;
select *
from sample31
order by age; #나이를 기준으로 정렬
select * from sample31;
#ORDER BY age ASC - 오름차순
#RDER BY age DESC - 내림차순
DESC -> Descendant(하강)
ASC -> Ascendant(상승)
1999년 < 2014년 < 2023년
수치형과 같다
a,b,c/ㄱ,ㄴ,ㄷ순으로 비교
(유니코드로 비교?)
사전식 순서에 의해 결정된다
알파벳 - 가나다 순

a column은 varchar타입을 갖고있다
ORDER BY로 오름차순 정렬 시행
select * from sample311 order by a,b;
# a기준으로 먼저 정렬, 그다음에b정렬
select * from sample311 order by b,a;
#b먼저 정렬하고 a정렬
select * from sample311 order by a DESC,b DESC;
#정렬방법 지정해주기
NULL값은 값자체가 없는 상태이므로 DBMS에 따라 기준이 다르다고한다
MYSQL에서는 NULL값을 가장 작은값으로 취급해서 정렬한다
페이징에 사용할수있다
MYSQL등에서 사용하며 표준SQL이 아니다
오라클에서는 ROWNUM을 사용한다고함.
-> DBMS에따라 제한이 있을수있다.
select * from sample311 order by a limit 제한할 행수
select * from sample311 order by a limit 3
offset 0
#3개의 행을 보여주고 오프셋은 0부터

차례대로 1,2,3번
테이블에 저장된 데이터 -> 1번
limit 3 오프셋 0 -> 2번
limit 3 오프셋 3 -> 3번
#select절 연산
select price*quantity from sample34;
#결과 행 이름지어주기
select price*quantity
AS amount from sample34;
#AS는 생략가능
- SQL은 double quote(" ")를 분석할때 데이터베이스 객체이름이라고 간주한다.
- single quote(' ')는 문자열상수이다.
#where절에서 연산/검색조건
select price*quantity
AS amount from sample34;
where price*quantity >= 2000;
연산결과 행인 amount는 실제 존재하지않는 가상테이블이기 때문에
where amount >= 2000;
이 문장은 성립될수없다
MYSQL의 내부처리순서는
where -> select이므로 where절을 처리할때에는 amount라는 별칭이 아직 생성되기 전이다
하지만 ORDER BY는 가능함
select price*quantity
AS amount from sample34;
ORDER BY amount
ORDER BY는 내부처리 순서에의해 제일 나중에 처리되기 때문에 별칭(amount)가 생성되고 난 이후 결과값 정렬이 가능하다
대략적인 내부처리 순서
조회테이블 확인(FROM) -> 데이터추출조건 확인(WHERE) -> 그룹핑(GROUP BY) ->그룹핑한 뒤 조건(HAVING) -> 데이터 추출(SELECT) -> 데이터 정렬(ORDER BY)
NULL + 1 * 3;
NULL/8;
4 - NULL
#전부 NULL.