하나의 트랜젝션은 모든 연산이 성공하거나 모두 실패해야 한다. (실패할 여지가 있으면 전체를 실패시킨다.)
하나의 트랜젝션 전후에 데이터베이스의 일관된 상태가 유지되어야 한다.
각각의 트랜젝션은 독립적. 서로의 연산을 확인받거나 영향을 줄 수 없다.
하나의 성공된 트랜젝션에 대한 로그가 기록되고 영구적으로 남는다.
이런 식으로 ACID는 안정성에 관련된 내용이다. 금융쪽에서 특히나 중요하다.
Database 에 블록으로 Table을 구성해 놓는다.
Database > Table > Data
create database 'db이름'
use database 'db이름'
drop databse 'db이름' : 공간할당 까지 깔끔히 제거
Truncate : 행의 내용
delete from (column) 조건 ⇒ 맞는 행을 다 지움
행을 골라서 지울 수 있는 것은 delete가 유일
SELECT (column) FROM (table)
WHERE (조건)
ORDER BY (column)
create database (데이터베이스이름)
use database이름
update, set
insert into (columns) values
열 추가
ex)
ALTER TABLE Persons
ADD Birthday Date;
열 삭제
ex)
ALTER TABLE Persons
DROP COLUMN Birthday;
_ : 임의의 문자
% : 임의의 문자열
[asdf] : 안에 들어간 문자열 중 하나(asdf중 하나)
a-f : a~f까지 문자열(스프레드 같은 느낌)
[!asdf] : asdf가 아닌 모든거
as 로 별칭 추가 가능
SELECT *
FROM 테이블_1
JOIN 테이블_2 ON 테이블_1.특성_A = 테이블_2.특성_B
SELECT *
FROM 테이블_1
LEFT OUTER JOIN 테이블_2 ON 테이블_1.특성_A = 테이블_2.특성_B
ex)
SELECT CustomerId, AVG(Total)
FROM invoices
WHERE CustomerId >= 10
GROUP BY CustomerId
HAVING SUM(Total) >= 30
ORDER BY 2
이렇게 섞어도 FROM 부터 실행된다?
데이터베이스에서 데이터가 구성되는 방식과 서로 다른 엔티티 간의 관계에 대한 설명(데이터베이스의 청사진)
테이블 사이에 관계가 있을 때
1:N(일대다) 관계에서 N쪽에서 연결되는 1의 정보를 담아야 깔끔하다
N:N(다대다) 관계에서는 각각과 1:N관계가 되는 테이블(조인 테이블)을 만들어 관계를 엮는다.
행 : 레코드, tuple
열 : 칼럼, relataion
레코드들을 식별할 수 있도록 만드는 고유 값
여러 테이블을 join할 때 처음 select구문에서 column명이 겹치지 않는 요소는 그냥 써도 되지만 아닌 경우는 테이블명.칼럼명 으로 해줘야 한다.
inner join이 디폴트라서 그때는 join만 써도 된다.
소괄호 안에 sql쿼리문을 작성하여 쓸 수 있다.
가상테이블 - 일시적으로 저장해놓을 수 있는 테이블