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 '... _ ...'	_ 갯수만큼의 문자를 가진 패턴

트랜잭션

  • 트랜잭션 필요성
  1. 트랜잭션은 ‘거래’라는 뜻으로, 은행에서 입금과 출금을 하는 그 거래를 뜻한다.

  2. A 은행에서 출금하여 B은행으로 송금한다고 가정하자.

  3. 송금한느 중에 알 수 없는 오류가 발생하여 A은행 계좌에서 돈이 빠져 나갔는데 B은행 계좌에 입금되지 않았다.

  4. 이때, 우리는 A은행 계좌의 출금을 취소하거나, 출금된 금액만큼 B은행 계좌로 다시 송금하면 된다.

  5. 하지만 이 방법은 번거롭고 더 심한 오류를 발생시킬수 있다.

  6. 그래서 생각해낸 해결책이, 거래가 성공적으로 모두 끝난 후에야 이를 완전한 거래로 승인하고, 거래 도중 뭔가 오류가 발생했을 때는 이 거래를 아예 처음부터 없었던 거래로 되돌리는 것이다.

  7. 이렇게 거래의 안전성을 확보하는 방법이 트랜잭션이다.

  8. 데이터베이스에선 테이블에서 데이터를 읽어 온 후 다른 테이블에 데이터를 입력하거나 갱신, 삭제하는데 처리 도중 오류가 발생하면 모든 작업을 원상태로 되돌린다.

  9. 데이터베이스에선 처리 과정이 모두 성공했을 때만 최종적으로 데이터베이스에 반영한다.

  • 트랜잭션 4가지 특성 (ACID)

1) 원자성 Atomicity - 트랜잭션에서 정의된 연산들은 모두 성공적으로 실행되던지 아니면 전혀 실행되지 않은 상태로 남아 있어야한다. (all or nothing)
2) 일관성 Consistency - 트랜잭션이 실행되기 전의 데이터베이스 내용이 잘못 되어 있지 않다면 트랜잭션이 실행된 이후에도 데이터베이스의 내용에 잘못이 있으면 안된다.
3) 고립성 Isolation - 트랜잭션이 실행되는 도중에 다른 트랜잭션의 영향을 받아 잘못된 결과를 만들어서는 안된다.
4) 지속성 Durability - 트랜잭션이 성공적으로 수행되면 그 트랜잭션의 갱신한 데이터베이스의 내용은 영구적으로 저장된다.