INSERT
INSERT INTO 테이블명(칼럼)
VALUES (값1,값2,값3...);
INSERT INTO EMP_history
VALUES (9999,'GUGUGU','SALESMAN',7698,T,1300,0,10);
insert into emp_history
select * from emp where deptno= 20; -- 다중 레코드 한 번에 입력
NULL 넣는 방법
create table tt (seq number,val number);
insert into tt values(3,null); -- null 넣는 방법1
insert into tt values(3,''); -- null 넣는 방법2 *null과 공백은 다르다.
insert into tt (seq) values(77); -- null 넣는 방법3 *특정 컬럼에만 값을 주기
UPDATE
update 테이블명
set 컬럼1 = 바꾸고 싶은 값1,
컬럼2 = 바꾸고 싶은 값2
where 조건 *조건 설정을 안하면 모든 값이 바뀌므로 주의!
update emp_copy
set sal = 55555,
mgr = null -- update문에서는 예외적으로 is null > = null.
where deptno=10;
---emp_copy테이블에서 7844직업과 같고, 7654의 급여와 같게끔 7900사원 수정
update emp_copy
set job = (select job from emp_copy where empno=7844) ,
sal = (select sal from emp_copy where empno=7654)
where empno=7900;
select * from emp_copy;
DELETE
❗ 삭제하기 전에, 삭제할 값을 미리 확인하기
select * from emp_copy;
delete
from 테이블명
where 조건
delete
from emp_copy
where deptno = (select deptno from emp_copy where ename='SMITH')
❗ DDL문은 자동 커밋되어 rollback이 안되므로 주의하자. drop을 사용하기
CREATE
① 테이블 명, ② 컬럼 명
테이블, 컬럼 명의 길이는 30byte 문자 (Oracle 12c R2 부터는 128byte)
문자(영문, 한글), 숫자, 특수문자(_, $, #)만 가능
반드시 문자로 시작
③ 데이터 타입
NUMBER(4) : 4자리의 가변 길이 정수
NUMBER(7,2) : 7자리의 가변 길이 정수와 2자리의 가변길이 소수
VARCHAR2(10) : 10byte의 가변 길이 문자
④ 기본 값
테이블에 값이 입력(INSERT) 될 때 값이 없으면 기본으로 생성되는 값
DEFAULT [값(문자, 숫자, 날짜)], 사용하지 않으면 생략 가능
⑤ NULL 허용 여부
출처: https://gent.tistory.com/322
create table qq
(ww number,sde varchar2(10),rdate date);
--조건에 맞는 테이블 복제 (기존에 테이블이 있을 경우)
create table EMP_history
as (select * from emp where deptno = '10');
--테이블 복제
create table emp
as (select * from emp where 1=0);
ALTER
--컬럼 이름 변경
alter table emp_history2
rename column job to job2; --- 잘 사용하지 않는다.
--컬럼 크기, 타입 수정 (테이블에 이미 존재하는 컬럼 변경)
alter table emp_history
modify ename varchar2(5); --varchar2(10)>varchar2(5)
-- 새로운 컬럼 추가
alter table emp_history2
add fname varchar2(10);
--컬럼 삭제
alter table emp_history2
drop column sal2;
--테이블명 변경
alter table emp_history2
rename to emp_history22;
DROP
Delete from 테이블명; --테이블은 남긴 채 데이터만 삭제(기록o-백업가능)
Truncate from 테이블명; --테이블은 남긴 채 데이터만 삭제(기록x-백업불가, DDL문이기 때문)
Drop from 테이블명; --테이블 자체를 삭제(아예 삭제)
commit
:COMMIT을 해주면 저장하면서 트랜잭션이 종료되고 결과에 반영된다.
rollback
: 이전 상태로 복귀, 삭제했는데 취소하고 싶은 경우 ROLLBACK을 사용해주시면 된다.
❗ commit을 안한 경우에만 유효하다.
이미 commit을 한 상태라면, rollback을 해도 원상복귀가 불가능하다.
rollup
rollup: 그룹의 총 집계 결과를 보여준다.
SELECTDEPTNO,JOB,SUM(SAL)
FROM EMP
GROUP BY ROLLUP(DEPTNO, JOB);
type과 컬럼 개수가 동일해야 한다. select 3개면 밑에 select도 3개
(select empno,ename,to_char(111) as coll from emp)
union
(select 111,'abc', 'aaaa' from dual)
union
(select 122,'abc','asd' from dual);
union : 합치기 (중복 제거)
(select * from emp_history)
union
(select * from emp);
union all: 합치기 (중복 허용)
(select * from emp_history)
union all
(select * from emp);
쿼리에 개별적으로 order by절 사용할 수 없다.
--정렬을 해야 하는 경우
select *
from((select * from emp_history)
union all
(select * from emp))
order by ename;
intersect: 교집합
(select * from emp)
intersect
(select * from emp_history);
minus: 차집합
(select * from emp)
minus
(select * from emp_history);