티스토리 뷰

활동/교육과정 중 기록

191220 데이터베이스

Stolen Moments 2019. 12. 20. 17:00

- truncate, drop 차이점


truncate table table_name;


truncate는 내용을 모두 지우지만 테이블을 삭제하지 않는다.




- 내장 함수


concat() 문자열 이어 붙이기


substr(column, 시작 인덱스 번호, 몇 글자)


upper() 전부 대문자로 변경


lower() 전부 소문자로 변경


ifnull(a, b) a가 null 이면 b로


now() 현재 시간. from 테이블 굳이 안해도 동작.


select now(), date_format(now(), '%w') from dual


%w 는 0-일요일....5-금요일 로 표시

%W 는 문자로 Sunday...Friday 표시


mysql date_format reference 구글링하면 나옴. 다양한 포맷이 있음.



서브쿼리를 select 구문을 쓸 때, 컬럼 하나만 가져와야 한다.


서브쿼리는 한 번만 쓰자. 성능 이슈..





- between


e.salary between j.lowest_sal and j.highest_sal


j.lowest_sal, j.highest_sal 사이에 있는 e.salary





- union


select employee_id, job_id, "current" AS "start_date", 'current' AS "end_date"

from employees

where employee_id=176

union

select employee_id, job_id, start_date, end_date

from job_history

where employee_id=176;



union 할 때 컬럼 갯수를 맞춰줘야 함.





- INSERT


새로운 튜플 삽입




- UPDATE


속성값 수정


UPDATE Table

SET 속성이름1=값, 속성이름2=값, ...

[WHERE 조건]


where가 없으면 전부 다 바꾼다는 의미...거의 쓴다고 봄




- DELETE


DELETE FROM table

[where 조건]



이것도 where 써야할 듯. 조건이 없으면 truncate 와 같다. 

다 지울 때는 truncate 가 좋다.





- 뷰


create view view_name


as (select * from ...)



view_name 이라는 뷰가 생성된다. 뷰는 보기 편하게 해주는 가상의 테이블.


자주 써야 하는 테이블이 있으면 뷰를 만들어 쓰자.






트랜잭션의 성질 - ACID 꼭 알아두자 (reference : https://ko.wikipedia.org/wiki/ACID)


  • 원자성(Atomicity)은 트랜잭션과 관련된 작업들이 부분적으로 실행되다가 중단되지 않는 것을 보장하는 능력이다. 예를 들어, 자금 이체는 성공할 수도 실패할 수도 있지만 보내는 쪽에서 돈을 빼 오는 작업만 성공하고 받는 쪽에 돈을 넣는 작업을 실패해서는 안된다. 원자성은 이와 같이 중간 단계까지 실행되고 실패하는 일이 없도록 하는 것이다.
  • 일관성(Consistency)은 트랜잭션이 실행을 성공적으로 완료하면 언제나 일관성 있는 데이터베이스 상태로 유지하는 것을 의미한다. 무결성 제약이 모든 계좌는 잔고가 있어야 한다면 이를 위반하는 트랜잭션은 중단된다.
  • 고립성(Isolation)은 트랜잭션을 수행 시 다른 트랜잭션의 연산 작업이 끼어들지 못하도록 보장하는 것을 의미한다. 이것은 트랜잭션 밖에 있는 어떤 연산도 중간 단계의 데이터를 볼 수 없음을 의미한다. 은행 관리자는 이체 작업을 하는 도중에 쿼리를 실행하더라도 특정 계좌간 이체하는 양 쪽을 볼 수 없다. 공식적으로 고립성은 트랜잭션 실행내역은 연속적이어야 함을 의미한다. 성능관련 이유로 인해 이 특성은 가장 유연성 있는 제약 조건이다. 자세한 내용은 관련 문서를 참조해야 한다.
  • 지속성(Durability)은 성공적으로 수행된 트랜잭션은 영원히 반영되어야 함을 의미한다. 시스템 문제, DB 일관성 체크 등을 하더라도 유지되어야 함을 의미한다. 전형적으로 모든 트랜잭션은 로그로 남고 시스템 장애 발생 전 상태로 되돌릴 수 있다. 트랜잭션은 로그에 모든 것이 저장된 후에만 commit 상태로 간주될 수 있다.


반응형

'활동 > 교육과정 중 기록' 카테고리의 다른 글

200103 Docker Swarm  (0) 2020.01.03
200102 Docker, MongoDB  (0) 2020.01.02
191230 Docker  (0) 2019.12.30
191226 데이터베이스  (0) 2019.12.26
191223 데이터베이스  (0) 2019.12.23
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함