SELECT 기능
- 내가 원하는 정보 가져오기
1) 테이블 전체 정보 보기
SELECT * FROM Customers;
*(asterisk)는 테이블의 모든 컬럼을 뜻한다.
2) 원하는 컬럼만 보기
SELECT CustomerName FROM Customers;
SELECT CustomerName, ContactName, Country
FROM Customers;
3) 원하는 조건의 row(행)만 걸러서 보기
- WHERE 구문 뒤에 조건을 붙여 원하는 데이터만 가져올 수 있습니다.
SELECT * FROM Orders
WHERE EmployeeID = 3;
SELECT * FROM OrderDetails
WHERE Quantity < 5;
4) 원하는 순서로 데이터 가져오기
- ORDER BY 구문을 사용해서 특정 컬럼을 기준으로 데이터를 정렬할 수 있습니다.
구문 기준 기본
ASC 오름차순 [x]
DESC 내림차순 []
SELECT * FROM Customers
ORDER BY ContactName;
SELECT * FROM OrderDetails
ORDER BY ProductID ASC, Quantity DESC;
SQL 기본연산자
연산자 의미
AND, && 양쪽이 모두 TRUE일 때만 TRUE
OR, || 한쪽은 TRUE면 TRUE
SELECT * FROM Orders
WHERE
CustomerId = 15 AND EmployeeId = 4;
연산자 의미
= 양쪽 값이 같음
!=, <> 양쪽 값이 다름
>, < (왼쪽, 오른쪽) 값이 더 큼
>=, <= (왼쪽, 오른쪽) 값이 같거나 더 큼
연산자 의미
BETWEEN {MIN} AND {MAX} 두 값 사이에 있음
NOT BETWEEN {MIN} AND {MAX} 두 값 사이가 아닌 곳에 있음
총정리
연산자 의미
+, -, *, / 각각 더하기, 빼기, 곱하기, 나누기
%, MOD 나머지
IS 양쪽이 모두 TRUE 또는 FALSE
IS NOT 한쪽은 TRUE, 한쪽은 FALSE
AND, && 양쪽이 모두 TRUE일 때만 TRUE
OR, || 한쪽은 TRUE면 TRUE
= 양쪽 값이 같음
!=, <> 양쪽 값이 다름
>, < (왼쪽, 오른쪽) 값이 더 큼
>=, <= (왼쪽, 오른쪽) 값이 같거나 더 큼
BETWEEN {MIN} AND {MAX} 두 값 사이에 있음
NOT BETWEEN {MIN} AND {MAX} 두 값 사이가 아닌 곳에 있음
IN (...) 괄호 안의 값들 가운데 있음
NOT IN (...) 괄호 안의 값들 가운데 없음
LIKE '... % ...' 0~N개 문자를 가진 패턴
LIKE '... _ ...' _ 갯수만큼의 문자를 가진 패턴
트랜잭션
- 트랜잭션 필요성
-
트랜잭션은 ‘거래’라는 뜻으로, 은행에서 입금과 출금을 하는 그 거래를 뜻한다.
-
A 은행에서 출금하여 B은행으로 송금한다고 가정하자.
-
송금한느 중에 알 수 없는 오류가 발생하여 A은행 계좌에서 돈이 빠져 나갔는데 B은행 계좌에 입금되지 않았다.
-
이때, 우리는 A은행 계좌의 출금을 취소하거나, 출금된 금액만큼 B은행 계좌로 다시 송금하면 된다.
-
하지만 이 방법은 번거롭고 더 심한 오류를 발생시킬수 있다.
-
그래서 생각해낸 해결책이, 거래가 성공적으로 모두 끝난 후에야 이를 완전한 거래로 승인하고, 거래 도중 뭔가 오류가 발생했을 때는 이 거래를 아예 처음부터 없었던 거래로 되돌리는 것이다.
-
이렇게 거래의 안전성을 확보하는 방법이 트랜잭션이다.
-
데이터베이스에선 테이블에서 데이터를 읽어 온 후 다른 테이블에 데이터를 입력하거나 갱신, 삭제하는데 처리 도중 오류가 발생하면 모든 작업을 원상태로 되돌린다.
-
데이터베이스에선 처리 과정이 모두 성공했을 때만 최종적으로 데이터베이스에 반영한다.
- 트랜잭션 4가지 특성 (ACID)
1) 원자성 Atomicity - 트랜잭션에서 정의된 연산들은 모두 성공적으로 실행되던지 아니면 전혀 실행되지 않은 상태로 남아 있어야한다. (all or nothing)
2) 일관성 Consistency - 트랜잭션이 실행되기 전의 데이터베이스 내용이 잘못 되어 있지 않다면 트랜잭션이 실행된 이후에도 데이터베이스의 내용에 잘못이 있으면 안된다.
3) 고립성 Isolation - 트랜잭션이 실행되는 도중에 다른 트랜잭션의 영향을 받아 잘못된 결과를 만들어서는 안된다.
4) 지속성 Durability - 트랜잭션이 성공적으로 수행되면 그 트랜잭션의 갱신한 데이터베이스의 내용은 영구적으로 저장된다.