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 |