select as from where, order by, 동일유저 동시접속 가능, 트랜잭션 commit과 rollback

select as from where, order by, 동일유저 동시접속 가능, 트랜잭션 commit과 rollback

SQL select as from where

1
2
3
4
select 컬럼명, 컬럼명, 컬럼명
from 컬럼이 있는 테이블명
where 좌변 = 우변
(컬럼명) (리터럴값)

예를 들면 아래와 같다
employees 테이블의 연봉 3000이하의 사원명을 출력하고싶다

1
2
3
select last_name, salary
from employees
where salary <= 3000;

또 as를 사용하면 원하는 컬럼명으로 임시적으로 바꾸어 출력이 가능하다
아래 예시는 위의 예시에서 as how_much만 추가해준것이다

1
2
3
select last_name, salary as how_much
from employees
where salary <= 3000;




동일유저 동시접속 가능

회사마다 다르지만 개발자마다 각각 유저를 쓸수있고 한 유저를 다 같이 사용할 수 있다
그 이유는 한 유저아이디를 가지고 동시접속이 가능하기때문이다

그렇다면 동시접속했는데 동일한 데이터를 동시에 commit을 날리면 그 데이터는 어떻게 되는가?
같은 행에 대해서는 동시작업이 안된다. 커밋,업데이트, 딜리트를 날려도 아예 실행이 안된다.
예시로 두사람이 employee_id =100을 접속했다. 그리고 한 사람이 데이터 수정후 커밋을 날려도 커밋이 아예 실행되지 않는다
반면, 한사람은 employee_id =100을 그리고 다른 한사람은 employee_id =101을 접속했으면 각자 수정이 가능하다

아래 이미지처럼 1번이 먼저 데이터를 수정한 터미널창이다.
2번은 동일 유저로 접속한 터미널창이다. 2번 터미널창에서는 데이터 중 department_id의 전체 데이터가 ####으로 나타나서 아예 읽기조차 되지않는다




트랜잭션 commit과 rollback

DML 명령어 후에는 임시값으로 보여진다.
이를 커밋하거나 롤백을 해서 임시값을 저장할지 안할지 결정해야한다.

  • COMMIT은 임시저장값을 저장한다. COMMIT후에는 낙장불입, 다시 되돌릴수없다
  • ROLLBACK은 임시저장값을 이전의 원래 값으로 되돌아간다.




system 권한 부여

  • session : 데이터 베이스를 연결할 수 있는 권한
    • 다른 권한을 다 주고 이 권한만 revoke한다면 결국 모든 데이터를 사용하지못하게된다.
  • 시스템권한 링크

Comments