일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- db
- 백준
- 데이터베이스
- oracle
- select
- 오라클
- darkest dark
- 반복문
- JOIN
- n x 2 타일링 2
- SQL
- DP
- 2156
- ANSI JOIN
- algoritm
- 자바
- Database
- 입출력
- 동적계획법
- 데이터길이
- 소숫점처리
- 알고리즘
- Dynamic Programming
- Java
- 문자열
- Algorithm
- Eclipse
- 10951
- 그대로 출력하기
- 변수
- Today
- Total
목록db (43)
Cracking Code
두 개의 테이블을 하나로 합칠 수 있는 MERGE 문에 대해서 알아봅시다. MERGE INTO table alias USING table alias ON (조건절) WHEN MATCHED THEN UPDATE SET col1 = col1_value, col2 = col2_value, ... WHEN NOT MATCHED THEN INSERT (column_list) VALUES (column_values); MERGE는 구조가 같은 2개의 테이블을 비교하여 하나의 테이블로 합치는 데이터 조작어입니다. 행이 이미 존재하면 UPDATE가 실행되고 존재하지 않으면 INSERT가 실행됩니다. MERGE를 실습하기 전에 임시로 테이블을 만들어볼까요? CREATE TABLE PT_01( 판매번호 VARCHAR2(8..
테이블에 저장된 행들을 삭제하는 DELETE 명령문에 대해서 알아보겠습니다. DELETE [FROM] table [WHERE condition]; 주의) 조건절을 사용하지 않으면 테이블 안의 모든 데이터를 삭제합니다. 부서 번호가 91인 부서를 삭제해봅시다. DELETE FROM DEPT WHERE DEPTNO = 91; 또한 조건절에 서브 쿼리를 사용할 수도 있습니다. DELETE [FROM] table WHERE 조건절 ( SELECT column1[, column2, ...] FROM table WHERE 조건절 ); 부서이름이 경리과인 부서 번호의 사원들을 사원 테이블에서 삭제해봅시다. DELETE FROM EMP WHERE DEPTNO = ( SELECT DEPTNO FROM DEPT WHERE..
테이블에 저장된 행들을 변경할 때 사용하는 명령어 UPDATE를 알아봅시다. UPDATE table SET column = value [, column = value, ...] [WHERE condition]; 한 번에 여러 개의 행들을 변경할 수 있음 부서 테이블에서 부서 번호가 90인 행의 부서 이름을 경리과, 지역을 부산으로 변경해봅시다. UPDATE DEPT SET DNAME = '경리과', LOC = '부산' WHERE DEPTNO = 90; 부서 번호가 90인 부서의 이름과 지역이 변경된 것을 확인할 수 있습니다. 서브 쿼리를 이용하여 복수의 컬럼도 변경할 수 있습니다. UPDATE column SET column ? ( SELECT column FROM table WHERE 조건절 ), ....
DB 테이블에 데이터를 입력하기 위한 데이터 조작어 INSERT INTO 에 대해 알아봅시다. 1. 단일 행 입력 INSERT INTO table [(column1, ...)] VALUES (value1, ...) INTO 절에 컬럼을 명시하지 않으면 table의 컬럼 순서대로 value 값이 추가됩니다. 컬럼을 명시하고 그 컬럼의 순서에 맞게 입력하면 1:1 대응하여 value 값이 추가됩니다. 입력되는 데이터의 타입은 컬럼의 데이터 타입과 같아야 합니다. 또한 데이터의 크기는 컬럼의 크기보다 작거나 같아야 합니다. DEPT 테이블에 부서 이름이 인사과이며 지역은 서울, 부서 번호는 각각 90 80 70으로 순서를 다르게 추가해봅시다. INSERT INTO DEPT(DEPTNO, DNAME, LOC) ..
서브쿼리란 SELECT 문에 포함되어 있는 또 하나의 SELECT 문입니다. 위 그림 처럼 SELECT 문을 2번 수행하여 결과를 2번 얻는 것과 달리 SELECT 문을 한 번에 2번 입력 및 수행하여 결과를 얻을 수 있습니다. 바깥 쪽 쿼리는 메인 쿼리, 안 쪽 쿼리는 서브 쿼리라고 합니다. 서브 쿼리가 먼저 수행되고 메인 쿼리가 수행됩니다. 반드시 괄호로 묶어서 사용하며 서브쿼리에는 ORDER BY 절 사용 불가합니다. SELECT column1, column2, ... FROM table | [(SELECT ...)] WHERE column ? [(SELECT ...)] 1. 단일 행 서브 쿼리 서브쿼리가 한 개의 행을 리턴합니다. 반드시 단일 행 연산자(=, >, =, ( SELECT SAL FR..
ANSI JOIN은 오라클뿐만 아니라 모든 DB에서 사용할 수 있는 JOIN입니다. FROM 절에서 JOIN을 지정하고 조건은 WHERE이 아닌 ON으로 명시합니다. NATURAL JOIN과 USING 절에서는 별칭(Alias)을 사용할 수 없습니다. 1. CROSS JOIN SELECT table1.column, table2.column FROM table1 CROSS JOIN table2; 오라클의 CARTESIAN JOIN과 동일합니다. EMP 테이블의 사원 번호, 이름, 부서 이름을 CROSS JOIN해서 출력해봅시다. SELECT EMPNO, ENAME, DNAME FROM EMP CROSS JOIN DEPT; 부서 이름마다 사원의 정보가 전부 출력되는 CARTESIAN JOIN과 같은 모습을 ..
검색하고자 하는 컬럼이 두 개 이상 테이블에 존재할 때 사용할 수 있는 기술이 있습니다. JOIN에 대해서 알아봅시다. 기본적인 오라클의 JOIN의 종류는 아래와 같습니다. 1. Cartesian Product 2. Equi Join 3. Non-Equi Join 4. Outer Join 5. Self Join 일반적으로 기본키 or 외래키를 사용하여 두 테이블을 합칩니다. 한 컬럼을 기준으로 JOIN 할 때 모호성이 발생하므로 테이블명이나 별칭을 컬럼 앞에 씁니다. -- 모호성 해결 SELECT ENAME, EMP.DEPTNO, DNAME, LOC -- DEPTNO는 DEPT 테이블에도 존재하므로 -- EMP의 DEPTNO를 출력하겠다고 명시 FROM EMP, DEPT; 1. CARTESIAN PROD..
어떤 컬럼을 기준으로 그룹으로 묶어서 데이터 값들을 출력할 수 있도록 도와주는 GROUP BY 절에 대해서 알아보겠습니다. 1. GROUP BY SELECT [column], group_function(column) FROM table [WHERE 조건식] [GROUP BY column] [ORDER BY column] 전체 테이블이 아닌 특정 그룹으로 묶을 때 GROUP BY 함수를 통해 출력할 수 있습니다. 그룹 함수는 GROUP BY 없이 일반 컬럼과 함께 출력할 수 없습니다. 그룹으로 묶을 컬럼은 반드시 SELECT 절에도 존재해야합니다! 부서 번호를 그룹화하여 각 그룹의 SAL 평균을 출력해볼까요? SELECT DEPTNO, AVG(SAL) FROM EMP GROUP BY DEPTNO; 부서 번..