-- 컬럼 추가
ALTER TABLE employees
ADD (email VARCHAR2(100));
-- 컬럼 삭제
ALTER TABLE employees
DROP COLUMN email;
-- 컬럼 수정
ALTER TABLE employees
MODIFY (salary NUMBER(12,2));
-- 제약 조건 추가
ALTER TABLE employees
ADD CONSTRAINT emp_pk PRIMARY KEY (emp_id);
-- 제약 조건 삭제
ALTER TABLE employees
DROP CONSTRAINT emp_pk;
-- 제약 조건 수정
ALTER TABLE employees
MODIFY (salary DEFAULT 0);
테이블 삭제
기본형식
DROP TABLE 테이블명;
예제
-- 테이블 삭제
DROP TABLE employees;
-- 테이블 삭제시 CASCADE 옵션 사용
DROP TABLE employees CASCADE CONSTRAINTS;
단순히 VALUES를 반복해서 작성하는 것으로는 sql문이 종료되지 않았다는 오류만 뱉어낼 뿐이다
INSERT ALL
INTO POKEMON_MSTR
VALUES (4, '파이리', '도롱뇽포켓몬')
INTO POKEMON_MSTR
VALUES (5, '리자드', '화염포켓몬')
INTO POKEMON_MSTR
VALUES (6, '리자몽', '화염포켓몬')
SELECT *
FROM DUAL;
다음과 같이 INSERT ALL을 써서 데이터를 넣어주면 데이터를 성공적으로 넣을 수 있다.
select emp_no, salary, salary * 1.1
from salaries;
문자열을 더할 경우 문자열을 0으로 취급한다
select last_name + first_name
from employees;
같은 부서 번호의 중복을 제거한다
select distinct dept_no
from dept_emp;
조건절
d001 부서의 사원번호와 부서번호
select emp_no, dept_no
from dept_manager
where dept_no = 'd001';
<> 아닌
d001 부서가 아닌 사원번호와 부서번호
select emp_no, dept_no
from dept_manager
where dept_no <> 'd001';
급여가 70000이상인 사원
select emp_no, salary
from salaries
where salary >= 70000;
1990년 01월 01일 이후 입사한 사원
select emp_no, first_name, last_name, hire_date
from employees
where hire_date >= '1990-01-01';
논리 연산자
- 두 개 이상의 조건문을 작성할 때 사용하는 연산자
- and : 양쪽 조건 모두 만족
- or : 양쪽 조건 중 하나만 만족
- not : 조견 결과 부정
1990년 01월01일 이후 입사했고, 성별이 남자인 사람
select emp_no, gender, hire_date, first_name
from employees
where hire_date >= '1990-01-01' and gender="M";
1990년 01월 01일 이후 부터 80000이 넘는 경우
select emp_no, salary, from_date
from salaries
where from_date >= '1990-01-01' and salary >= 80000;
d0001 혹은 d0001 부서의 매니저
select emp_no, dept_no
from dept_manager
where dept_no = 'd001' or dept_no = 'd002';
select emp_no, dept_no
from dept_manager
where dept_no in('d001','d002');
70000과 79999사이
select emp_no, salary
from salaries
where salary between 70000 and 79999;
그 반대
select emp_no, salary
from salaries
where not salary between 70000 and 79999;
select *
from employees;
select *
from departments;
select *
from dept_manager;
select *
from titles;
select emp_no, first_name, last_name
from employees;
select 20 + 10;
select 20 - 10;
select 20 * 10;
select 20 / 10;
select emp_no, salary, salary * 1.1
from salaries;
select last_name + first_name
from employees;
select distinct dept_no
from dept_emp;
select emp_no, dept_no
from dept_manager
where dept_no = 'd001';
select emp_no, dept_no
from dept_manager
where dept_no <> 'd001';
select emp_no, salary
from salaries
where salary >= 70000;
select emp_no, first_name, last_name, hire_date
from employees
where hire_date >= '1990-01-01';
select emp_no, gender, hire_date, first_name
from employees
where hire_date >= '1990-01-01' and gender="M";
select emp_no, salary, from_date
from salaries
where from_date >= '1990-01-01' and salary >= 80000;
select emp_no, dept_no
from dept_manager
where dept_no = 'd001' or dept_no = 'd002';
select emp_no, dept_no
from dept_manager
where not dept_no = 'd001';
select emp_no, salary
from salaries
where salary between 70000 and 79999;
select emp_no, salary
from salaries
where not salary between 70000 and 90000;
select emp_no, dept_no
from dept_manager
where dept_no in('d001','d002');