select as from where, order by, 동일유저 동시접속 가능, 트랜잭션 commit과 rollback
SQL select as from where
1 | select 컬럼명, 컬럼명, 컬럼명 |
예를 들면 아래와 같다
employees 테이블의 연봉 3000이하의 사원명을 출력하고싶다
1 | select last_name, salary |
또 as를 사용하면 원하는 컬럼명으로 임시적으로 바꾸어 출력이 가능하다
아래 예시는 위의 예시에서 as how_much
만 추가해준것이다
1 | select last_name, salary as how_much |
동일유저 동시접속 가능
회사마다 다르지만 개발자마다 각각 유저를 쓸수있고 한 유저를 다 같이 사용할 수 있다
그 이유는 한 유저아이디를 가지고 동시접속이 가능하기때문이다
그렇다면 동시접속했는데 동일한 데이터를 동시에 commit을 날리면 그 데이터는 어떻게 되는가?
같은 행에 대해서는 동시작업이 안된다. 커밋,업데이트, 딜리트를 날려도 아예 실행이 안된다.
예시로 두사람이 employee_id =100을 접속했다. 그리고 한 사람이 데이터 수정후 커밋을 날려도 커밋이 아예 실행되지 않는다
반면, 한사람은 employee_id =100을 그리고 다른 한사람은 employee_id =101을 접속했으면 각자 수정이 가능하다
아래 이미지처럼 1번이 먼저 데이터를 수정한 터미널창이다.
2번은 동일 유저로 접속한 터미널창이다. 2번 터미널창에서는 데이터 중 department_id의 전체 데이터가 ####으로 나타나서 아예 읽기조차 되지않는다
트랜잭션 commit과 rollback
DML 명령어 후에는 임시값으로 보여진다.
이를 커밋하거나 롤백을 해서 임시값을 저장할지 안할지 결정해야한다.
- COMMIT은 임시저장값을 저장한다. COMMIT후에는 낙장불입, 다시 되돌릴수없다
- ROLLBACK은 임시저장값을 이전의 원래 값으로 되돌아간다.
system 권한 부여
- session : 데이터 베이스를 연결할 수 있는 권한
- 다른 권한을 다 주고 이 권한만 revoke한다면 결국 모든 데이터를 사용하지못하게된다.
- 시스템권한 링크