썸네일 (SQL 문법) 뷰, 시퀀스, 인덱스 뷰 뷰(view) : 하나 이상의 기본 테이블이나 다른 뷰를 이용하여 생성되는 가상 테이블 가상 테이블을 통해서 데이터 보안 관리나 안정성 확보 용이 CREATE VIEW ED_VIEW1 --단일뷰 AS (SELECT * FROM EMP); CREATE or replace VIEW ED_VIEW2 --복합뷰 AS (SELECT E.EMPNO, E.ENAME, D.DNAME, D.DEPTNO FROM EMP E, DEPT D where e.deptno=d.deptno); SELECT * FROM ED_VIEW2; UPDATE ED_VIEW2 SET ENAME='SMITH99' where ENAME='SMITH'; SELECT * FROM EMP; --뷰를 만들기 위해 사용된 원본 테이블에 변경이 가해진다...
썸네일 (SQL 문법) DDL (CREATE, DROP, ALTER) DDL DDL은 자동으로 커밋되어서 롤백이 안되므로 주의해야한다. 가급적 DROP 대신 DELETE CREATE 테이블 만들기 CREATE TABLE emp ( empno NUMBER(4)PRIMARY KEY NOT NULL, ename VARCHAR2(10), job VARCHAR2(9), mgr NUMBER(4), hiredate DATE, sal NUMBER(7,2), comm NUMBER(7,2), deptno NUMBER(2) ); 테이블 복제 (테이블 생성 후 데이터 까지 입력) CREATE TABLE EMP_HISTORY AS (SELECT * FROM EMP WHERE DEPTNO = 10); CREATE TABLE 테이블명 AS (SELECT * FROM 복제하고싶은_테이블명 WHERE ..
썸네일 (SQL 문법) DML (INSERT, UPDATE, DELETE) DML INSERT INSERT INTO emp(empno,ename,job) VALUES(1234,'choi','student'); INSERT INTO 테이블명(칼럼1,칼럼2,칼럼3) VALUES(칼럼1값,칼럼2값,칼럼3값); NULL 입력하는 법 INSERT INTO emp(empno,ename,job,sal) VALUES(1234,'choi','student',NULL); UPDATE UPDATE EMP SET SAL=55555, JOB='GUGUUGU', MGR = NULL WHERE DEPTNO=10; UPDATE 테이블명 SET 바꾸고싶은 칼럼1 = 바꾸고싶은 값, 바꾸고싶은 칼럼2 = 바꾸고싶은 값,... WHERE 조건 (주의. 조건설정 안하면 모든 값이 바뀜) UPDATE EMP SET..
썸네일 (SQL 문법) 집합 연산 집합연산 (UNION/UNION ALL/INTERSECT/MINUS) 집합 연산자를 한 눈에 이해할 수 있는 그림 UNION/UNION ALL union 테이블을 합한 후 중복값 제외하고 출력 SELECT * FROM EMP_HISTORY UNION SELECT * FROM EMP ; union all 테이블을 합한 후 중복값 모두 출력 (SELECT * FROM EMP_HISTORY) UNION ALL (SELECT * FROM EMP) ; INTERSECT (교집합) 겹치는 부분만 출력 SELECT * from EMP INTERSECT SELECT * FROM EMP_HISTORY ; MINUS (차집합) 겹치는 부분 제외하고 출력 SELECT * from EMP MINUS SELECT * FROM ..
썸네일 (SQL 문법) 서브 쿼리 (단일행, 다중행) 서브쿼리 단일행 서브쿼리 서브쿼리는 where이나 having 조건에서 테이블 내의 고유값을 비교하기 위해서 사용한다. (ex. 'KING'보다 급여가 많은 사람을 출력하시오) 직접 테이블을 확인하여 KING의 급여를 본 다음 코딩을 해도 되지만, select * from emp where sal > 5000 이런 식의 코드는 KING의 급여가 변동되는 경우에는 바람직하지 않다. 따라서 서브쿼리를 이용하여 유연한 코드를 작성해야한다. select * from emp where sal>(select sal from emp where ename='KING'); 괄호 안에 비교하고 싶은 값을 SELECT 형식으로 작성하면 된다. select * from emp where sal>(select min(sal) ..
썸네일 (SQL 문법) JOIN JOIN 연관된 여러 테이블을 연결하기 위함 where 조건으로 테이블을 서로 연결해줘야함 -------- 여러 테이블 JOIN(조인) SELECT * FROM EMP, DEPT WHERE EMP.DEPTNO = DEPT.DEPTNO order by emp.deptno asc, dept.deptno asc; -- 14 * 4 = 56 -- 양쪽 테이블에 겹치는 이름의 컬럼을 사용할 경우 반드시!!! 테이블명.컬럼 명확히 기재 -- 00918. 00000 - "column ambiguously defined" --SELECT DNAME, DEPTNO, ENAME -- 에러가 난다 SELECT DNAME, DEPT.DEPTNO, ENAME FROM DEPT, EMP WHERE DEPT.DEPTNO = EMP..
썸네일 (SQL 문법) SQL 함수 (그룹 함수) 그룹함수 그룹함수(MAX, MIN, AVG, SUM, COUNT) 그룹함수 -- 총 5개 그룹함수 -- 최대값: max() , 최소값: min(), 평균: avg(), 총합: sum(), 갯수: count() select max(sal), min(sal), avg(sal), sum(sal), count(sal) FROM EMP; SELECT trunc(avg(sal),0) --10번부서 FROM EMP where deptno = 10; --2916 SELECT trunc(avg(sal),0) --20번부서 FROM EMP WHERE DEPTNO = 20; --2175 ------------ ****** 그룹함수5개는 Group by와 무관하게 그냥 쓸수 있다. SELECT trunc(avg(sal),0)..
썸네일 (SQL 문법) SQL 함수 (단일행 함수) 단일행 함수 문자함수 (UPPER, LOWER, LENGTH, LPAD, RPAD, SUBSTR, TRIM) -- 단일행 함수 -- -- 문자 함수 대문자로 출력 UPPER('값'), 소문자로 출력 LOWER('값') 문자 길이 출력 LENGTH('값'), 출력 문자 범위 SUBSTR('값',n번째부터,n글자) LPAD('값',몇 글자,'*') :총 몇글자까지 공백을 왼쪽부터 '*'로 채운다. RPAD('값',몇 글자,'*') :총 몇글자까지 공백을 오른쪽부터 '*'로 채운다. TRIM(' 값 ') : 공백제거 SELECT UPPER('abc') , LOWER('AAddedC'), LENGTH('abc'), '-'||TRIM(' abc ')||'-', LPAD('abc', 7, '0'), RPAD('ab..
썸네일 (SQL 문법) SELECT문 기본 기본 Select문 ------------------------------기본 Select문---------------------------------- --1. * col,col (*은 전체 지정, 아니면 칼럼 이름으로 ) SELECT * FROM EMP; (EMP 테이블의 전체 칼럼의 데이터를 불러와라) select empno, ename, job from emp; (EMP 테이블의 empno, ename, job 칼럼의 데이터를 불러와라) select * from dept; (dept 테이블의 전체 칼럼의 데이터를 불러와라) --2. 산술연산 (+-*/, null) SELECT sal, SAL*100 FROM EMP; (EMP테이블의 sal칼럼의 데이터와 sal칼럼의 데이터에 *100을 한 값을 불..