이름 : 김범수 점수 :
다음 SELECT 문장에서 Column Header로 출력되는 것은? (3)
SELECT employee_id, first_name||last_name "Employee Name"
FROM employees;
① employee_id, employee name
② Employee_id, Employee Name
③ EMPLOYEE_ID, Employee Name
④ EMPLOYEE_ID, EMPLOYEE NAME
다음 QUERY의 결과는 몇개의 column인가? (1)
SELECT 'a'||'b'||'C' "Result" FROM dual;
① 1
② 3
중복 행을 제거 할 때 사용하는 키워드는? (2)
① ALL
② DISTINCT
③ NVL
④ COALESCE
SELECT문의 기능이 아닌 것은? (4)
① 프로젝션(PROJECTION)
② 선택(SELECTION)
③ 조인(JOIN)
④ 엔티티(ENTITY)
SQL문 작성시 틀린 것은? (3)
① SQL문은 대소문자를 구분하지 않습니다. 하지만 성능을 생각하면 대소문자를 구분해서 작성하자
② 절은 일반적으로 서로 다른줄에 씁니다.
③ 키워드는 약어로 사용할 수 있습니다.
④ 들여쓰기를 사용하면 SQL문을 좀더 읽기 쉽게 작성할 수 있습니다.
① employee_id
② department_id
③ dept_id
④ 2
⑤ "Dept_id"
⑥ 3
① length : 문자 길이를 반환하는 함수
② upper : 대문자로 변환하는 함수
③ replace : 문자를 추출하는 함수
④ instr : 문자의 위치값을 반환하는 함수
다음 문장을 실행한 결과로 맞는 것은? (2)
SELECT ROUND(45.926,2)
FROM DUAL;
① 45.92
② 45.93
③ 45
④ 46
다음 중 어떤 함수가 IF-THEN-ELSE문장과 유사한가? (2)
① SQRT
② DECODE
③ NEW_LINE
④ NVL
SELECT last_name, (salary + commission_pct ) * 12, NVL(hiredate, '2001-01-01')
FROM employees;
위의 문장을 실행할 때 last_name = 'King', salary = 1000, commission_pct = NULL, hiredate = NULL 인 경우 결과는? (3)
① King, 1000,
② King, 12000, 2001-01-01
③ King, , 2001-01-01
④ King, ,
다음 SQL 명령문에서 ERROR가 발생하는 행의 번호는? (2)
① SELECT e.employee_id,
② employees.last_name,
③ e.department_id,
④ d.department_id
⑤ FROM employees e, departments d
⑥ WHERE e.department_id = d.department_id ;
다음 SQL 명령문에서 ERROR가 발생하는 행의 번호는? (4)
① SELECT department_id, sum(salary) "Salary"
② FROM employees
③ GROUP BY department_id
④ WHERE sum(salary) > 10000;
모든 DATATYPE에 가능한 GROUP 함수들은 (세 가지)? (2,3,4)
① AVG
② MIN
③ MAX
④ COUNT
⑤ STDDEV
⑥ VARIANCE
⑦ SUM
auto commit이 발생하는 경우는? (다섯개) (3,4,6,7,8)
① select from employees ;
② insert into test(id,name) values (1,'james');
③ create table x as select from employees;
④ SQL*PLUS의 종료 시(exit)
⑤ delete from emp;
⑥ revoke select on test_tbl from hr;
⑦ grant select on test_tbl to hr;
⑧ alter table test_tbl modify last_name not null;
날짜 계산의 결과가 틀린 것은? (4)
① DATE + NUMBER = DATE
② DATE - NUMBER = DATE
③ DATE - DATE = NUMBER
④ DATE + DATE = DATE
다음 문장을 실행하는 경우 서브쿼리내에 NULL값이 포함되어 있다면 메인쿼리의 실행결과는 어떻게 되겠는가? (1)
SELECT last_name
FROM employees
WHERE emp.employee_id NOT IN
(SELECT manager_id
FROM employees);
① no rows selected
② 정상적 수행
서브쿼리의 결과 집합에 행이 있는지 여부를 검사하여 행이 있으면 TRUE를 반환하는 연산자는? (2)
① NOT IN
② EXISTS
③ NOT EXISTS
④ ALL
두 날짜 간의 달수를 반환하는 함수는? (1)
① MONTHS_BETWEEN
② ADD_MONTHS
③ NEXT_DAY
④ LAST_DAY
ALTER TABLE emp MODIFY (title VARCHAR2(20));
① emp table에 title column을 추가한다.
② emp table에 title column의 TYPE과 SIZE를 변경한다.
③ emp table에 title column의 제약조건을 삭제한다.
④ emp table에 title column의 제약조건을 추가한다
① 1, 3, 5, 7, 9번
② 1, 3, 5, 7번
③ 3, 5, 7, 9번
④ 1, 7, 9번
쿼리 문장중 오류 발생하지 않은 SQL문은? (3)
① SELECT department_id, avg(max(salary) FROM hr.employees GROUP BY department_id;
② SELECT department_id, job_id, sum(salary) FROM hr.employees GROUP BY department_id;
③ SELECT department_id, job_id, sum(salary) FROM hr.employees GROUP BY department_id, job_id;
④ SELECT department_id, job_id, sum(salary) FROM hr.employees GROUP BY 1,2;
서브쿼리 설명으로 틀린것은? (4)
① subquery는 괄호로 묶습니다.
② 가독성을 위해 비교 조건의 오른쪽에 subquery를 배치합니다. 그러나 subquery는 비교 연산자의 양쪽 어디에나 사용할 수 있습니다.
③ 단일 행 subquery는 서브쿼리에서 한 행만 반환하는 query입니다.
④ 다중 행 subquery는 단일행 연산자를 사용합니다.
집합연산자 설명으로 틀린것은? (2)
① 컬럼의 갯수 타입이 일치해야 한다.
② 모든 집합연산자는 중복을 제거합니다.
③ ORDER BY 절은 명령문의 맨 끝에만 올 수 있습니다
④ UNION ALL의 경우를 제외하고 출력은 기본적으로 오름차순으로 정렬됩니다.
ANSI표준 조인 설명으로 틀린것은? (4)
① NATURAL JOIN 절은 이름이 같은 두 테이블의 모든 열을 기반으로 합니다.
② USING 절을 사용하면 Equijoin에 사용될 열만 지정할 수 있습니다.
③ ON절을 사용하여 조인 조건을 지정한다.
④ WHERE 절을 사용하여 조인 조건을 지정한다.
⑤ NATURAL JOIN, USING, 또는 ON 절을 사용하여 테이블을 조인하면 INNER JOIN이 생성됩니다
⑥ 일치하지 않는 행을 반환하려면 OUTER JOIN을 사용하면 됩니다.
Cartesian Product 설명으로 틀린것은? (4)
① 조인 조건이 생략된 경우
② 조인 조건이 잘못된 경우
③ 첫번째 테이블의 모든 행이 두번째 테이블의 모든 행에 조인되는 경우
④ 최종 결과 건수는 첫번째 테이블 수와 두번째 테이블의 수를 더한 값이 나온다.
Transaction은 첫번째 DML 문을 만나면 시작되고 다음 상황 중 하나가 발생하면 종료됩니다. 설명으로 틀린것은? (4)
① COMMIT 또는 ROLLBACK 문 실행
② DDL문 실행
③ DCL문 실행
④ SELECT문 실행
테이블이름, 컬럼이름 생성시 틀린것은? (4)
① 문자로 시작해야 합니다.
② 길이는 1?30자 사이여야 합니다.
③ A-Z, a-z, 0-9, _, $, #만 포함할 수 있습니다.
④ 동일한 유저가 소유한 다른 객체의 이름과 중복될수 있다.
제약조건 설명으로 틀린것은? (2)
① NOT NULL 제약 조건은 열이 null 값을 포함하지 않도록 보장합니다
② UNIQUE 제약 조건은 중복값, NULL값 허용할 수 없다.
③ PRIMARY KEY 제약 조건은 중복값, NULL값 허용할 수 없다.
④ FOREIGN KEY 제약 조건 동일한 테이블이나 다른 테이블의 Primary key 또는 Unique key와의 관계를 설정합니다
⑤ CHECK 제약 조건은 각 행이 충족해야 하는 조건을 정의합니다.
ALTER TABLE문을 사용하여 수행할 수 없는 것은? (4)
① 컬럼 추가, 삭제
② 컬럼의 타입, 사이즈를 변경
③ 컬럼 이름 바꾸기
④ 삭제된 테이블을 복원
단순 뷰의 설명으로 틀린것은? (4)
① 하나의 테이블에서만 데이터를 가져옵니다.
② 함수나 데이터 그룹을 포함하지 않습니다.
③ 뷰를 통해 DML 작업을 수행할 수 있습니다.
④ 조인 문장이 있다.
SEQUENCE 설명으로 틀린것은? (2)
① 자동 일련번호를 생성하는 객체
② SEQUENCE생성 후에 START WITH를 수정할 수 있다.
③ NEXTVAL Pseudocolumn(가상컬럼)은 사용 가능한 다음 시퀀스 값을 반환합니다
④ CURRVAL Pseudocolumn(가상컬럼)은 현재 시퀀스 값을 반환합니다.
열 alias 설명으로 틀린것은? (1)
① 공백이나 특수 문자를 포함하거나 대소문자를 구분하는 경우 작은 따옴표('')를 사용해야 한다.
② 열 머리글의 이름을 바꿉니다.
③ 열 이름 바로 뒤에 나옵니다. 열 이름과 alias 사이에 선택 사항인 AS 키워드가 올 수도 있습니다.
④ 공백이나 특수 문자를 포함하거나 대소문자를 구분하는 경우 큰 따옴표("")를 사용해야 한다.
연결 연산자 설명으로 틀린것은? (4)
① 열이나 문자열을 다른 열에 연결합니다.
② 두 개의 세로선(||)으로 나타냅니다.
③ 결과 열로 문자식을 생성합니다.
④ 결과 열로 다양한 타입으로 생성합니다.
WHERE절을 작성시 주의 사항이 아닌것은? (1)
① 문자열 및 날짜 값은 큰 따옴표로 묶습니다.
② 문자 값은 대소문자를 구분하고 날짜 값은 형식을 구분합니다.
③ 날짜 표시 형식 현재 접속하고 있는 지역과 언어에 종속되어 있다.
④ 문자열 및 날짜 값은 작은 따옴표로 묶습니다.
LIKE 연산자 설명으로 틀린것은? (4)
① 모든 타입의 컬럼에 사용할수는 있지만 성능상에 관점으로는 꼭 문자 타입의 컬럼에 사용하자.
② LIKE 연산자를 사용하여 유효한 검색 문자열 값의 대체 문자 검색을 수행합니다.
③ 대체 문자 %는 0개 이상의 문자를 나타냅니다.
④ 대체 문자 _는 0개 이상의 문자를 나타냅니다.
AND 진료표 표현식에서 틀린것은? (3)
① TRUE AND TRUE = TRUE
② TRUE AND FALSE = FALSE
③ TRUE AND NULL = FALSE
④ FALSE AND NULL = FALSE
OR 진료표 표현식에서 틀린것은? (4)
① TRUE OR TRUE = TRUE
② TRUE OR FALSE = TRUE
③ TRUE OR NULL = TRUE
④ FALSE OR NULL = FALSE
WHERE 조건절에 NOT 연산자 사용시 틀린문장은? (1)
① WHERE commission_pct NOT IS NULL
② WHERE salary NOT BETWEEN 10000 AND 15000
③ WHERE last_name NOT LIKE '%A%'
④ WHERE job_id NOT IN ('AC_ACCOUNT', 'AD_VP')
ORDER BY절 설명으로 틀린것은? (4)
① ORDER BY 절을 사용하여 검색된 행을 정렬합니다.
② 기본값으로 오름차순(ASC) 정렬합니다. 내림차순 정렬할때는 DESC를 사용합니다.
③ ORDER BY 절에는 컬럼이름, 표현식, 열별칭, 위치표기법을 사용할 수 있습니다.
④ ORDER BY 절은 SELECT 문의 어느 위치에 와도 상관없습니다.
단일 행 함수의 기능 설명으로 틀린것은? (4)
① query에서 반환되는 각 행에서 실행합니다.
② 행당 하나의 결과 반환합니다.
③ 참조되는 유형이 아닌 다른 유형의 데이터 값을 반환할 수 있습니다.
④ WHERE절에만 사용해야 하며 중첩할 수 없습니다.
날짜 함수 설명으로 틀린것은? (1)
① LAST_DAY 날짜에 해당하는 날짜가 있는 월의 첫 날짜를 리턴하는 함수
② MONTHS_BETWEEN 두 날짜 간의 달 수를 계산하는 함수
③ ADD_MONTHS 날짜에 달을 더하는 함수
④ NEXT_DAY 날짜 다음에 오는 지정된 요일의 날짜를 리턴하는 함수
아래 화면의 결과 처럼 나오는 쿼리문장은? (1)
| Today |
|---|
| 2024-07-01 10:10:23.36623 오전 |
① SELECT TO_CHAR(SYSDATE,'YYYY-MM-DD HH24:MI:SS.SSSSS AM') "Today" FROM dual;
② SELECT TO_CHAR(SYSDATE,'YYYY-MM-DD HH24:MI:SS AM') "Today" FROM dual;
③ SELECT TO_CHAR(SYSDATE,'YYYY-MM-DD HH24:MI:SS PM') "Today" FROM dual;
④ SELECT TO_CHAR(SYSDATE,'YYYY-MM-DD HH24:MI:SS.XXXXX AM') "Today" FROM dual;
| 급여 |
|---|
| ₩8,000.00 |
| ₩7,400.00 |
① SELECT TO_CHAR(salary, 'l99,999.00') 급여 FROM employees WHERE last_name = 'Smith';
② SELECT TO_CHAR(salary, 'l99G999D00') 급여 FROM employees WHERE last_name = 'Smith';
③ SELECT TO_CHAR(salary, 'l99D999G00') 급여 FROM employees WHERE last_name = 'Smith';
④ SELECT TO_CHAR(salary, 'l99d999g00') 급여 FROM employees WHERE last_name = 'Smith';
그룹함수 사용시 설명으로 틀린것은? (4)
① SELECT 절에 그룹 함수에 포함되어 있지 않은 개별 컬럼들은 하나도 빠짐 없이 GROUP BY절에 포함해야 한다.
② WHERE 절을 사용하면 행을 그룹으로 나누기 전에 행을 제외할 수 있습니다.
③ GROUP BY 절에는 열별칭, 위치표기법 사용할 수 없다.
④ WHERE 절을 사용해서 그룹함수의 결과를 제한할 수 있다.
유저 세션의 날짜 정보를 리턴하는 함수가 아닌것은? (1)
① SYSTIMESTAMP
② CURRENT_DATE
③ CURRENT_TIMESTAMP
④ LOCALTIMESTAMP
Correlated subquery 설명으로 틀린것은 ? (3)
① Correlated subquery는 행 단위 처리에 사용됩니다.
② Correlated subquery는 outer query의 모든 행에 대해 한 번씩 실행됩니다.
③ inner query가 먼저 실행되어 값을 찾습니다.
④ outer query가 먼저 실행되어 후보 행의 값을 사용하여 inner query를 실행합니다.
EXISTS 연산자 설명이 틀린것은? (1)
① subquery의 결과 집합에 행이 없는지 테스트합니다.
② subquery의 결과 집합에 행이 있는지 테스트합니다.
③ subquery 행 값이 있을 경우 검색이 inner query에서 계속 수행되지 않으며 조건은 TRUE로 플래그가 지정됩니다.
④ subquery 행 값이 없을 경우 조건은 FALSE로 플래그가 지정됩니다.
설명으로 틀린것은? (4)
① DML(Data Manipulation Language) : 데이터베이스에 데이터를 입력, 수정, 삭제하는 명령어 , insert, update, delete, merge
② TCL(Transaction Control Language) : 데이터의 일관성을 유지하면서 안정적으로 데이터를 복구시키기 위한 명령어, commit, rollback, savepoint
③ DDL(Data Definition Language) : 데이터베이스나 테이블등을 생성, 삭제하거나 그 구조를 변경하기 위한 명령어, create, alter, drop, rename, truncate, comment
④ DCL(Data Control Language) : 데이터베이스에 저장된 데이터를 조회하는 명령어, select
이름 : 김범수 점수 :
문제1. 입사한 월을 출력하고 월별 입사자 수를 1월부터 12월 까지 순서대로 출력하시오.
SELECT to_char(hire_date,'mm'), count(*) AS hire_cnt
FROM hr.employees
GROUP BY to_char(hire_date,'mm')
ORDER BY 1;
문제2. 근속연수가 가장 많은 10위까지 사원들의 employee_id, last_name, hire_date를 출력하세요.
단 연이은 순이를 구하세요)
WITH
temp_01 as(
SELECT employee_id, last_name, hire_date, dense_rank() over (order by hire_date asc) as hire_rank
FROM hr.employees
)
SELECT *
FROM temp_01
WHERE hire_rank <= 10;
문제3. 아래화면과 같이 급여의 도수분포표를 생성하세요.
| 계급 | 도수 |
|---|---|
| 2000~5000 | 49 |
| 5001~10000 | 43 |
| 10001~15000 | 12 |
| 15001~20000 | 2 |
| 20001~ | 1 |
SELECT *
FROM(
SELECT SUM(case when salary between 2000 and 5000 then 1 end) as "2000~5000",
SUM(case when salary between 5001 and 10000 then 1 end) as "5001~10000",
SUM(case when salary between 10001 and 15000 then 1 end) as "10001~15000",
SUM(case when salary between 15001 and 20000 then 1 end) as "150001~20000",
SUM(case when salary >= 20001 then 1 end) as "20001~"
FROM hr.employees)
UNPIVOT(도수 FOR 계급 IN ("2000~5000","5001~10000","10001~15000","150001~20000","20001~"));
문제4. 15000 이상 급여를 받는 관리자 이름, 급여, 급여등급을 출력하세요.
SELECT first_name ||' ' || last_name as name, salary ,
(SELECT grade_level
FROM hr.job_grades
WHERE a.salary between lowest_sal and highest_sal) as 급여등급
FROM hr.employees a
WHERE EXISTS(SELECT 1
FROM hr.employees
WHERE manager_id = a.employee_id)
AND salary >= 15000;
문제5. 년도 분기별 급여 총액을 출력하세요.
SELECT to_char(hire_date,'yyyy')as year,to_char(hire_date,'q') as quater, sum(salary) as sum_sal
FROM hr.employees
GROUP BY to_char(hire_date,'yyyy'),to_char(hire_date,'q')
order by 1,2;
문제6. 같은 부서에서 last_name이 같은 사원들을 찾아주세요.
WITH
temp_01 as (
SELECT last_name ,count(*)
FROM hr.employees
GROUP BY last_name
HAVING count(*) > 1
)
SELECT *
FROM hr.employees a
WHERE EXISTS (SELECT 1
FROM temp_01
WHERE last_name = a.last_name)
ORDER BY 3;
문제7 . 사원수가 3명 미만인 부서번호,부서이름,인원수를 출력해주세요.
WITH
temp_01 as(
SELECT department_id , count(*) as cnt
FROM hr.employees
GROUP BY department_id
HAVING count(*) < 3
)
SELECT a.department_id, a.department_name, b.cnt
FROM hr.departments a
join temp_01 b on a.department_id = b.department_id
ORDER BY 1;
문제8 . 사원 수가 가장 많은 부서정보, 도시, 인원수를 출력해주세요.
with
temp_01 as(
SELECT department_id , count(*) as cnt, rank() over (order by count(*) desc) as rnum
FROM hr.employees
GROUP BY department_id
)
SELECT a.*, c.city, b.cnt
FROM hr.departments a
join temp_01 b on a.department_id = b.department_id
join hr.locations c on a.location_id = c.LOCATION_ID
WHERE rnum = 1;
문제9. 요일별 입사한 인원수를 출력해주세요.
SELECT 요일, CNT
FROM(
SELECT to_char(hire_date,'day') AS 요일 ,to_char(hire_date-1,'d') as d ,COUNT(*) AS CNT
FROM hr.employees
GROUP BY to_char(hire_date,'day') ,to_char(hire_date-1,'d')
order by to_char(hire_date-1,'d'));
문제10. 부서별 최고 급여자들을 출력해주세요
with
temp_01 as(
SELECT a.*,
row_number() over (partition by department_id order by salary desc) as rnum
FROM hr.employees a
)
SELECT *
FROM temp_01
WHERE rnum = 1;
문제11. 년도 분기별 총액을 구하세요. 행의 합과 열의 합도 구하세요.
| 년도 | 1분기 | 2분기 | 3분기 | 4분기 | 합 |
|---|---|---|---|---|---|
| 2001 | 17000 | 17000 | |||
| 2002 | 36808 | 21008 | 11000 | 68816 | |
| 2003 | 35000 | 8000 | 3500 | 46500 | |
| 2004 | 40700 | 14300 | 17000 | 14000 | 86000 |
| 2005 | 86900 | 16800 | 60800 | 33400 | 197900 |
| 2006 | 69400 | 20400 | 14200 | 17100 | 121100 |
| 2007 | 36600 | 20200 | 2500 | 35600 | 94900 |
| 2008 | 46900 | 12300 | 59200 | ||
| 297500 | 155808 | 123508 | 114600 | 691416 |
SELECT NVL(년도,' ') as 년도,NVL(to_char("1분기"),' ') as "1분기", NVL(to_char("2분기"),' ') as "2분기",NVL(to_char("3분기"),' ') as "3분기",NVL(to_char("4분기"),' ') as "4분기",NVL(to_char("합"),' ') as 합
FROM(
SELECT to_char(hire_date, 'yyyy') AS 년도, nvl(to_char(hire_date,'q'),0) AS 분기,sum(salary) AS sum_sal
FROM hr.employees
GROUP BY cube(to_char(hire_date, 'yyyy'), to_char(hire_date,'q'))
)
PIVOT(MAX(sum_sal) FOR 분기 IN (1 "1분기",2 "2분기" ,3 "3분기",4 "4분기", 0 "합"))
ORDER BY (case when NVL(년도,' ') = '2001' then 1
when NVL(년도,' ') = '2002' then 2
when NVL(년도,' ') = '2003' then 3
when NVL(년도,' ') = '2004' then 4
when NVL(년도,' ') = '2005' then 5
when NVL(년도,' ') = '2006' then 6
when NVL(년도,' ') = '2007' then 7
when NVL(년도,' ') = '2008' then 8
when NVL(년도,' ') = ' ' then 9 end);
문제12. 유저를 생성해주세요.
유저이름 : robin
비밀번호 : oracle
default tablespace : users
temporary tablespace : temp
users tablespace 사용량 : 1m
CREATE USER robin
IDENTIFIED BY oracle
DEFAULT TABLESPACE users
TEMPORARY TABLESPACE temp
QUOTA 1M ON users;
문제13. ROBIN 유저에게 create session, create table 시스템 권한을 부여해 주세요.
GRANT create session , create table TO robin;
문제14. HR유저 employees 테이블의 select 권한을 ROBIN 유저에게 부여 하세요.
GRANT SELECT ON hr.employees TO robin;
문제15. ROBIN 유저는 HR유저의 employees 테이블을 동일한 이름으로 복제 해주세요.
CREATE TABLE robin.employees
AS
SELECT * FROM hr.employees;
문제16. ROBIN 유저는 mgr 테이블 생성 해주세요.
컬럼 데이터타입
--- ---------
id number(3)
name varchar2(20)
day date
CREATE TABLE robin.mgr
(id number(3),
name varchar2(20),
day date);
문제17. HR 유저 employees 테이블에서 관리자들의 employee_id, last_name, hire_date를 ROBIN 유저의 mgr 테이블에 insert 해주세요.
INSERT INTO robin.mgr
SELECT employee_id, last_name, hire_date
FROM hr.employees a
WHERE EXISTS (SELECT 1
FROM hr.employees
WHERE manager_id = a.employee_id);
문제18. employees 테이블에 데이터 중에 근무연수가 15년 이상 이면서 급여는 10000이상 급여를 받는 사원들은
emp_1테이블에 사번, 이름(last_name), 입사일, 근무연수, 급여 정보를 입력하고
근무연수가 15년 이상 이면서 급여는 10000미만 급여를 받는 사원들은
emp_2테이블에 사번, 이름(last_name), 입사일, 근무연수, 급여 정보를 입력하세요.
create table emp_1(id number, name varchar2(30), day date, years number, sal number);
create table emp_2(id number, name varchar2(30), day date, years number, sal number);
INSERT ALL
WHEN work_day >=15 and salary >=10000 then
INTO emp_1 VALUES(employee_id,last_name,hire_date,work_day,salary)
WHEN work_day >=15 and salary < 10000 then
INTO emp_2 VALUES(employee_id,last_name,hire_date,work_day,salary)
SELECT employee_id, last_name, hire_date , salary ,trunc(months_between(sysdate,hire_date)/12) AS work_day
FROM hr.employees;
문제19. emp_copy 테이블에 있는 departmetn_name값을 departments테이블에 있는 department_name값을 이용해서 수정해주세요.
CREATE TABLE hr.emp_copy
AS
SELECT * FROM hr.employees;
ALTER TABLE hr.emp_copy ADD department_name varchar2(30);
UPDATE hr.emp_copy a
SET department_name = (select department_name
from hr.departments
where department_id = a.department_id);
문제20. Table Instance 정보를 이용해서 테이블을 생성해주세요.
CREATE TABLE hr.emp(
id number(5) CONSTRAINT EMP_ID_PK PRIMARY KEY,
name varchar2(50) CONSTRAINT emp_name_nn NOT NULL,
hire_date date CONSTRAINT emp_date_nn NOT NULL,
sal number(8,2)CONSTRAINT emp_sal_ck CHECK(sal > 100) ,
mgr number(5) CONSTRAINT emp_mgr_fk REFERENCES hr.emp(id),
dept_id number(3) CONSTRAINT emp_dept_id_fk REFERENCES hr.dept(dept_id)
);
CREATE TABLE hr.dept(
dept_id number(3) CONSTRAINT dept_pk PRIMARY KEY,
dept_name varchar2(50) CONSTRAINT dept_nn NOT NULL
CONSTRAINT dept_uk UNIQUE,
mgr number(5));