일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- JOIN
- n x 2 타일링 2
- 동적계획법
- 데이터베이스
- 자바
- Eclipse
- 문자열
- 백준
- Dynamic Programming
- 알고리즘
- db
- algoritm
- 그대로 출력하기
- Java
- 소숫점처리
- 변수
- DP
- ANSI JOIN
- 입출력
- 2156
- 오라클
- 10951
- select
- Algorithm
- oracle
- 반복문
- Database
- 데이터길이
- darkest dark
- SQL
- Today
- Total
목록SQL (38)
Cracking Code
테이블에 저장된 행들을 삭제하는 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; 부서 번..
앞서 배운 함수들 처럼 각 행마다 처리하는 함수들을 단일 행 함수라고 합니다. 그와 달리 여러 행 또는 테이블 전체에 대해 하나의 결과로 출력하는 것을 그룹 함수라고 합니다. 그룹 함수에 대해 알아보겠습니다. 1. SUM SUM([DISTINCT | ALL] column) SUM 함수는 컬럼의 모든 행을 합쳐서 리턴합니다. 옵션은 중복되는 값을 한 번만 적용하는 DISTINCT, 모든 값을 적용하는 ALL이 있습니다. 옵션을 입력하지 않을 시 기본으로 ALL 옵션이 적용됩니다. 사원 테이블의 모든 사원의 급여를 SUM함수의 각각 옵션을 적용시켜 급여합을 출력해봅시다. SELECT SUM(DISTINCT SAL), SUM(ALL SAL), SUM(SAL) FROM EMP; DISTINCT 옵션을 적용한 컬..