2021-11-30 20:42 작성
My SQL basic 메모
Table of contents
SELECT
명령어 | 설명 |
---|---|
SELECT 1 + 1 | 2 |
SELECT NOW() | 2021-11-30 15:54:24 |
SELECT CONCAT('John', ' ', 'Doe') | John Doe |
SELECT select_list FROM dual | dual 은 dummy clause로 실제적 의미를 갖지 않는다. 실제 table을 지정하지 않고 FROM 을 사용해야 할 경우 사용한다. |
SELECT expression AS column_alias; = SELECT expression column_alias; (e.g. SELECT CONCAT('Jane',' ','Doe') AS 'Full name'; , SELECT CONCAT('John',' ','Doe') AS name; ) | AS 이하의 column_alias 로 이름을 변경할 수 있다. |
ORDER BY - 정렬
명령어 | 설명 |
---|---|
ORDER BY column1 ASC, column2 DESC; | column1 을 ascending 방식으로 정렬한 뒤 정렬값을 column2 의 기준에 따라 다시 descending 방식으로 정렬(column1 에서 정렬된 순서를 바꾸지 않으며 만약 동일값이 존재하면 그 안에서 column2 의 기준을 적용해 정렬한다.) |
ORDER BY quantityOrdered * priceEach DESC; | 연산 표현도 가능 |
SELECT
contactLastname,
contactFirstname
FROM
customers
ORDER BY
contactLastname DESC ,
contactFirstname ASC;
Output:
contactLastname | contactFirstname |
---|---|
Young | Dorothy |
Young | Jeff |
Young | Julie |
Young | Mary |
Yoshido | Juri |
Walker | Brydey |
Victorino | Wendy |
Urs | Braun |
Tseng | Jerry |
Tonini | Daniel |
…
명령어 | 설명 |
---|---|
SELECT orderNumber, orderLineNumber, quantityOrdered * priceEach AS subtotal FROM orderdetails ORDER BY subtotal DESC; | AS 로 명칭이 변경된 경우 ORDER BY 에서 사용 가능 |
FIELD()를 이용한 ORDER BY 👇
명령어 | 설명 |
---|---|
FIELD('str', 'str1','str2','...'); e.g. SELECT FIELD('B', 'A','B','C'); => 2 | str1, str2, ... 중 str 의 위치값을 반환 |
SELECT
orderNumber, status
FROM
orders
ORDER BY FIELD(status,
'In Process',
'On Hold',
'Cancelled',
'Resolved',
'Disputed',
'Shipped');
output:
orderNumber | status |
---|---|
10425 | In Process |
10421 | In Process |
10422 | In Process |
10420 | In Process |
10424 | In Process |
10423 | In Process |
10414 | On Hold |
10401 | On Hold |
10334 | On Hold |
10407 | On Hold |
…
각각의 위치값을 ASC
방식으로 출력하게 되면 위와 같은 결과값이 나온다.
기타사항
NULL
은non-NULL
값보다 앞선다. 따라서ASC
로 정렬할 경우NULL
값이 가장 먼저 나열되고DESC
로 정렬할 경우NULL
값을 가진 데이터들은 가장 마지막에 위치한다.