본문 바로가기
mySQL/mySql 공부

Lesson 1, 2 - SELECT 전반 기능, 연산자

by 티코딩 2023. 4. 18.

mySQL이란건 데이터베이스란 상자 안에 정보들을 담을 수 있고 SQL이라는 버튼들을 제공해서 사용자들로 하여금 원하느대로 정보를 넣고 빼고 읽게 해줄 수 있는 데이터베이스 관리 시스템 DBMS 라는것. 앞의 R relational은 뭘까?

비효율적인 데이터가 있다면, 테이블별 관계를 맺어주는데, 이를 위해 JOIN이라는 기능을 제공한다. 규모가 있는곳에선 Oracle, 작은 규모나 개인 용도로는 MySQL를 많이 사용한다. 

 

Lesson1

SELECT * FROM Orders;

- Orders 테이블의 모든 데이터 불러오기

 

SELECT * FROM OrderDetails
WHERE Quantity < 5;

- OrderDetails의 Quantity가 5이하인 모든 데이터를 불러오기

 

SELECT * FROM Orders
WHERE EmployeeID = 3;

- Orders 테이블의 EmployeeID가 3인 모든 데이터를 불러오기

 

SELECT * FROM OrderDetails
ORDER BY OrderDetailID DESC;

- OrderDetails 테이블의 ORderDetailId를 내림차순기준으로 모두 불러오기

 

SELECT * FROM OrderDetails
ORDER BY OrderDetailID , Quantity DESC;

- OrderDetails테이블의 OrderDetailId기준으로, Quantity는 내림차순기준으로 모두 불러오기

 

SELECT * FROM OrderDetails
LIMIT 30, 10;

- OrderDetails테이블의 30번째 부터 10개의데이터만 불러오기

 

SELECT CustomerId AS ID, CustomerName AS NAME, Address AS ADDR
FROM Customers;

- Customers 테이블의 컬럼명은 CustomerID를 ID로, CustomerName은 NAME으로, Address는 ADDR로 바꿔서 불러오기

 

SELECT CustomerID AS '아이디', CustomerName AS '고객명', City AS '도시', Country AS '국가'

FROM Customers WHERE City = 'London' OR Country = 'Mexico'

ORDER BY CustomerName LIMIT 0, 5;

 

"Customers 테이블에서, 도시가 London이나 국가가 Mexico인 컬럼명 CustomerID 는 아이디로, CustomerName은 고객명, City는 도시로, Country는 국가로 첫페이지의 5개만 불러오겠다" 라는 SQL Statement가 된다.

 

Lesson2

#사칙연산

SELECT 10 % 3, 'hello' AS Text;

10%3 Text
1 hello

 

SELECT '1' + '002' * 3; -- 문자열도 상관없이 count 해준다는게 인상적이었다.

'1' + '002' * 3
7

 

SELECT OrderID, ProductID, OrderID + ProductID AS SUM
FROM OrderDetails;

OrderID ProductID SUM
10248 11 10259
10248 42 10290
10248 72 10320

#참/거짓

TRUE = 1, FALSE = 0

 

SELECT !TRUE, NOT 1, !FALSE, NOT FALSE;

!TRUE NOT 1 !FALSE NOT FALSE
0 0 1 1

 

SELECT TRUE IS NOT FALSE;

TRUE IS NOT FALSE
1

이런 사칙연산과, 참/거짓 은 프로그래밍과 비슷하다. 

IS 는 양쪽 모두 TRUE 거나 FALSE, IS NOT 은 한쪽은 TRUE, 나머지한쪽은 FALSE.

AND와 OR도 마찬가지다.

WHERE 에다가 사용하면 된다.

 

SELECT * FROM OrderDetails

WHERE

 ProductId = 20

 AND (OrderId = 10514 OR Quantity = 50);

 

그리고 비교 연산자도 마찬가지로 Java에서 사용하는것과 = 빼고는 같다.

= 양쪽 값이 같음
!=, <> 양쪽 값이 다름
>, < (왼쪽, 오른쪽) 값이 더 큼
>=, <= (왼쪽, 오른쪽) 값이 같거나 더 큼

 

BETWEEN {MIN} AND {MAX} 두 값 사이에 있음
NOT BETWEEN {MIN} AND {MAX} 두 값 사이가 아닌 곳에 있음

SELECT 5 BETWEEN 1 AND 10;

-- 5는 1과 10 사이에 있다 -- true

SELECT 'banana' NOT BETWEEN 'Apple' AND 'camera';

-- b는 a와 c사이에 있으므로 거짓

IN (...) 괄호 안의 값들 가운데 있음
NOT IN (...) 괄호 안의 값들 가운데 없음

SELECT 'Hello' IN (1, TRUE, 'hello')

-- true;

LIKE '... % ...' 0~N개 문자를 가진 패턴
LIKE '... _ ...' _ 갯수만큼의 문자를 가진 패턴

SELECT

  'HELLO' LIKE 'hel%',

  'HELLO' LIKE 'H%',

  'HELLO' LIKE 'H%O',

  'HELLO' LIKE '%O',

  'HELLO' LIKE '%HELLO%',

  'HELLO' LIKE '%H',

  'HELLO' LIKE 'L%'

'HELLO' LIKE 'hel%' 'HELLO' LIKE 'H%' 'HELLO' LIKE 'H%O' 'HELLO' LIKE '%O' 'HELLO' LIKE '%HELLO%' 'HELLO' LIKE '%H' 'HELLO' LIKE 'L%'
1 1 1 1 1 0 0

 

SELECT

'HELLO' LIKE 'HEL__',

'HELLO' LIKE 'h___O',

'HELLO' LIKE 'HE_LO',

'HELLO' LIKE '_____',

'HELLO' LIKE '_HELLO',

'HELLO' LIKE 'HEL_',

'HELLO' LIKE 'H_O'

 

정리하자면 %가 앞에 붙으면 몇자가 있던 상관없고, _는 갯수만큼 글자가 있어야 한다는 것이다. 이건 자주 사용할 거 같다.

 

'mySQL > mySql 공부' 카테고리의 다른 글

개념정리(feat.니꼴라스 성님)  (0) 2023.04.18
mySQL을 배워보자.  (0) 2023.04.11