Database 43

[SQL]DDL(1) - CREATE, INSERT, 제약조건

DDL(DATA DEFINITION LANGUAGE) : 데이터 정의 언어로써, Oracle에서 제공하는 객체(Object)를 새롭게 만들고(Create), 구조를 변경(Alter)하고, 삭제(Delete)하는 명령문이다. 즉, 구조 자체를 정의하는 언어로, DB관리자(설계자)가 사용한다. - Oracle에서의 객체(DB를 이루는 구조물) → 테이블(TABLE), 사용자(USER), 함수(FUNCTION), 뷰(VIEW) 등 CREATE TABLE : CREATE TABLE 테이블명( 컬럼명 자료형, 컬럼명 자료형, ... ); (1) 테이블(TABLE) : 행(ROW)과 열(COLUMN)로 구성되는 가장 기본적인 데이터베이스 객체 중 하나. 모든 데이터는 테이블을 통해 저장된다. → 데이터를 조작하려면..

Database/Oracle 2022.03.25

[SQL]DML(SELECT문)(10) - INSERT, UPDATE, DELETE

INSERT INTO : 테이블에 새로운 행을 추가한다. (1) INSERT INTO 테이블명 VALUES(값1, 값2, 값3, ...) : 해당 테이블에서 모든 컬럼에 추가하고자 하는 값을 제시하여 한 행을 INSERT할 때 사용한다. - 컬럼의 순서와 자료형의 개수를 맞춰서 VALUES에 값을 나열해야 한다. - 만약, 값을 부족하게 제시할 경우 'NOT ENOUGH VALUE'라고 오류가 뜨고, 값을 더 제시할 경우 'TOO MANY VALUES'라고 오류가 뜬다. - EMPLOYEE 테이블에 정보를 추가하기 -- 순서: 사번, 이름, 주민번호, 이메일, 폰번호 -- , 부서코드, 직급코드, 급여등급, 보너스, 사수 사번, 입사일, 퇴사일, 퇴사 여부 INSERT INTO EMPLOYEE VALUE..

Database/Oracle 2022.03.25

[SQL]DML(SELECT문)(9) - 서브쿼리(Subquery)

서브쿼리(SUBQUERY) : 메인 SQL문을 위해 보조 역할을 하는 SELECT문으로, 하나의 주된 SQL(SELECT, CREATE, INSERT, UPDATE) 안에 포함된 또 하나의 SELECT문을 말한다. - 전체 직원의 평균 급여보다 많은 급여를 받는 직원들의 직번과 이름을 조회하기 1) 전체 직원의 평균 급여를 조회하기 SELECT FLOOR(AVG(SALARY)) FROM EMPLOYEE; -- 전체 직원의 평균 급여 = 3047662 2) 전체 직원의 평균 급여보다 많은 급여를 받는 직원들의 직번과 이름을 조회하기 SELECT EMP_NO, EMP_NAME FROM EMPLOYEE WHERE SALARY > 3047662; 전체 직원의 평균 급여 수치를 직접적으로 대입을 한다. 3) 1)..

Database/Oracle 2022.03.24

[SQL]DML(SELECT문)(8) - JOIN

JOIN : 둘 이상의 테이블에서 데이터를 같이 조회할 때 사용한다. - SELECT문을 이용한다. - 조회 결과는 하나의 결과물로 반환된다. - JOIN을 사용하는 이유 : 관계형 데이터베이스에서 최소한의 데이터로 각각의 테이블에 데이터를 보관하기 위해서이다. 이때, 테이블 간의 연결고리(컬럼)를 매칭시켜서 조회하여야 한다. ◎ 문법상 분류 - 오라클 전용 구문 / ANSI(미국 국립 표준 협회) 구문 ◎ 개념상 분류 오라클 전용 구문 ANSI 구문 등가조인(EQUAL JOIN) 내부조인(INNER JOIN) → JOIN USING/ON 포괄조인 (LEFT OUTER JOIN) (RIGHT OUTER JOIN) 외부조인(OUTER JOIN) → JOIN USING 왼쪽 외부조인(LEFT OUTER JO..

Database/Oracle 2022.03.22

[SQL]DML(SELECT문)(7) - GROUP BY, HAVING, SET OPERATOR

GROUP BY : 그룹을 묶어줄 기준을 제시할 수 있는 구문이다. → 그룹 함수와 함께 사용한다. - GROUP BY 묶어줄 기준 컬럼 - 제시된 기준별로 그룹을 묶을 수 있다. - 여러 개의 값들을 하나의 그룹으로 묶어서 처리할 목적으로 사용한다. - 각 부서별로 총 급여 합계 조회하기 SELECT DEPT_CODE, SUM(SALARY) FROM EMPLOYEE GROUP BY DEPT_CODE; 우선 SELECT절에 부서코드와 SALARY(급여) 컬럼을 넣은 SUM 함수를 작성한다. 그리고 DEPT_CODE 컬럼과 SALARY 컬럼은 EMPLOYEE 테이블에 있으므로 FROM절에 EMPLOYEE를 작성한다. 마지막으로 급여 합계를 각 "부서"별로 조회해야 하므로 부서코드 기준으로 GROUP BY를..

Database/Oracle 2022.03.22

[SQL]DML(SELECT문)(6) - 그룹 함수

그룹 함수 : 데이터들의 합(SUM), 평균(AVG) - n개의 값들을 읽어 하나의 값을 반환한다. → 하나의 그룹별로 함수 실행 결과를 반환한다. (1) 합(SUM) : SUM(숫자 타입 컬럼명) - 해당 컬럼값들의 총 합계를 반환한다. - 부서코드가 'D6'인 직원들의 총 급여 합계를 반환하기 SELECT SUM(SALARY) FROM EMPLOYEE WHERE DEPT_CODE = 'D6'; ⇒ 총 급여 = 10100000 급여의 합계이므로 SALARY 컬럼을 SUM 함수에 넣는다. 부서코드는 DEPT_CODE이며, D6은 문자열이므로 작은따옴표로 감싸서 DEPT_CODE와 같음을 작성한다. (2) 평균(AVG) : AVG(숫자 타입 컬럼명) - 해당 컬럼값들의 평균을 반환한다. - 전 직원의 평균..

Database/Oracle 2022.03.22

[SQL]DML(SELECT문)(5) - 형변환 함수, NULL 처리 함수

형변환 함수 (1) TO_CHAR : TO_CHAR(NUMBER/DATE, FORMAT) - 결과값을 포맷에 맞춰 숫자 또는 날짜 타입을 문자 타입으로 반환한다. - 숫자를 문자열로 변환하기 -- 0인 포맷의 빈칸에 지정해준 형식 0으로 채운다. SELECT TO_CHAR(1234, '0000000') FROM DUAL; -- '0001234' -- 9인 포맷의 빈칸에 공백으로 채운다. SELECT TO_CHAR(1234, '9999999') FROM DUAL; -- ' 1234' -- 현재 설정한 나라의 화폐 단위 표시 SELECT TO_CHAR(1234, 'L0000000') FROM DUAL; -- '₩0001234' SELECT TO_CHAR(1234, 'L9999999') FROM DUAL; -..

Database/Oracle 2022.03.21

[SQL]DML(SELECT문)(4) - 날짜 관련 함수

날짜와 관련된 함수 : DATE 타입 - 연도, 월, 일, 시, 분, 초를 모두 포함한 자료형 (1) SYSDATE : 현재 시스템의 날짜를 반환한다. SELECT SYSDATE FROM DUAL; -- 현재 시스템 날짜 출력 22/03/21 (2) MONTHS_BETWEEN : MONTHS_BETWEEN(DATE1, DATE2) - 두 날짜 사이의 개월 수를 반환한다. - 결과값은 숫자(NUMBER)로 반환된다. - DATE2가 먼 미래의 날짜라면 음수로 반환된다. - 직원들의 근무일수와 근무월수 반환하기 SELECT EMP_NAME , FLOOR(SYSDATE - HIRE_DATE) || '일' "근무일수" , FLOOR(MONTHS_BETWEEN(SYSDATE, HIRE_DATE)) || '월' "..

Database/Oracle 2022.03.21

[SQL]DML(SELECT문)(3) - 숫자 관련 함수

숫자와 관련된 함수  : 결과값은 숫자(NUMBER)로 반환된다.    (1) ABS   : ABS(절대값을 구할 숫자) - 절대값을 구한다.SELECT ABS(-10)FROM DUAL; -- 절대값 10SELECT ABS(-10.5)FROM DUAL; -- 절대값 10.5     (2) MOD   : MOD(숫자, 나눌값) - 두 수를 나눈 나머지값을 반환한다.SELECT MOD(10, 3)FROM DUAL; -- 나머지 1SELECT MOD(-10, 3)FROM DUAL; -- 나머지 -1SELECT MOD(10.5, 3)FROM DUAL; -- 나머지 1.5    (3) ROUND   : ROUND(반올림할 수, 반올림할 위치) - 반올림을 처리한다.  - 반올림할 위치: 소수점 기준으로..

Database/Oracle 2022.03.21

[SQL]DML(SELECT문)(2) - 함수(Function), 문자열 관련 함수

데이터베이스에서 함수란? : Java로 생각했을 때 메소드와 같은 존재이다. 함수는 매개변수로 전달된 값들을 읽어서 계산한 결과를 반환한다. - 단일행 함수: 8개의 값을 읽어서 8개의 결과를 리턴한다. (매 행마다 함수를 실행한 후 결과를 반환한다.) - 그룹 함수: 8개의 값을 읽어서 1개의 결과를 리턴한다. (하나의 그룹별로 함수를 실행한 후 결과를 반환한다.) ※ 단일행 함수와 그룹 함수는 같이 사용할 수 없다. 왜냐하면 결과 행의 개수가 다르기 때문이다. - 단일행 함수 - 문자열과 관련된 함수 - 한글은 한 글자 당 3byte로 취급한다. 예) '새'(3byte), 'ㅅ'(3byte), 'ㅐ'(3byte) - 영어와 숫자, 특수문자는 한 글자 당 1byte로 취급한다. (1) LENGTH / ..

Database/Oracle 2022.03.20