DATABASE(oracleDB 11g)/SQL 36

[SQL]VIEW 의 기초

VIEW의 기초 뷰(view)는 하나 이상의 테이블 (또는 다른 뷰)에서 원하는 모든 데이터를 선택하여, 그들을 사용자 정의하여 나타낸 것이다. 뷰 생성12345CREATE [OR REPLACE] [FORCE|NOFORCE] VIEW view[(alias[, alias]...)]AS subquery[WITH CHECK OPTION [CONSTRAINT constraint]][WITH READ ONLY [CONSTRAINT constraint]];cs의 형식으로 만든다 구문명 설명 OR REPLACE 뷰가 이미 있으면, 다시생성 FORCE 기본테이블의 존재 여부 관계없이 생성 NOFORCE 기본테이블이 있는경우만 뷰생성(기본값) VIEW 뷰의 이름 alias 뷰의 query에서 선택한 표현식의 이름 지정 ..

[SQL]제약 조건(Constraints)

제약 조건(Constraints) 제약 조건의 기본적인 종류는 다음과 같다.primary key (pk) : 기본키이며, 이 조건이 있으면 해당 컬럼 값은 반드시 존재하고, 유일해야한다. 밑에 설명하는 not null과 unique가 결합된 형태라고 생각하면 된다.주의할 점으로 테이블당 1개만 존재할 수 있다.foreign key (fk) : 해당 컬럼 값이 다른 컬럼 값을 참조해야함unique (uk) : 해당 컬럼 값은 유일해야함not null (nn) : 해당 컬럼 값은 NULL을 허용하지 않음check (ck) : 해당 컬럼에 저장 가능한 데이터 값의 범위나 사용자 조건을 지정제약조건을 설정할 경우 조건에 맞춰, DML에서 값이 추가가 되거나, 안될 수 있다. 1select * from user_..

[SQL]TCL(트랜잭션 관리) 기초

TCL(트랜잭션 관리) 기초 트랜잭션은 간단하게 일 하나의 단위를 말한다.또한 가장 큰 특징으로는 All-Or-Noting방식으로 처리되는데 All-Or-Nothing은 여러 개의 명령이 모두 정상적으로 처리되면 정상 종료 하고, 하나라도 비정상적으로 처리되면 모두를 취소하는 것을 말한다. commitcommit;의 형식으로 쓴다commit은 저장되지 않은 모든 DB를 저장하고, 현재의 트랜잭션을 종료하는 것을 말하며,데이터를 처리하는 DML을 한 후에 사용된다.(create alter drop은 자동으로 commit이 발생)1commit;cs rollback저장되지 않은 데이터를 모두 취소한다음 트랜잭션을 종료하는 것을 말한다.아래에 나오는 savepoint를 이용한다면, 내가 지정한 savepoint..

[SQL]DML(Data Manupulation Language)의 기초

DML(Data Manupulation Language)의 기초 일단 간단한 테이블을 하나 생성하자.123456create table test(no number(3),name varchar2(10),tel varchar2(20),address varchar2(100));cs INSERT : 테이블에 데이터를 추가insert into 테이블명 [컬럼명] values [값] 다른 테이블에서 리턴되는 로우 수만큼 데이터를 테이블에 추가할 경우insert into 테이블명 select [컬럼명] from [가져올 테이블명] {conditions}1234insert into test (no, name, tel)select employee_id, last_name, phone_numberfrom employeesw..

[SQL]DDL(Data Definition Language) 의 기초

DDL(Data Definition Language) 의 기초 테이블 생성create table 테이블명( 컬럼명 자료형(표현할 범위) ); 의 구조를 따른다.123456create table test(name varchar2(10),age number(3),tel varchar2(20),address varchar2(50));cs 테이블 복사 create table test2 as select * from test1; 의 구조를 따른다.1234create table empasselect last_name, salary, department_idfrom employees;Colored by Color Scriptercs이경우, 테이블의 구조 뿐만 아니라 데이터까지 전부 복사된다. 테이블 구조 복사1234..

[SQL]서브쿼리(SUBQUERY)의 기초

서브쿼리(SUBQUERY) 쿼리 내부에 하나 이상의 쿼리가 더 있는 것다시말해 SQL명령문에 포함된 SELECT 명령문- 메인쿼리보다 먼저 실행 될 수 있고, 서브쿼리가 위치한 곳에 결과를 리턴 아래 예시는 단일행 서브쿼리이다.다음 두개의 구문의 결과 값은 같다.1234567select department_namefrom employees e, departments dwhere e.department_id = d.department_idand e.last_name = 'Seo'; select department_name from departments where department_id =(select department_id from employees where last_name = 'Seo');cs 1..

[SQL]계층적 질의

계층적 질의 계층적 질의SELECT [level] 컬럼명, FROM 테이블명WHERE 조건START WITH 계층의 시작점CONNECT BY 계층의 논리 표현식 의 형식으로 사용한다.다음의 예시를 참고하자.12345select lpad(employee_id, level*3, '.'), last_namefrom employeesstart with employee_id = 100connect by priore mployee_id = manager_id; Colored by Color Scriptercs SQL을 배운지 얼마 되지 않아 잘못된 내용이 있을 수 있습니다. 틀린 내용이있다면, 댓글로 달아주세요.

[SQL]GROUP BY의 확장

GROUP BY의 확장 기본적인 group by는 아래 예시와 같다.1234select department_id 부서, trunc(avg(salary), 2) 평균연봉, job_id 업무from employeesgroup by department_id , job_idorder by department_id asc;Colored by Color Scriptercs위의 내용은 department_id로 그룹화하고 그룹화된 테이블을 다시 job_id로 그룹화 하는 것을 말한다. 아래 groupby rollup()의 예시를 보자1234select department_id 부서, trunc(avg(salary), 2) 평균연봉, job_id 업무from employeesgroup by rollup(departme..

[SQL]집합연산자의 기초

집합연산자의 기초 집합연산자는UNION : 합집합UNION ALL : 합집합+겹치는 것까지 중복표현INTERSECT : 교집합MINUS : 차집합로 나뉜다. - 실행 순서를 변경할 때 괄호를 사용한다.- ORDER BY절은 명령문의 맨 끝에만 한번 올 수 있다.- SELECT 의 리스트 표현식은 개수가 같아야한다.* 개수가 안맞을 경우 NULL을 사용할 수도 있다.다음의 예시를 참고하자.1234567SELECT DEPTNO, NULL, SUM(SAL)FROM EMP GROUP BY DEPTNO UNION ALL SELECT DEPTNO, JOB, SUM(SAL)FROM EMP GROUP BY DEPTNO, JOB; cs 주의할 점으로는 두 개이상의 쿼리문을 사용해야 하면, 각 쿼리문의 데이터 타입을 일치..

[SQL]INNER JOIN과 OUTER JOIN, SELF JOIN, CROSS JOIN 에 대하여

INNER JOIN과 OUTER JOIN, SELF JOIN, CROSS JOIN 에 대하여 INNER JOIN- Inner Join은 복수 테이블들이 조인 조건을 모두 만족하는 레코드들만 선별하는 조인이다. - 조인 조건에 만족하는 행만 검색 OUTER JOIN- INNER JOIN 결과 + 조인 조건에 만족하지 않은 행도 포함아래 예시는 아래와 같으나 manager_id가 null인 경우도 출력하여 주는 outer join의 예시이다.1234select e.employee_id, e.last_name, e.manager_id, m.last_namefrom employees e, employees mwhere e.manager_id = m.employee_id(+)order by e.employee_i..