본문 바로가기

Programming/Database

데이터베이스 6강

# 이름 Davies인 사람보다 후에 고용된 사원들의 이름  및 고용일자를 출력하시오. 고용일자를 역순으로 출력
SELECT last_name, hire_date
FROM employees
WHERE hire_date > (SELECT hire_date
                         FROM employees
                         WHERE last_name = 'Davies')
ORDER BY hire_date DESC

# King을 매니저로 두고 있는 모든 사원들의 이름 및 급여를 출력하시오.
SELECT last_name
FROM employees
WHERE last_name = 'King'

# 회사 전체 평균급여보다 더 많이 받는 사원들 중 이름이 u가 있는 사원들이 근무하는
부서에 근무하는 사원들의 사번, 이름 및 급여를 출력하시오.
SELECT DISTINCT employee_id, last_name, salary
FROM employees
WHERE department_id IN ( SELECT department_id
                                   FROM employees
                                   WHERE salary > (SELECT AVG(salary)
                                                        FROM employees)
                                   AND last_name LIKE '%u%')


1권 318페이지
# DML
트랜잭션 : SQL만 트랜잭션 작동할 수 있음
             COMMIT, ROLLBACK

# selects는 검색만 하고 트랜잭션 작동 못함

# 트랜잭션 작동
DML : insert, update, delete
        문장 전체를 하나의 트랜잭션으로 인식
DDL : create
       실행과 동시 OP COMMIT
DCL : grant
       실행과 동시 OP COMMIT

트랜잭션은 사이즈가 작으면 좋음
트랜잭션 : 자동 종료 - Auto COMMIT : 새로운 트랜잭션이 발생하면 앞의 트랜잭션이 DB 바로 저장
             수동 종료 - 명령어를 입력하여 COMMIT
INSERT : ROLLBACK하면 저장 안됨, 트랜잭션 취소
            COMMIT하면 수동 저장
            CREATE하면 자동 저장

# 행 추가, 정렬은 안해줌
insert into departments(department_id, department_name)
  2  values(280, 'tyktyk')
  3  ;


select * from departments


rollback;




# 오늘 날짜
select sysdate from dual;

select * from dual;
외부에서 값을 받아들이는 dual함수

# 저장되지 않은 값을 쓰게 해주는 dual
select 1345*456 from dual;



insert into departments
values(&a, '&b', &c, &d);
Enter value for a: 300
Enter value for b: aa
Enter value for c: 100
Enter value for d: 1700
old   2: values(&a, '&b', &c, &d)
new   2: values(300, 'aa', 100, 1700)


에디터 기능
# 동시 다수 스크립트 파일 실행
save empinsert.sql
Created file empinsert.sql

C:\oraclexe\app\oracle\product\11.2.0\server\bin
empinsert.txt 실행


INSERT 행 삽입
DELETE 행 삭제
UPDATE는 다른 문장과 달리 COLUMN기준
update employees
set salary = 200000;

107 rows updated.

select salary
from employees;





# 1번 커맨드, 2번 커맨드
# 사번 141의 급여
SELECT salary
FROM employees
WHERE employee_id = 141;

# 1번 커맨드
# 급여 올려주기
UPDATE employees
SET salary = 350000
WHERE employee_id = 141;

# 1번 커맨드, 2번 커맨드
# 사번 141의 급여
SELECT salary
FROM employees
WHERE employee_id = 141;

# 데이터베이스 일관성 : 다른 Run SQL Command Line에서 변경이 일어나도 변경되기 이전의 값으로 일관성 유지

# 2번 커맨드
UPDATE employees
SET salary = 400000
WHERE employee_id = 141;
# 결과 안 나오고 커서
# 병행제어 : 트랜잭션 작성 중인 프로세스가 종료될 떄 까지 락 설정하여 대기 설정


deadlock : 서로의 자원을 요구
rollback 처리


트랜잭션을 작게 나누어서 사용하는 것을 권장 : 동시성 향상


1권 170페이지
# 테이블 생성 및 관리


# 사용자 테이블만들기
테이블은 사용자 명이 생략되어있다. hr.employees,


CREATE table test
(a number(3)
,b character(3));

Table created.

DESC test;

select *
from test;
--
no rows selected

insert into test
values (10, 'bb');

SELECT *
FROM test;

COMMIT;




# 딕셔너리 질의
user_ : 내가 소유한거 (hr)
all_ : 내가 엑세스 가능한 거 (system)
dba_ : db의 전체


char(5) : 미리 5칸 저장공간 확보, 성능 향상, 저장공간 낭비, 돈 많이 필요
varchar() : 크기를 보고 천천히 저자공간 할당, 성능저하, 저장공간 좋음


number - 안 씀
number(p) - 정수만 가능
number(p,s) - 최대 9자리, 두번쨰 자리는 소수점자리

'Programming > Database' 카테고리의 다른 글

데이터베이스 8강  (0) 2020.03.10
데이터베이스 7강  (0) 2020.03.10
데이터베이스 5강  (0) 2020.03.10
데이터베이스 4강  (0) 2020.03.10
데이터베이스 3강  (0) 2020.03.10