<14:30 5교시 >
■ create as를 이용한 표의 복제(복사)
테이블 복제 방법 = create 새로운 표 as select * from 복제대상 표
(단, 제약 조건은 복사가 안 되고 제약 조건을 넣고 싶으면 따로 추가해줘야 함.)
create 새로운 표 as select * from 복제대상 표
이방법으로 할 때 as 뒤에 오는 게
select * from 복제대상 표 where 절
이어도 복제 가능
만약, 복제해 오는 표의 row 값은 존재하지 않지만, 복제대상 표의 형식(DESC)는 가져오고 싶으면,
where 절에 무조건 거짓인 조건을 붙이면 된다.
만약 이렇게 만들어진 빈 테이블에 같은 칼럼 형식의 다른 표에서 가져온 데이터를 집어 넣고 싶으면
insert into 복제된 테이블
select * from 데이터가 있는 테이블
만 입력해도 된다.
SQL> --dept 테이블을 복사해서 dept2 테이블을 만들어 보세요
SQL> create table dept2 as select * from dept;
Table created.
SQL> --dept2의 deptno 칼럼에 primary key 제약 조건을 걸어보세요.
SQL> alter table dept2
2 add constraint dept2_deptno_pk PRIMARY KEY(deptno);
Table altered.
SQL> -emp 테이블을 복사해서 emp2 테이블을 만들어보세요.
SP2-0734: unknown command beginning "-emp 테이..." - rest of line ignored.
SQL> --emp 테이블을 복사해서 emp2 테이블을 만들어보세요.
SQL> create table emp2 as select * from emp;
Table created.
SQL> --emp2의 empno 칼럼에 PRIMARY KEY 제약 조건을 걸어보세요.
SQL> alter table emp2
2 add constraint emp2_empno_pk Primary key(empno);
Table altered.
SQL> --emp2의 deptno 칼럼이 dept2의 deptno 칼럼을 참조하도록 외래키 제약조건을 걸어보세요
SQL> alter table emp2
2 add constraint emp2_deptno_fk references dept2_deptno_pk;
add constraint emp2_deptno_fk references dept2_deptno_pk
*
ERROR at line 2:
ORA-00902: invalid datatype
SQL> --emp2의 deptno 칼럼이 dept2의 deptno 칼럼을 참조하도록 외래키 제약조건을 걸어보세요
SQL> alter table emp2
2 add constraint emp2_deptno references dept2_deptno_pk;
add constraint emp2_deptno references dept2_deptno_pk
*
ERROR at line 2:
ORA-00902: invalid datatype
SQL> --emp2의 deptno 칼럼이 dept2의 deptno 칼럼을 참조하도록 외래키 제약조건을 걸어보세요
SQL> alter table emp2
2 add constraint emp2_deptno references dept2(deptno);
add constraint emp2_deptno references dept2(deptno)
*
ERROR at line 2:
ORA-01735: invalid ALTER TABLE option
SQL> --emp2의 deptno 칼럼이 dept2의 deptno 칼럼을 참조하도록 외래키 제약조건을 걸어보세요
SQL> alter table emp2
2 add constraint emp2_deptno references dept2(deptno);
*
ERROR at line 2:
ORA-01735: invalid ALTER TABLE option
SQL> --emp2의 deptno 칼럼이 dept2의 deptno 칼럼을 참조하도록 외래키 제약조건을 걸어보세요
SQL> alter table emp2
2 add constraint emp2_deptno_fk Foreign key(deptno) references dept2(deptno);
Table altered.
<15:30 6교시> HR/HR 계정을 활용해서 SELECT 문 다시 연습해보기
■ HR 계정 Unlock 하기
Microsoft Windows [Version 10.0.26100.2454]
(c) Microsoft Corporation. All rights reserved.
C:\Users\acorn>sqlplus system/
SQL*Plus: Release 11.2.0.2.0 Production on 수 11월 27 15:12:43 2024
Copyright (c) 1982, 2014, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production
SQL> alter user HR Account Unlock identified by HR;
User altered.
SQL>
■ HR 계정 사용해서 여러가지 연습 문제 풀기 -> 더보기로 닫아 놓기
SQL> --어떤 사원이 얼마를 받는지 궁금하다면?
SQL> select employee_id, first_name, Last_name, salary from employees;
SQL> --departments 테이블에서 부서의 아이디와 이름을 선택하세요.
SQL> select department_ID, department_name from departments;
SQL> select first_name||' '||Last_name FULL_NAME, salary from employees;
SQL> --부서가 없는 직원의 LAST_NAME 조회
SQL> select Last_name from employees where department_id is null;
LAST_NAME
--------------------------------------------------
Grant
SQL> --부서별(부서ID) 근무하는 직원의 수를 조회하세요
SQL> select department_id, count(first_name) from employees
2 group by department_id;
DEPARTMENT_ID COUNT(FIRST_NAME)
------------- -----------------
100 6
30 6
1
90 3
20 2
70 1
110 2
50 45
80 34
40 1
60 5
10 1
12 rows selected.
SQL> --급여가 가장 높은 직원의 이름(LAST_NAME)과 급여를 조회하세요;
SQL> select last_name, salary from employees
where salary = (select max(salary) from employees);
LAST_NAME SALARY
-------------------------------------------------- ----------
King 24000
SQL> --사원 id, 이름, 부서id, 부서명을 select
SQL> select e.employee_id 사원ID, first_name||' '||last_name 이름, d.department_id, d.department_name
2 from employees e
3 join departments d on e.department_id=d.department_id;
SQL> --각 직원의 매니저 이름을 조회
SQL> --(단 매니저가 없는 사원의 이름도 나오게)
SQL> select e.Last_name, m.last_name
2 from employees e
3 join employees m on e.manager_id=m.employee_id(+);
SQL> --위에꺼를 똑같이 ANSI JOIN 으로
SQL> select e.Last_name, m.last_name
2 from employees e
3 left join employees m on e.manager_id=m.employee_id;
<16:30 7교시> DBeaver 이용해서 데이터베이스를 GUI로 접근해서 데이터를 선택하고 조회하는 방법
■ DBeaver란
데이터 베이스 잘하는 비버 데이터베이스를 GUI로 실행할 수 있는 애플리케이션
우리가 그동안 했던건 sqlplus로 명령프롬프트를 사용해서 데이터베이스의 데이터들을 다루었는데
DBeaver는 sqlplus와 같은 기능을 하는데 GUI를 제공하면서 시각적으로도, 기능적으로도 편리하게 대신 해주는 게 많다.
■ DBeaver 설치 및 실행(다운로드 링크)
데이터베이스 연결하기
ORACLE 선택 다음 > DRIVER PROPERTIES > DOWNLOAD 끝
>MAIN 가서 HOST는 로컬 호스트(내 컴퓨터에서 내 IP를 가리키는 방법=127.0.0.1), DATABASE XE, SID 선택
>localhost의 계정과 비밀번호 입력
>DB에 연결됨
■ DB로 직접 select 해보기
'공부의 기록 > 자바 풀 스택 : 수업내용정리' 카테고리의 다른 글
자바 풀 스택 11/28 오후 기록 006-2 (1) | 2024.11.28 |
---|---|
자바 풀 스택 11/28 오전 기록 006-1 (2) | 2024.11.28 |
자바 풀 스택 11/27 오전 기록 005-1 (1) | 2024.11.27 |
자바 풀 스택 11/26 오후 기록 004-2 (0) | 2024.11.26 |
자바 풀 스택 11/26 오전 기록 004-1 (0) | 2024.11.26 |