Data Definition Language (Create)
Data Manipulation Language (Select Insert Update Delete)
CHAR(고정길이의 문자) VARCHAR2(가변길이의 문자) NUMBER(숫자)
DATE(날짜) LONG(가변 길이의 문자)
UPDATE EMP1 SET DEPTNO = 30 WHERE DEPTNODEPT = 10;
UPDATE EMP1 SET JOB='EMPLOYEE' WHERE JOB = 'MANAGER';
UPDATE EMP1 SET HIREDATE=SYSDATE;
DELETE FROM EMP1 WHERE DEPTNO = 10;
SELECT * FROM EMP1;
COMMIT;
select * from dept;
select * from emp;
select * from salgrade;
--WHERE 조건은 SELECT문에서 마지막에 쓸 수 있는데 원하는 레코드만 검색하고자 할 때 쓰인다
--예) 사원테이블(emp)에서 급여 (SAL)가 3000 이상인 사원을 출력하는 쿼리문
select * from emp where sal > 3000;
--비교 연산자를 사용하여 부서 번호(DEPTNO)가 20인 사원에 관한 정보만 출력하는 쿼리문
select * from emp where deptno = 20;
----비교 연산자를 사용하여 부서 번호(DEPTNO)가 10인 사원에 관한 정보만 출력하는 쿼리문
select * from emp where deptno = 10;
----비교 연산자를 사용하여 부서 번호(DEPTNO)가 10 이상 인 사원 관한 정보만 출력하는 쿼리문
select * from emp where deptno >= 10;
--이름(ENAME)이 FORD인 사람의 사번(empno), 이름(ename), 급여(SAL)를 출력하는 쿼리문
select empno, ename, sal from emp where ename= 'FORD';
select sal from emp where ename= 'SMITH';
--테이블의 구조를 확인하기 위한 명령어이다
desc emp;
desc dept;
--1982년 1월 1일 이후에 입사한 사원을 출력하는 쿼리문
select * from emp where hiredate >= '82/01/01' ;
--1981년 1월 1일 이후에 입사한 사원을 출력하는 쿼리문
select * from emp where hiredate >= '81-01-01' ;
-- 10번부서 이고, 잡이 메니져인 사람
select * from emp where deptno=10 and job ='MANAGER';
-- sal 1000이상이고, 잡이 메니져인 사원
select * from emp where sal>=1000 and job ='MANAGER' and deptno = 10;
-- 10번 부서가 아닌사람
select * from emp where deptno != 10;
select* from emp;
select * from emp where not deptno = 10;
--급여가 2000~3000 사이의 사원을 검색하는 쿼리문
select * from emp where sal >=2000 and sal <=3000;
SELECT * FROM EMP WHERE SAL BETWEEN 2000 AND 3000;
--급여가 2000 미만이거나 3000 초과인 사원을 검색하는 쿼리문
select * from emp where sal < 2000 or sal > 3000;
SELECT * FROM EMP WHERE SAL not BETWEEN 2000 AND 3000;
--1981년에 입사한 사원을 출력하는 쿼리문
SELECT * FROM EMP WHERE HIREDATE BETWEEN '81-01-01' AND '81.12.31';
--부서 번호가 10번 또는 20번인 사원
SELECT * FROM EMP WHERE deptno =10 or deptno =20;
--부서 번호가 10번 또는 20번인 사원
SELECT * FROM EMP WHERE job ='MANAGER' or job='CLERK';
--커미션(COMM)이 300 혹은 500 혹은 1400인 사원이 있는지 검색하는 쿼리문
SELECT * FROM EMP WHERE comm =300 or comm = 500 or comm= 1400;
SELECT * FROM EMP WHERE COMM in (300, 500, 1400);
--예)커미션(COMM)이 300 혹은 500 혹은 1400이 아닌 사원이 있는지 검색하는 쿼리문
SELECT * FROM EMP WHERE comm !=300 and comm != 500 and comm != 1400;
SELECT * FROM EMP WHERE COMM not in (300, 500, 1400);
-- 오라클 테이블 생성
create table emp1(
empno number(4) default 1000 not null,
ename varchar2(10),
job varchar2(9),
mgr number(4),
hiredate date,
sal number(7,2), --7자리의 가변 길이 정수와 2자리의 가변길이 소수
comm number(7,2),
deptno number(2)
);
desc emp1;
-- insert
insert into emp1 values(7839,'홍길동','메니져',1234,'1981/05/05',5000,null,10);
insert into emp1 values(7000,'홍길순','메니져',1234,'1981/05/05',5000,null,10);
commit;
select * from emp1;
--사원의 급여를 10% 인상시키는 UPDATE문을 만드는 쿼리문
--update
update emp1 set sal = sal *1.1;
--홍길순 월급 업데이트
update emp1 set sal = sal * 1.1 where ename='홍길순';
--부서번호가 10번인 사원을 부서번호를 30번으로 수정하시오.
update emp1 set deptno = 30 where deptno =10;
--job 이 메니져인 사람을 변경 -> 사원
update emp1 set job = '사원' where job ='메니져';
-- 모든 입사일을 오늘로 수정하는 쿼리문
update emp1 set hiredate = sysdate;
--삭제
delete from emp1 where deptno = 10;
SELECT * FROM EMP WHERE ENAME LIKE '%N';
(%N : 이름이 N으로 끝나는 사람 출력)
SELECT * FROM EMP WHERE ENAME NOT LIKE '%A%';
(이름에 A가 들어가지 않는 사람 출력)
각 프로그램 속의 NULL
(Java) 참조형에만 사용, 아직 참조할 주소가 없는 초기화 상태
(Oracle) 미확정. 알 수 없는 값. (연산, 할당, 비교 불가능)
SELECT * FROM EMP WHERE COMM IS NULL;
SELECT * FROM EMP WHERE COMM IS NOT NULL;
한 행의 결과를 출력하기 위한 테이블 (더미 데이터)
그룹 함수 : 하나 이상의 행을 그룹으로 묶어 연산하여, 하나의 결과를 나타내는 함수
SELECT * FROM EMP;
SELECT * FROM DEPT;
-- 10 ACCOUNTING 20 RESEARCH 30 SALES
SELECT * FROM EMP, DEPT;
(12 X 4)
SELECT * FROM EMP, DEPT WHERE EMP.DEPTNO = DEPT.DEPTNO;
(공통된 조건만 나올 수 있도록 하기 >> 12개 출력)
primary key : 중복되면 안되는 컬럼을 표시하는 것
foreign key : 외부에 있는 것을 참조하게 되는 키