select, insert,update,delete 가 있으며 레코드를 조작하는 것이다.
각각의 문법들이 항상 헷갈렸는데 다시 공부해봐서 좋았다..
< 테이블에 필드 순서와 값이 들어가는 순서가 같을때>
insert into (데이터베이스 이름.테이블이름) values(값1,값2,값3..)
<테이블 필드에 맞춰서 입력>
insert into (데이터베이스 이름.테이블이름)(필드1, 필드2, 필드3,...) values(값1,값2,값3..)
pk의 경우 유일성이 보장되어야해서 pk 필드에 같은 값을 넣으려고 하면 오류가 발생한다!!
<모든레코드 삭제>
delete from (테이블 이름)
<조건에 맞는 레코드 삭제>
delete from (테이블 이름) where
둘다 테이블은 남아있고 모든레코드를 삭제 할 수 있지만
trucate은 속도가 빠르지만 트랜잭션시 롤백이 불가하다
내가 찾아본 결과 트랜잭션은 COMMIT이나 ROLLBACK 명령어가 실행되어야 종료가 이루어진다. 따라서 여러개 DML이 하나의 트랜잭션이라서 커밋과 롤백이 가능하고 하나의ddl이 하나의 트랜잭션이므로 autocommit으로 인해 롤백이 불가하고 거기서 작업이 끝남
update(테이블 이름)
set weight=92
where(조건)
돈에 대한거 decimal
double(스토리지가 더 차지, 자세하게)vs float
timestamp를 보통 많이 씀
(지원하지 않은 곳이 많을 수 있다)
두개 이상의 테이블들을 공통 필드를 가지고 통합하는 것으로
양쪽의 필드를 모두 가진 테이블이 만들어진다!!
조인에서 헷갈렸던것이 양쪽 테이블이 다 만들어지는점(?)이다
SELECT A.*, B.*
FROM raw_data.table1 A
____(조인 이름 default->inner조인) JOIN raw_data.table2 B ON A.key1 = B.key1 and A.key2 = B.key2
WHERE A.ts >= '2019-01-01';
<실습>
SELECT * FROM prod.vital v
JOIN prod.alert a ON v.vital_id = a.vital_id;
<실습>
SELECT * FROM prod.vital v
LEFT JOIN prod.alert a ON v.vital_id = a.vital_id;
<실습>
SELECT * FROM prod.vital v
LEFT JOIN prod.alert a ON v.vital_id = a.vital_id
UNION
SELECT * FROM prod.vital v
RIGHT JOIN prod.alert a ON v.vital_id = a.vital_id;
SELECT * FROM prod.vital v CROSS JOIN prod.alert a;
<실습>
SELECT * FROM prod.vital v1
JOIN prod.vital v2 ON v1.vital_id = v2.vital_id;