본문 바로가기

DB/My SQL

정렬과 연산-1

1. ORDER BY

검색 결과의 행 순서를 바꿀 수 있는 명령어
asc: 오름차순(default)
desc: 내림차순

기본 문법
SELECT 열명 FROM 테이블명 WHERE 조건식 ORDER BY 열명 [정렬방법];
*ORDER BY 열명 이후에 정렬방법을 지정하지 않을 경우 default값인 asc로 정렬됨.
*검색 조건이 필요 없을 경우 WHERE은 생략이 가능

대소관계: 문자열 대소관계의 경우 사전식 순서에 의해 결정됨.

SELECT 명령어를 사용하기때문에 서버 DB에서는 변경이 되지 않으며, 우리가 보는 클라이언트에서만 정렬이 되어 출력됨.

복수의 열 지정하여 정렬
기본 문법
SELECT 열명 FROM 테이블명 WHERE 조건식
ORDER BY 열명1 정렬방법 , 열명2 정렬방법, … ;

첫번째 열명을 기준으로 1차로 정렬 후, 첫번째 열명에서 중복되는 행을 두번째 열명을 기준으로 정렬함.

NULL 값의 정렬 순서
NULL값의 경우 특정 값보다 큰 값, 특정 값보다 작은 값으로 나눠지며, 이중 하나의 방법으로 대소비교를 함.
표준 SQL에 정의되어 있지 않아 제품에 따라 기준이 다름.(MySQL의 경우 작은 값)

2. LIMIT

SELECT로 조회한 값의 행을 제한할 수 있음
* 표준 SQL 아님!, MySQL과 PostgreSQL에서 사용 가능

기본문법
SELECT 열명 FROM 테이블명 LIMIT 행수(수치입력);
* ORDER BY 이후에 위치함

오프셋지정
대량의 데이터를 효율적으로 보기 위해 페이지를 나누어 사용

기본문법
SELECT 열명 FROM 테이블명 LIMIT 행수 OFFSET 위치;

수치 연산

사칙연산
+: 덧셈
-: 뺄셈
*: 곱셈
/: 나눗셈
%(MOD): 나머지

SELECT구로 연산
기본문법
SELECT 식1, 식2, … FROM 테이블명;

예제문법
SELECT 열명 * 열명 FROM 테이블명;

마지막 열 뒤(오른쪽)에 식의 열명으로 열이 추가로 생성됨
ex) SELECT price * quantity amount FROM sample34; 의경우 마지막 열 뒤에 price * quantity 열이 추가됨.

열의 별명
기본문법
SELECT 열명, 식 등 AS 별명 FROM 테이블명;
*AS는 생략 가능

숫자, 영어, 한글 등으로 지정할 수 있으나, 한글의 경우(ASCII 문자 이외의 것) 여러가지의 이유로 오류를 발생시킬 수 있으므로 데이터 베이스 객체를 의미하는 큰따옴표(“)로 둘러싸서 지정.
* 작은따옴표(‘)를 사용할 경우 문자열 상수로 인식하기 때문에 꼭 큰따옴표(“)로 지정.
* 별명과 같은 데이터베이스 객체명은 숫자로 시작할 수 없다.

* 데이터베이스 객체: 데이터베이스 내에 존재하는 논리적인 저장 구조를 말한다. MySQL, 오라클과 같은 RDBMS의 경우 데이터를 관리하려면 데이터를 어딘가에 저장해 관리해야 하는데, 이런 목적을 달성하기 위해 필요한 모든 논리적인 저장 구조가 데이터베이스 객체.

WHERE구로 연산
기본문법
SELECT 열명 WHERE 조건식 FROM 테이블명;

예제문법
SELECT *, price * quantity AS amount FROM sample34
WHERE price * quantity >= 2000;
* SELECT *, 다음에 나오는 문법은 WHERE에 있는 식의 값의 별명을 지정해주기 위한 문법임
  (WHRER 조건식이 a * b >= 2000; 일 경우 SELECT *, a * b AS amount 로 지정해야 식으로 인해 추가로 생성되는 열의 별명이 amount로 지정됨.)
* 내부 처리 순서 상 WHERE 이후에 SELECT가 처리되어 WHERE에 별명을 지정해도 아직 내부적으로 지정이 되지 않은 상태가 되어 에러가 발생하거나 별명이 적용되지 않음

NULL값의 연산
NULL의 경우 C나 PHP 같은 언어에서는 0으로 간주되어 연산이 가능하지만 SQL에서는 0으로 간주하지 않기때문에 NULL로 출력됨.


ORDER BY구로 연산
기본문법
SELECT 열명 FROM 테이블명 ORDER BY 식 정렬방법;

예제문법
SELECT *, price * quantity AS amount FROM sample34
ORDER BY price * quantity DESC;

계산된 결과값을 기준으로 정렬 방법에 의해 정렬이 됨.

함수 연산
기본 문법
함수명(인수1, 인수2, …)
- ROUND 함수: 반올림 함수
 예제 문법
 SECET amount, ROUND(amount) FROM sample 341;
 
 반올림 자릿수 지정 예제 문법
 SECET amount, ROUND(amount, 1) FROM sample 341;
* 동일한 ROUND 함수라고 하더라도 인수의 개수에 따라 결과값이 달라질 수 있음


관련글보기

2018/10/18 - [DB/My SQL] - My SQL 소개

2018/11/01 - [DB/My SQL] - 데이터 베이스와 SQL

2018/12/05 - [DB/My SQL] - 테이블에서 데이터 검색


'DB > My SQL' 카테고리의 다른 글

정렬과연산-2  (0) 2018.12.05
테이블에서 데이터 검색  (0) 2018.12.05
데이터 베이스와 SQL  (0) 2018.11.01
My SQL 소개  (0) 2018.10.18