본문 바로가기

Database/Oracle Work

(9)
update FK가 연결되고 cascade설정이 되지 않은 테이블의 내용을 수정하려 할 때 에러가 난다. 아래 방법을 사용하면 됨 --update문 update customersTbl set custId = 'kkkk1111' where custId = 'kkkkkkkk' --먼저 세일즈테이블의 FK를 날린다 alter table salesTbl drop constraint FK__salesTbl__custId__3B75D760 --constraint를 새로 만든다(cascade로 동일하게 변동되게 함) alter table salesTbl add constraint FK_salesTbl_custId foreign key (custId) references customersTbl (custId) on update c..
제품, 고객, 판매 연습을 위한 테이블 생성 data 연습 CREATE DATABASE OnlineShopDB; go CREATE TABLE customersTbl ( custIdvarchar(8) primary key, custNamenvarchar(10) not null, birthDatedate not null, phonevarchar(11) not null, addrnvarchar(5) not null, regDatedate not null, gradechar(1) default null ); CREATE TABLE goodsTbl ( goodsIdnvarchar(12) primary key, goodsNamenvarchar(20) not null, suppliernvarchar(20) not null ); CREATE TABLE sales..
PL// work 07 /* 예제1) EVEN_ODD( ID:NUMBER(4) GUBUN:VARCHAR2(10) ) 테이블을 작성하고 START숫자와 END숫자를 입력 받아 그 사이의 숫자를 ID에 저장하고 ID의 숫자가 짝수이면 GUBUN에 “짝수”를 홀수이면 GUBUN에 “홀수”라고 입력하는 SCRIPT를 WHILE문으로 작성하여라. 예) START : 1, END : 10 입력 -> 10개의 ROW가 된다. */ CREATE TABLE EVEN_ODD( ID NUMBER(4), GUBUN VARCHAR2(10) ); SET SERVEROUTPUT ON ACCEPT p_start PROMPT 'start 숫자' ACCEPT p_end PROMPT 'end 숫자' DECLARE v_start NUMBER(4) := &p_st..
입력받아 EMP테이블에 자료를 등록, 시퀀스, 조건문 --이름, 급여, 부서번호를 입력받아 EMP테이블에 자료를 등록하는 SCRIPT를 작성하라. --단 10번 부서일 경우, 입력한 급여의 20%를 추가하고 --초기값이 9000부터 9999까지 1씩 증가하는 ESQUENCE(EMP_EMPNO_SEQ)작성하여 --사용하고 아래의 표를 참고하여라. --이름 : 홍길동 --급여 : 2000 --부서번호 : 10 CREATE SEQUENCE EMP_EMPNO_SEQ INCREMENT BY 1 START WITH 9000 MAXVALUE 9999; ACCEPT p_name PROMPT '이 름:' ACCEPT p_sal PROMPT '급 여:' ACCEPT p_deptno PROMPT '부서번호:' DECLARE v_name employees.last_name%TY..
work 05 -- 문제1) EMPLOYEES 테이블에서 부서별로 인원수,평균 급여,급여의 합,최소 급여,최대 급여를 포함하는 -- EMP_DEPTNO 테이블을 생성하라. CREATE TABLE emp_deptno(deptno, e_count, e_avg, e_sum, e_min, e_max) AS SELECT department_id, COUNT(*), ROUND(AVG(salary), 1), SUM(salary), MIN(salary), MAX(salary) FROM employees GROUP BY department_id; DROP TABLE emp_deptno; SELECT * FROM emp_deptno; CREATE TABLE emp_deptno(deptno, e_count, e_avg, e_sum, e_..
work 04 -- 문제1) EMPLOYEES 테이블에서 (Kochhar의 급여)보다 많은 사원의 정보를 -- 사원번호,이름,담당업무,급여를 출력하라. SELECT employee_id, first_name, job_id, salary FROM employees WHERE salary > (SELECT salary FROM employees WHERE last_name = 'Kochhar'); -- 문제2) EMPLOYEES 테이블에서 (급여의 평균)보다 적은 사원의 정보를 -- 사원번호,이름,담당업무,급여,부서번호를 출력하여라. SELECT employee_id, first_name, job_id, salary, department_id FROM employees WHERE salary < (SELECT AVG(sa..
work 03 -- 문제1) EMPLOYEES 테이블과 DEPARTMENTS 테이블을 -- Cartesian Product(모든 가능한 행들의 Join)하여 Cross Join -- 사원번호,이름,업무,부서번호,부서명,근무지를 출력하여라. SELECT e.employee_id, e.first_name, e.department_id, d.department_id, d.department_name, d.location_id FROM employees e, departments d; SELECT e.employee_id, e.first_name, e.department_id, d.department_id, d.department_name, d.location_id FROM employees e CROSS JOIN depar..
work 02 -- 문제1) EMPLOYEES 테이블에서 King의 정보를 소문자로 검색하고 -- 사원번호, 성명, 담당업무(소문자로),부서번호를 출력하라. SELECT employee_id, last_name, lower(job_id), job_id, department_id FROM employees WHERE LOWER(last_name) = 'king'; -- 문제2) EMPLOYEES 테이블에서 King의 정보를 대문자로 검색하고 -- 사원번호, 성명, 담당업무(대문자로),부서번호를 출력하라. SELECT employee_id, last_name, UPPER(job_id), job_id, department_id FROM employees WHERE upper(last_name) = 'KING'; -- 문제3..