본문 바로가기

DATABASE

(12)
DCL(데이터 제어 언어) DCL : DATA CONTROL LANGUAGE 데이터 제어 언어 계정에게 시스템 권한 또는 객체접근권한을 부여(GRANT) 하거나 회수(REVOKE)하는 구문 - 시스템권한 : DB에 접근하는 권한, 객체들을 생성할 수 있는 권한 - 객체접근 권한 : 특정 객체들을 조작할 수 있는 권한 시스템 권한 종류 CREATE SESSION : 접속할 수 있는 권한 CREATE TABLE : 테이블을 생성할 수 있는 권한 CREATE VIEW : 뷰를 생성할 수 있는 권한 CREATE SEQUNCE : 시퀀스를 생성할 수 있는 권한 ... : 일부는 커넥트 안에 포함돼어있음!! (없는것도 있다) 1. SAMPLE / SAMPLE 계정 생성 CREATE USER SAMPLE IDENTIFIED BY SAMPLE;..
DDL(ALTER,DROP) DDL(DATA DEFINITION LANGUAGE) : 데이터 정의 언어 객체들을 생성(CREATE) , 변경(ALTER), 삭제(DROP) 하는 구문 객체를 변경하는 구문 [표현식] ALTER TABLE 테이블명 변경할내용; 변경할내용 1) 컬럼 추가/수정/삭제 2) 제약조건 추가/삭제 -> 수정불가 (수정하고자 한다면 삭제 후 새로이 추가) 3) 컬럼명/제약조건명/테이블명 변경 1) 컬럼 추가/수정/삭제 1_1) 컬럼추가(ADD) : ADD 컬럼명 자료형 [DEFAULT 기본값] 제약조건 DEPT_COPY에 CNAME 이라는 컬럼을 추가 ALTER TABLE DEPT_COPY ADD CNAME VARCHAR2(20); --> 새로운 컬럼이 만들어지고 기본적으로 NULL로 채워짐!!
서브쿼리 (SUBQUERY) 서브쿼리(SUBQUERY) 하나의 SQL문 안에 포함된 또다른 SELLECT문 메인 SQL문을 위해 보조 역할을 하는 쿼리문 간단한 서브쿼리 예시 1. 1) 노옹철 사원의 부서코드 조회하기 SELECT DEPT_CODE FROM EMPLOYEE WHERE EMP_NAME = '노옹철'; 2) 부서코드가 D9인 사원들 조회 SELECT EMP_NAME FROM DEPLOYEE WHERE DEPT_CODE ='D9'; 위의 1,2번을 하나의 쿼리문으로 !! SELECT EMP_NAME FROM EMPLOYEE WHERE DEPT_CODE = (SELECT DEPT_CODE) FROM EMPLOYEE WHERE EMP_NAME = '노옹철'); 간단한 서브쿼리 예시2 전 직원의 평균 급여보다 더 많은 급여를 ..
시험대비 쿼리공부하기 QUIZ 1. 보너스는 안받지만 부서배치는 된 사원 조회 SELECT * FROM EMPLOYEE WHERE BONUS = NULL AND DEPT_CODE != NULL; 실행되지 않음 NULL 값에 대해 정상적으로 비교 처리가 되지 않음 문제점? NULL 값을 비교할 때에는 단순한 일반 비교연산자를 통해 비교할 수 없다!! 해결방법? IS NULL / IS NOT NULL 연산자를 이용해서 비교해야함 조치한 SQL문 SELECT * FROM EMPLOYEE WHERE BONUS IS NULL AND DEPT_CODE IS NOT NULL; QUZI 2. 검색하고자 하는 내용 JOB_CODE가 J7이거나 J6이면서 SALARY 값이 200만원 이상이고 BONUS가 있고, 여자이며 이메일 주소는 _앞에 ..
JOIN JOIN 두 개 이상의 테이블에서 데이터를 조회하고자 할 때 사용되는 구문 조회 결과는 하나의 결과물(RESULT SET)로 나옴 관계형 데이터베이스는 최소한의 데이터로 각각의 테이블에 데이터를 담고 있음 -- 어떤 사원이 어떤 부서에 속해 있는지 궁금함..! 코드 말고... 부서명으로.. => 관계형 데이터베이스에서 SQL문을 이용한 테이블 간에 "관계"를 맺는 방법 (무작정 다 조회를 해 오는 게 아니라 각 테이블 간 연결고리로써의 데이터를 매칭해서 조회해야 함!!) JOIN은 크게 "오라클 전용 구문"과 "ANSI 구문 (ANSI == 미국국립표준협회)" => 아스키코드표 만드는 곳!! SELECT EMP_NAME, DEPT_CODE FROM EMPLOYEE; -- DEPT_CODE SELECT *..
GROUP BY & HAVING & 집합연산자 GROUP BY절 그룹기준을 제시할 수 있는 구문 (해당 그룹기준별로 여러 그룹을 묶을 수 있음) 여러개의 값들을 하나의 그룹을 묶어서 처리할 목적으로 사용 SELECT SUM(SALARY) FROM EMPLOYEE; -- 전체 사원을 하나의 그룹으로 묶어서 총합을 구한 결과 -- 각 부서별 총 급여합 SELECT DEPT_CODE, SUM(SALARY) FROM EMPLOYEE GROUP BY DEPT_CODE; -- 각 부서별 사원수 SELECT DEPT_CODE, COUNT(*) FROM EMPLOYEE GROUP BY DEPT_CODE; -- 실행순서 SELECT DEPT_CODE, SUM(SALARY) -- 3 FROM EMPLOYEE -- 1 GROUP BY DEPT_CODE -- 2 ORDE..
실습문제 1. EMP테이블에서 COMM 의 값이 NULL이 아닌 정보 조회 SELECT * FROM EMP WHERE COMM IS NOT NULL; 2. EMP테이블에서 커미션을 받지 못하는 직원 조회 SELECT ENAME FROM EMP WHERE COMM IS NULL; 3. EMP테이블에서 관리자가 없는 직원 정보 조회 SELECT * FROM EMP WHERE MGR IS NULL; 4. EMP테이블에서 급여를 많이 받는 직원 순으로 조회 SELECT * FROM EMP ORDER BY SAL DESC; 5. EMP테이블에서 급여가 같을 경우 커미션을 내림차순 정렬 조회 SELECT * FROM EMP ORDER BY SAL DESC, COMM DESC; 6. EMP테이블에서 사원번호, 사원명,직급, ..
SELECTION 실습문제 1. JOB 테이블의 모든 정보 조회 SELECT * FROM JOB; 2. JOB 테이블의 직급 이름 조회 SELECT JOB_NAME FROM JOB; 3. DEPARTMENT 테이블의 모든 정보 조회 SELECT * FROM DEPARTMENT; 4. EMPLOYEE테이블의 직원명, 이메일, 전화번호, 고용일 조회 SELECT EMP_NAME, EMAIL, PHONE, HIRE_DATE FROM EMPLOYEE; 5. EMPLOYEE테이블의 고용일, 사원 이름, 월급 조회 SELECT HIRE_DATE, EMP_NAME, SALARY FROM EMPLOYEE; 6. EMPLOYEE테이블에서 이름, 연봉, 총수령액(보너스포함), 실수령액(총수령액 - (연봉*세금 3%)) 조회 SELECT EMP_NA..