전체 글 137

[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..

[SQL]조인(JOIN)의 기초-Equi join 과 Non-Equi Join

조인(JOIN)의 기초 - Equi Join과 Non-Equi Join Equi Join #EQUI JOIN 은 조인 조건식에 '='를 사용한다. 내가 한개의 테이블의 열의 정보를 알고있고 그것에 대한 다른 테이블의 정보를 알고 싶을때 예를들어 1234567select department_idfrom employeeswhere employee_id = 110; select department_namefrom departmentswhere department_id = 100;cs이와같이 해당 employees 테이블의 department_id를 연관된 departments 테이블의 department_name을 알고싶을때 위의 예시와같이 select문을 두번을 써야할때 JOIN을 쓸 수 있다. JOIN은 ..

[SQL] 분석 함수

분석 함수 10g 부터 추가된 내용일반적인 group function이 하나의 집단에 하나의 결과만 return 되는 것에 비해, 여러 가지 기준을 적용해 여러 results를 return 할 수 있다. 다음 예시를 보자123select last_name, salary,first_value(salary) over(order by salary desc) 첫번째값연봉from employees;Colored by Color Scriptercs이경우 desc가 있으면 첫번째값(최고연봉) asc가 있으면 첫번째값(최저연봉) 이러한 식으로 출력이 된다. 처리 대상이 되는 행의 집단을 window 라고 한다. 123select first_name 이름, salary 연봉,first_value( salary ) ove..

[SQL]GROUP BY의 기초

GROUP BY의 기초 GROUP BY는 간단하게 '그룹을 지어라'라는 뜻이다. 좀더 말하면, 그룹으로 묶은 col만 불러올 수 있다. 다음의 예시를 보자123select department_id, min(salary), max(salary)from employeesgroup by department_id;cs이경우 group by를 빼면 동작하지 않으나, department_id를 group으로 묶어줌으로써 department_id를 따로 select할 수가 있다. 다음은 잘못된 예시이다.123select employee_id, min(salary), max(salary)from employeesgroup by department_id;cs이 경우 department_id를 group하였으나 emplo..