DB. MySQL 2 SLECT 예제와 각종 연산자
명령어를 사용한 예제들
SELECT
1) 테이블의 컬럼이 아닌 값 선택
SELECT
CustomerName, 1, 'Hello', NULL
FROM Customers;
2) 원하는 조건의 row(행)만 걸러서 보기
ex1)
SELECT * FROM Orders
WHERE EmployeeID = 3;
ex2)
SELECT * FROM OrderDetails
WHERE Quantity < 5;
3)원하는 순서대로 정렬하기
구문 | 기준 | 기본 |
---|---|---|
ASC | 오름차순(ascending order) | O |
DESC | 내림차순(descending order) | X |
ex1) 기본 오름차순
SELECT * FROM OrderDetails
기본 SELECT를 사용하면 ID 값에 오름차순으로 결정 된다.
ex2) ORDER BY 칼럼명 DESC를 사용할 경우
SELECT * FROM OrderDetails
ORDER BY OrderDetailID DESC;
ex3) 원하는 칼럼명을 기준으로 정렬 가능
SELECT * FROM OrderDetails
ORDER BY ProductID ASC;
ProductID를 기준으로 오름차순으로 정렬
ex3) 두가지 기준 적용 가능
SELECT * FROM OrderDetails
ORDER BY ProductID ASC, Quantity DESC;
ProductID를 기준으로 오름차순으로 정렬하고 그 안에서 Qtuantity를 내림차순으로 정렬
4)원하는 만큼만 데이터 가져오기
ex1) LIMIT 가져올 갯수
SELECT * FROM OrderDetails
LIMIT 5;
ex2) LIMIT 거너뛸 갯수, 가져올 갯수
SELECT * FROM OrderDetails
LIMIT 30, 5;
앞에 30번까지 건너뛰고 5개의 데이터를 가져왔다.
- Pagination: LIMIT을 사용하면 게시판이나 검색엔진에서 검색 결과를 원하는 부분 부터 원하는 갯수 만큼 설정해서 페이지를 나누어 결과를 보여줄 수 있다.
5)별명(alias)으로 데이터 가져오기
ex1) 기본 컬럼
SELECT CustomerID,CustomerName,Address FROM Customers;
ex2) AS를 사용해 컬럼명을 변경하기
SELECT
CustomerID AS ID,
CustomerName AS NAME,
Address AS ADDR
FROM Customers;
컬럼명이 변경된 것을 알 수 있다.
각종 연산자들
1) 사칙연산
연산자 | 의미 |
---|---|
+,-,*,/ | 더하기, 빼기, 곱하기, 나누기 |
%, MOD | 나머지 |
ex1) 1+2
SELECT 1 + 2;
ex2) AS 사용시
SELECT 3-2 AS Result;
ex3) 문자열 추가
SELECT 3 * (2 + 4) / 2, 'Hello';
ex3) AS 사용시
SELECT 3 * (2 + 4) / 2 AS Number, 'Hello' AS Text;
ex4) 나머지 연산
SELECT 7 % 3
문자열과 숫자
ex1) 'ABC' + 3
SELECT 'ABC' + 3;
MySQL에서는 문자열을 0으로 인식한다.
ex2) 'ABC' * 3
SELECT 'ABC' * 3;
문자열을 0으로 인식하기 때문에 3을 곱했을때 0이 나온것을 알 수 있다.
ex2) '1' + '002' * 3
SELECT '1' + '002' * 3;
'1' 과 '002'는 문자열로 표현되었지만 숫자로 구성된 문자열을 자동으로 숫자로 인식해서 계산이 된 것을 알 수 있다.
테이블에 적용해보기
SELECT OrderID, ProductID FROM OrderDetails;
ex1) OrderID + ProductID
SELECT OrderID + ProductID FROM OrderDetails;
ex1-1) 응용
SELECT
OrderID, ProductID,
OrderID + ProductID AS Sum
FROM OrderDetails;
2) 참/거짓 연산자
ex1) ture, false
SELECT TRUE, FALSE;
참이면 1 거짓이면 0이 나온다.
ex1-1) !ture, !false
SELECT !TRUE, NOT TRUE, NOT 1, !FALSE, NOT FALSE, NOT 0 ;
!와 NOT은 같은 의미이며 !TURE는 TURE가 아니라는 의미 이므로 0이 나온다.
ex1-2) !ture, !false
SELECT 0 = TRUE, 1 = TRUE, 0 = FALSE, 1 = FALSE;
TURE = 1
FALSE = 0
일 때 참과 거짓을 구분한 결과이다.
ex2) IS, IS NOT
SELECT TRUE IS TRUE,
TRUE IS NOT FALSE;
연산자 | 의미 |
---|---|
IS | 양쪽이 모두 TRUE 또는 FALSE 비교 |
IS NOT | 한쪽은 TRUE, 한쪽은 FALSE |
ex2-1)
SELECT (TRUE IS FALSE) IS NOT TRUE;
(TRUE IS FALSE) = false 이므로 0
0 IS NOT TRUE 는 true 이므로 1이 나온걸 알 수 있다.
ex3) AND, OR
SELECT TRUE AND FALSE, TRUE OR FALSE;
연산자 | 의미 |
---|---|
AND,&& | 양쪽이 모두 TRUE일 때만 TRUE |
OR, || | 한쪽만 TRUE면 TRUE |
ex3-1)
SELECT 2 + 3 = 6 AND 2 * 3 = 6,
2 + 3 = 6 OR 2 * 3 = 6;
*테이블에 적용하기
ex3-2) AND
SELECT * FROM Orders
WHERE
CustomerId = 15 AND EmployeeId = 4;
두조건에 모두 충족하는 데이터를 불러옴
ex3-2) OR
SELECT * FROM Products
WHERE
ProductName = 'Tofu' OR CategoryId = 8;
둘중 하나의 조건만 충족해도 데이터를 불러옴
ex3-2) 두가지 조건을 같이 쓴 경우
SELECT * FROM OrderDetails
WHERE
ProductId = 20
AND (OrderId = 10514 OR Quantity = 50);
ProductId = 20 은 무조건 참이 되어야 하고,
OrderId가 10514 인 것과
Quantity가 50인 것이 출력 되는것을 알 수 있다.
3) 비교 연산자
연산자 | 의미 |
---|---|
= | 양쪽 값이 같음 |
!=, <> | 양쪽 값이 다름 |
>, < | (왼쪽, 오른쪽) 값이 더 큼 |
>=, <= | (왼쪽, 오른쪽) 값이 같거나 더 큼 |
ex1)
SELECT 1 = 1, !(1 <> 1), NOT (1 < 2), 1 > 0 IS NOT FALSE;
ex2) 문자열
SELECT 'A' = 'A', 'A' != 'B', 'A' < 'B', 'A' > 'B';
알파벳 순에서 나중에오는 알파벳이 더 큰수로 인식한다.
- MySQL에서는 대소 문자를 구분하지 않는다.
ex2-1)
SELECT 'Apple' < 'Banana';
*테이블에 적용하기
ex3)
SELECT
ProductName, Price,
Price > 20 AS EXPENSIVE
FROM Products;
Price 가 20 보다 크면 1(TRUE), 작으면 (FALSE)
4)그외 연산자
BETWEEN
연산자 | 의미 |
---|---|
BETWEEN {MIN} AND {MAX} | 두 값 사이에 있음 |
NOT BETWEEN {MIN} AND {MAX} | 두 값 사이가 아닌 곳에 있음 |
ex1) 숫자
SELECT 5 BETWEEN 1 AND 10;
ex2) 문자열
SELECT 'banana' BETWEEN 'Apple' AND 'camera';
b 는 a와 c 사이에 있으므로 true
*테이블에 적용하기
ex3) 숫자
SELECT * FROM OrderDetails
WHERE ProductID BETWEEN 1 AND 4;
ProductID의 값이 1 ~ 4 사이에 있는 데이터들을 불러옴
ex4) 문자열
SELECT * FROM Customers
WHERE CustomerName BETWEEN 'b' AND 'c';
CustomerName이 b에서 c까지에 해당하는 데이터를 불러옴
IN, NOT IN
연산자 | 의미 |
---|---|
IN (...) | 괄호 안의 값들 가운데 있음 |
NOT IN (...) | 괄호 안의 값들 가운데 없음 |
ex1) 숫자
SELECT 1 + 2 IN (2, 3, 4)
1+2의 값 즉 3 이 IN(2, 3, 4) 에 포함 되기 때문에 1(TRUE)이 출력
ex2) 문자열
SELECT 'HELLO' IN (1, TRUE, 'hello')
HELLO가 IN(1, TURE, 'hello') 안에 포함되어 있기 때문에 1(TRUE)이 출력
*대소문자는 구분하지 않음
테이블에 적용하기
SELECT * FROM Customers
WHERE City IN ('Torino', 'Korea', 'Japan')
City 컬럼 안에서 IN('Torino', 'Korea', 'Japan') 괄호 안에 해당하는 Torino의 데이터만 불러옴
LIKE
연산자 | 의미 |
---|---|
LIKE '... % ...' | 0~N개 문자를 가진 패턴 |
LIKE '... _ ...' | _ 갯수만큼의 문자를 가진 패턴 |
ex1) LIKE ...%...
SELECT
'HELLO' LIKE 'hel%',
'HELLO' LIKE 'H%',
'HELLO' LIKE 'H%O',
'HELLO' LIKE '%O',
'HELLO' LIKE '%HELLO%',
'HELLO' LIKE '%H',
'HELLO' LIKE 'L%'
%는 0~N개의 문자가 올 수 있으므로
- 'hel%'
- 'H%'
- 'H%O'
- '%O'
- '%HELLO%'
모두 TRUE
- '%H' : H로 끝나는 문자열이 없음
- 'L%' : L로 시작하는 문자열이 없음
모두 FALSE
ex2) LIKE ..._...
SELECT
'HELLO' LIKE 'HEL__',
'HELLO' LIKE 'h___O',
'HELLO' LIKE 'HE_LO',
'HELLO' LIKE '_____',
'HELLO' LIKE '_HELLO',
'HELLO' LIKE 'HEL_',
'HELLO' LIKE 'H_O'
_의 갯수만큼의 문자열이 올 수 있으므로
- 'HEL__'
- 'h___O'
- 'HE_LO'
- '_____'
모두 TRUE
- '_HELLO' : HELLO앞에 문자열이 없음
- 'HEL_' : HEL뒤에 2개의 문자열이 있음
- 'H_O' : H 와 O 사이에 3개의 문자열이 있음
모두 FALSE
테이블에 적용하기
ex3) LIKE ...%...
SELECT * FROM Employees
WHERE Notes LIKE '%economics%'
Notes의 내용중 economics라는 내용을 포함하는 데이터를 불러옴
ex4) LIKE ..._...
SELECT * FROM OrderDetails
WHERE OrderID LIKE '1025_'
OrderID 중 1025와 그뒤로 _ 하나의 문자열 까지 해당하는 데이터를 불러옴
Author And Source
이 문제에 관하여(DB. MySQL 2 SLECT 예제와 각종 연산자), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@jinzza456/DB.-MySQL-2저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)