CREATE TABLE EMP
(EMPNO number not null,
ENAME VARCHAR2(10),--10byte를 넣을수 있다.
JOB VARCHAR2(9),
MGR number ,
HIREDATE date,
SAL number ,
COMM number ,
DEPTNO number);
--alter session set nls_date_format='YYYY-MM-DD HH24:MI:SS';
INSERT INTO EMP VALUES --data 넣는 구문
(7369,'SMITH','CLERK',7902,'1980-12-17',800,null,20);
INSERT INTO EMP VALUES
(7499,'ALLEN','SALESMAN',7698,'1981-02-20',1600,300,30);
INSERT INTO EMP VALUES
(7521,'WARD','SALESMAN',7698,'1981-02-22',1250,200,30);
INSERT INTO EMP VALUES
(7566,'JONES','MANAGER',7839,'1981-04-02',2975,30,20);
INSERT INTO EMP VALUES
(7654,'MARTIN','SALESMAN',7698,'1981-09-28',1250,300,30);
INSERT INTO EMP VALUES
(7698,'BLAKE','MANAGER',7839,'1981-04-01',2850,null,30);
INSERT INTO EMP VALUES
(7782,'CLARK','MANAGER',7839,'1981-06-01',2450,null,10);
INSERT INTO EMP VALUES
(7788,'SCOTT','ANALYST',7566,'1982-10-09',3000,null,20);
INSERT INTO EMP VALUES
(7839,'KING','PRESIDENT',null,'1981-11-17',5000,3500,10);
INSERT INTO EMP VALUES
(7844,'TURNER','SALESMAN',7698,'1981-09-08',1500,0,30);
INSERT INTO EMP VALUES
(7876,'ADAMS','CLERK',7788,'1983-01-12',1100,null,20);
INSERT INTO EMP VALUES
(7900,'JAMES','CLERK',7698,'1981-10-03',950,null,30);
INSERT INTO EMP VALUES
(7902,'FORD','ANALYST',7566,'1981-10-3',3000,null,20);
INSERT INTO EMP VALUES
(7934,'MILLER','CLERK',7782,'1982-01-23',1300,null,10);
COMMIT; --이 구문을 넣어야 실행을 할 수 있다.
CREATE TABLE DEPT
(DEPTNO number,
DNAME VARCHAR2(14),
LOC VARCHAR2(13) );
INSERT INTO DEPT VALUES (10,'ACCOUNTING','NEW YORK');
INSERT INTO DEPT VALUES (20,'RESEARCH','DALLAS');
INSERT INTO DEPT VALUES (30,'SALES','CHICAGO');
INSERT INTO DEPT VALUES (40,'OPERATIONS','BOSTON');
COMMIT;
CREATE TABLE SALGRADE
( GRADE number,
LOSAL number,
HISAL number );
INSERT INTO SALGRADE VALUES (1,700,1200);
INSERT INTO SALGRADE VALUES (2,1201,1400);
INSERT INTO SALGRADE VALUES (3,1401,2000);
INSERT INTO SALGRADE VALUES (4,2001,3000);
INSERT INTO SALGRADE VALUES (5,3001,9999);
COMMIT;
select*from emp;
select*from dept;
select*from SALGRADE;
--1.사원 테이블에서 (모든데이터를 출력하세요)
select*from emp;
SELECT * FROM EMP; --쿼리문은 대소문자 구분이 없다.
--2.특정 컬럼 데이터 추출하기
select empno,ename,job,sal from emp;
select empno from emp;
select hiredate,sal,comm from emp;
--3.컬럼에 가명칭(alias)부여하기
select empno 사번, ename 이름
from emp;
select empno "사 번", ename "이 름"
from emp;
--정식 표기법(ansi 문법) >>권장
select empno as "사 번", ename as "이 름"
from emp;
--Oracle : 문자열을 표현할 때 문자 데이터는 엄격하게 대소문자를 구별한다.
--소문자와 대문자는 다른 문자이다.
select*from emp where ENAME = 'KING';
select*from emp where ENAME = 'king';
select*from emp where ENAME = 'King';
--Oracle : 연산자(결합 연산자) >> || >> 'hello'||'world' >> 'helloworld'
--Java : +연산자(숫자 + 숫자 연산)
--Java : +연산자(문자 + 문자 결합)
--ms-sql : java와 같다.
select '사원의 이름은 ' || ename || '입니다.' as "ename"
from emp;
select '사원의 이름은 ' || sal || '입니다.' as "ename"
from emp;
--****** table이 가지는 컬럼의 기본타입을 봐야 결합을 할 수 잇다**********
--컬럼이 숫자 타입일까, 문자일까
desc emp; --가장 기본적인 타입 확인을 위해서 사용한다.
select empno || ename as "결합"
from emp; -----내부적으로 자동 형변환을 한다. (숫자 ->문자) to_char()
select empno + ename as "결합" -----실제 연산 작업은 error > invalid number.
---중복 데이터 제거 : 키워드(distinct)
select distinct job from emp;
select distinct deptno from emp; --grouping 해서 대표로 한개 씩만 뽑는다.
select distinct job , deptno from emp order by job; --job으로 묶고 deptno
select distinct deptno , job from emp order by deptno;--deptno로 묶고 job
--오라클 언어(SQL) : structure quary language
--java 같은 언어다(연산자)
--java 거의 동일(%나머지 연산자) >> Oracle에서는 검색 패턴이다. >>연산자로 사용 불가이다.
--Oracle >> Mod()라는 함수가 있다.
--산술(+,-,*,/,....) + Mod()함수 이다.
--사원 table에서 사원의 급여를 100달러 인상한 결과를 출력하세요.
--1.컬럼의 타입(Type)>> number
desc emp;
select empno, ename,sal , sal + 100 as "인상급여"
from emp;
select 100 + 100 from dual; -- data Test 임시 dual
select 100 || 100 from dual; -- 순자 문자로 자동 형변환(결합)
select '100' + 100 from dual; -- 문자 >> 숫자 형변환
select 'A100' + 100 from dual; -- error
--비교 연산자
--java 같다(==) , 할당(=)
--Oracle 같다(=) , 같지 않다(!=)
--논리 연산자
--AND,OR,NOT
--조건절(원하는 row 가지고 오겠다)
select*
from emp
where sal >= 3000;
select empno , sal
from emp
where sal >= 3000;
--이상,이하 (=포함)
--초과,미만
--사번이 7788번인 사원의 사번, 이름 직종,입사일을 출력하세요.
select empno , ename , job , hiredate
from emp
where empno = 7788;
--사원의 이름이 king인 사원의 사번, 이름 , 급여를 출력하세요.
select empno , ename , sal
from emp
where ename = 'KING'; --대소문자 엄격하게 구분한다.(variable charactor2(20)...)
--급여가 2000$이상이면서 직종이 manager인 사원의 모든 정보를 출력하세요
select*
from emp
where sal >= 2000 and job = 'MANAGER';