https://www.oracle.com/database/technologies/xe-prior-release-downloads.html
오라클 서버 서비스 포트번호 : 1521
설치확인
제어판 - 관리도구 -서버스
도구 -환경설정
CREATE USER sql3 IDENTIFIED BY 1234;
GRANT connect, resource, dba to sql3;
CREATE TABLE DEPT(
DEPTNO NUMBER(2) CONSTRAINT PK_DEPT PRIMARY KEY,
DNAME VARCHAR2(14),
LOC VARCHAR2(13)
);
commit;
CREATE TABLE EMP(
EMPNO NUMBER(4) CONSTRAINT PK_EMP PRIMARY KEY,
ENAME VARCHAR2(10),
JOB VARCHAR2(9),
MGR NUMBER(4),
HIREDATE DATE,
SAL NUMBER(7,2),
COMM NUMBER(7,2),
DEPTNO NUMBER(2) CONSTRAINT FK_DEPTNO REFERENCES DEPT
);
-- dept테이블 4개의 행을 입력
INSERT INTO DEPT(deptno,dname,loc) VALUES(10,'ACCOUNTING','NEW YORK');
INSERT INTO DEPT(deptno,dname,loc) VALUES(20,'RESEARCH','DALLAS');
INSERT INTO DEPT(deptno,dname,loc) VALUES(30,'SALES','CHICAGO');
INSERT INTO DEPT(deptno,dname,loc) VALUES(40,'OPERATIONS','BOSTON');
INSERT INTO dept(deptno,dname,loc) VALUES(50,'IT', 'NEW YORK');
commit;
select * from dept;
-- emp테이블 : insert문에서 테이블이름뒤 컬럼명을 생략하면 전체 컬럼을 가르킴
INSERT INTO EMP VALUES
(7369,'SMITH','CLERK',7902,to_date('17-12-1980','dd-mm-yyyy'),800,NULL,20);
INSERT INTO EMP VALUES
(7499,'ALLEN','SALESMAN',7698,to_date('20-2-1981','dd-mm-yyyy'),1600,300,30);
INSERT INTO EMP VALUES
(7521,'WARD','SALESMAN',7698,to_date('22-2-1981','dd-mm-yyyy'),1250,500,30);
INSERT INTO EMP VALUES
(7566,'JONES','MANAGER',7839,to_date('2-4-1981','dd-mm-yyyy'),2975,NULL,20);
INSERT INTO EMP VALUES
(7654,'MARTIN','SALESMAN',7698,to_date('28-9-1981','dd-mm-yyyy'),1250,1400,30);
INSERT INTO EMP VALUES
(7698,'BLAKE','MANAGER',7839,to_date('1-5-1981','dd-mm-yyyy'),2850,NULL,30);
INSERT INTO EMP VALUES
(7782,'CLARK','MANAGER',7839,to_date('9-6-1981','dd-mm-yyyy'),2450,NULL,10);
INSERT INTO EMP VALUES
(7788,'SCOTT','ANALYST',7566,to_date('13-2-1985','dd-mm-yyyy'),3000,NULL,20);
INSERT INTO EMP VALUES
(7839,'KING','PRESIDENT',NULL,to_date('17-11-1981','dd-mm-yyyy'),5000,NULL,10);
INSERT INTO EMP VALUES
(7844,'TURNER','SALESMAN',7698,to_date('8-9-1981','dd-mm-yyyy'),1500,0,30);
INSERT INTO EMP VALUES
(7876,'ADAMS','CLERK',7788,to_date('13-2-1987','dd-mm-yyyy'),1100,NULL,20);
INSERT INTO EMP VALUES
(7900,'JAMES','CLERK',7698,to_date('3-12-1981','dd-mm-yyyy'),950,NULL,30);
INSERT INTO EMP VALUES
(7902,'FORD','ANALYST',7566,to_date('3-12-1981','dd-mm-yyyy'),3000,NULL,20);
INSERT INTO EMP VALUES
(7934,'MILLER','CLERK',7782,to_date('23-1-1982','dd-mm-yyyy'),1300,NULL,10);
INSERT INTO EMP VALUES
(9999,'ACE','CLERK',7782,to_date('23-1-1982','dd-mm-yyyy'),1300,NULL,NULL);
commit;
select * from emp;
※ 잘못입력시 지워고 새로 입력할려면
delete from dept;
commit;
delete from emp;
commit;
-- 데이터를 저장하는 소프트웨어 : 데이터베이스 관리 시스템(DBMS)
-- oracle, mysql, mariadb, mssql, tibero(티맥스 티베로 ),....
-- RDBMS : 테이블 형태로 저장되는 관계형 데이터베이스 관리 시스템
-- 빅데이터 : 많다, 다양하다
-- DDL 데이터 정의 (create, alter, drop)
-- DML 데이터 조작 (insert, update, delete, select)
-- DCL 권한 제어
-- TCL 실행 제어
-- 실행순서
-- 3) select(조회) ... 1) from(어느테이블) ... 2) where(행 조건) ... 4)order by(정렬)
select empno as 번호,ename as 이름,deptno as 부서번호 -- 3)
from emp -- 1)
where deptno = 20 -- 2)
order by ename asc; -- asc 오름차순 4)
-- order by empno desc; -- 내림차순 4) desc
-- select결과물 --> View
-- 실행순서로 인해 where절에 별칭(alias)을 사용하면 에러
select empno as 번호,ename as 이름,deptno as 부서번호 -- 3)
from emp -- 1)
where 부서번호 = 20 -- 2)
order by ename asc; -- 4)
-- order by절에 별칭(alias) 사용가능
select empno as 번호,ename as 이름,deptno as 부서번호 -- 3)
from emp -- 1)
where deptno = 20 -- 2)
order by 이름 asc; -- 4)
-- 주석 : 실행되지 않는 코드, 코드의 설명을 표현...
/*
여러줄을 주석을
사용하고 싶을때
*/
-- 명령의 끝 : ;으로 표현
-- 테이블(열,행)의 데이터를 조회할때
-- select 컬럼명 from 테이블명 where 조건 order by 컬럼명 asc(오름차순) desc(내림차순)
desc emp; -- 테이블구조 출력
-- 원하는 컬럼 출력
select ename from emp;
select empno, ename from emp;
select ename, empno from emp;
-- 문자를 표현할때 ''함께 사용
select empno, ename from emp
where ename = 'SMITH';
-- 숫자를 표현할때 ''를 사용하지 않는다. '123' vs 123
select empno, ename from emp
where empno = 7369;
-- 자동형변환
select empno, ename from emp
where empno = '7369';
-- 테이블에 존재하지 않는 값들도 출력이 가능하다
-- 문자값을 추가
select empno, ename, 'yes' as 출근 from emp;
-- 숫자값을 추가
select empno, ename, 100 as 점수 from emp;
-- 계산식 추가
select empno, ename, 2+3 from emp;
-- select문을 계산기로 이용
select 2+3 from dual;
select 5-2 from dual;
select 5*2 from dual;
select 5/2 from dual;
select mod(14, 5) from dual; -- 함수는 다음에 자세하게 수업
select floor(3.14) from dual;
-- 소수점 버림 함수를 이용하면 나누기의 몫을 구할 수 있다
select floor(14/5) from dual;
select floor(14/5) 몫, mod(14, 5) 나머지 from dual;
-- 조회 결과에 새로운 열을 추가 할 수 있다.
select ename, sal, comm, sysdate as 오늘 from emp;
-- 조회 결과에 기존열의 계산값을 추가 할 수 있다.
select ename, sal as 현재급여, sal + (sal*0.1) as 인상된급여 from emp;
select ename, sal, comm, sal+nvl(comm, 0) as 총급여 -- nvl(값1, 값2) 값1이 null이면 값2값이 된는 함수 3)
from emp -- 1)
where sal+nvl(comm, 0) > 2000 --2
order by sal+nvl(comm, 0) desc; -- 4
select ename, sal, comm, sal+nvl(comm, 0) as 총급여 -- 3)
from emp -- 1)
where sal+nvl(comm, 0) > 2000 --2
order by 총급여 desc; -- 4
-- 중복된 행을 제거하는 distinct
-- distinct
-- 열값이 중복되면 제거되면 X, select의 결과가 중복되면 O -> select 바로 다음에
select distinct ename, deptno from emp;
-- distinct의 위치는 컬럼앞이 아니고 select 뒤 -> distinct범위는 from절 앞까지
select distinct deptno, ename from emp;
select distinct deptno from emp;