본문 바로가기

728x90
반응형

배우기/복습노트[oracle sql]

(70)
[복습] SQL | Oracle SQL 데이터의 무결성을 위한 제어장치, 제약조건(Primary Key, Unique Key, Foreign Key, CHECK, NOT NULL) 중 Foreign Key 이어서(FK 옵션) ★Foreign Key에 대한 옵션에 대하여 알아보겠다. 1. on delete cascade: 부모를 지우면 자식도 함께 지워진다. 즉, 부모데이터 삭제 시 자식데이터도 함께 삭제된다. 2. on delete set null: 부모데이터 삭제 시 자식데이터는 null로 수정된다. 예를 들어 어느 부서가 다른 부서와 결합이 되면서 40이라는 부서가 사라지는 경우에 새로 배치가 되기 전에는 null일 필요가 있을 때 사용한다. 새롭게 정의가 될 때까지 비워두는 것이다. foreign key 옵션 테스트를 해보자. 먼저 on delete cascade 이다. 실제로는 이런 옵션을 잘 쓰지 않는다. 삭제가 되지 말아야 할 데이터가 삭제될 수 있어서 위험하기 때문이다. 이 기능을 잘 아는 사람이 써야한다. 다음..
[실습문제] 2023. 11. 9.(목) 문제 풀이(3문제) 실습문제 1. uesr_constraint, user_cons_columns 테이블을 사용하여, 각 테이블의 제약조건이 있는 경우 제약조건 이름, 종류, 테이블명, 컬럼명, 참조테이블명, 참조컬럼명을 출력하는 쿼리를 작성하여라. 위 테이블에 7번 라인과 8번 라인을 주석처리 후 실행을 해보면 이런 결과가 출력된다. 여기서 EMP 테이블의 DEPTNO 컬럼이 PK라는 참조키가 걸려있는데 어느 테이블의 어느 컬럼에서 가져왔는지가 알고싶다. 그렇다면 user_constraint와 user_cons_columns를 한 테이블로 묶고 또 같은 테이블을 불러와서 join을 하면 추출할 수 있을 것이다. 실습문제 2. student4 테이블을 만들고 비만여부를 나타내는 컬럼을 새로 추가한 후, 각 학생들의 비만정보를..
[실습문제] 2023. 11. 8.(수) 문제 풀이(4문제) 실습문제 1. professor_1을 professor와 동일하게 만들고 홈페이지가 없는 직원들은 email_id를 사용하여 다음과 같이 변경하여라. 양선희의 경우 => http://www.test.com/lamb1 먼저 내 코드 결과이다. 내 결과 16번 짤림ㅎ 선생님이 이 방법은 안좋은 예라고 하셨다. 한번의 테이블 스캔으로 가능한 쿼리를 서브쿼리를 사용하여 테이블을 두 번 스캔하는 방식이기 때문이다. 아래는 선생님 해설이다. 실습문제 2. student_1의 테이블을 student과 동일하게 만들고 제1의 전공번호가 301인 학생들과 출생년도와 동일한 학생들을 삭제하여라(제1의 전공번호가 301인 학생 포함) 선생님은 extract 안 쓰시고 to_char로 사용하였다. 실습문제 3. student..
[복습] SQL | Oracle SQL의 분류(DDL, DML, DCL, TCL, DQL) 중 DML의 MERGE + 복습후기(20231108) 4 MERGE: 데이터 병합. 위험한 쿼리이므로 되도록 쓰지 말것. 원본 테이블 기준으로 변경테이블을 수정하므로 old와 new의 관계가 있어야 함. 상당히 좋지 않은 문법을 가짐. 기준테이블 수정할 테이블 ( ) --순서때문에 실수하는 경우가 있음. no price no price 1 1000 1 100 → update 필요 2 2000 2 200 → update 필요 3 3500 3 3500 4 4000 → insert 필요 insert쓰고, update하고 하지말고 한번에 처리하는 방법이 있는가 현업에서는 merge 사용을 금하고 있는 경우가 많음. 시험에는 많이 나옴★ ★문법 문법이 너무 어렵게 생겨서 바로 문제로 적용해보겠다. 예제) merge문 test 위 결과로는 3 rows upserted..
[복습] SQL | Oracle SQL의 분류(DDL, DML, DCL, TCL, DQL) 중 DML의 DELETE 3) DELETE: 행 삭제 문법은 아래와 같다. delete [from] table_name -- 서브쿼리 못 옴 [where 조건]; -- 서브쿼리 올 수 있음 조건절 생략하면 전체 행 삭제 from절에 서브쿼리가 못 오는 이유는, 인라인뷰는 가상의 테이블이므로 가상의 테이블을 지우라는 의미가 될 수 없기 때문이다. where의 조건절을 생략하면 전체 행 삭제가 된다. 예를 들어 emp_t11에서 deptno=1000인 부서를 삭제하라고 한다면 delete from emp_t11 where deptno = 1000 commit; 하면 된다. 예제를 하나 풀어보자 student_t1 테이블에서 이미경과 같은 나이(출생년도가 같은)의 학생 정보를 삭제하여라 추가 예제이다. student_t1 테이블에서 ..
[복습] SQL | Oracle SQL의 분류(DDL, DML, DCL, TCL, DQL) 중 DML의 UPDATE 2) UPDATE: 데이터 수정(cell 단위로 수정하며 여러 셀 수정이 가능함) 여러 행의 특정 컬럼 값 하나를 수정이 가능하다. 여러 컬럼 동시에 수정이 가능하나 권하지 않으며 지양해야하는 점이 있다. 먼저 문법은, UPDATE table_name set 수정대상 = 수정값 [where 조건] 예) select * from emp_t2; update emp_t2 set sal = 3000 where name = 'KING'; 과 같이 KING의 sal 변경이 가능하다. 예제) student_t1 테이블에서 박동호와 같은 학년 학생의 제2전공번호를 101으로 수정하여라 select * from student_t1 where grade = (select grade from student_t1 where ..
[복습] SQL | Oracle SQL의 분류(DDL, DML, DCL, TCL, DQL) 중 DML의 INSERT 2. DML(Data Manipulation Language): INSERT, UPDATE, DELETE, MERGE DML은 데이터 수정 언어이다. 먼저 INSERT부터 살펴보자. 1) INSERT: 데이터(행 단위) 삽입 언어 단건 삽입만 가능(한 건씩만)하며 서브쿼리 사용시에는 여러 건 삽입이 가능하다. 문법 INSERT INTO table_name VALUES(값1, 값2, ...); 전체 컬럼의 값을 입력한다 INSERT INTO table_name(컬럼1, 컬럼2, ...) VALUES(값1, 값2, ....); 선택한 컬럼만 데이터를 입력한다. 여기서 ITAS 문법을 살펴보면, 테이블의 조회 결과를 동시에 입력하고자 할 때 예를들면 A테이블 (c1, c2 ,c3) B테이블(c1, c2, c4..
[실습문제] 2023. 11. 7.(화) 문제 풀이(3문제) 실습문제 1. [ 1. 문제 설명 ] employee 테이블은 보험 회사 직원의 정보를 담고 있는 테이블입니다. employee 테이블 구조는 다음과 같습니다. name type nullable 설명 id number FALSE 직원아이디 name varchar FALSE 이름 salary number FALSE 월급 branch_id number FALSE 근무 대리점 아이디 sellings 테이블은 자동차 보험 판매 기록을 담고 있는 테이블입니다. 테이블 구조는 다음과 같습니다. name type nullable 설명 car_id number FALSE 보험 대상 자동차 ID employee_name number FALSE 보험 설계사 사원 ID created_at date FALSE 계약일 pric..
[복습] data를 unload 하는 방법 및 데이터 DB화 방법 두 가지 + 복습(20231107) data를 unload 하는 것은 DB화 되어있는 자료를 다시 file로 만든다는 의미이다. orange tool에서 Tools 에 Unload Tool로 들어간다. 그 다음에 아래와 같이 뜨면 접속하고자 하는 계정 Connect한 후에 unload 하고자 하는 테이블을 선택하면 아래와 같이 뜬다(emp 선택) 그 다음에 Data File에서 저장 경로와 원하는 저장 포맷을 설정한 뒤에, File Format과 Separator에서 원하는 데이터 구분 형식을 설정한 후에 RUN을 누르면 자료를 받을 수 있다. 다음은 데이터 insert하는 두 가지 방법이 있다. (1) insert 구문 그대로 orange에서 실행하는 방법 심플한 방법이지만 데이터 양이 많은 경우 엄청 느리며 작업 중에 orange가 꺼..
[복습] SQL | Oracle SQL의 분류(DDL, DML, DCL, TCL, DQL) 중 DDL의 TRUNCATE 4) TRUNCATE 테이블 전체 삭제 명령어인데 구조를 변경하는 DDL에 포함되어있는 게 특징이다. auto commit이기 때문이며, 즉시 반영되고 rollback으로 돌릴 수 없다. recyclebin에도 남아있지 않으며 redo log에도 기록을 하지 않는다. 즉 '데이터 변경 내용을 저장하지 않고 즉시 삭제' 하는데 이 의미는 (1) 데이터 변경 내용을 어딘가에 저장하고 동작이 되게끔 하면 다시 과거로 갈 수 있다. 그런데 저장하지 않는다고 하니 복구가 되지 않는다는 의미이다. 데이터를 삭제하면 redo에서 다시 데이터를 긁어오는건데 그렇게 되지 않는다. (2) 속도의 차이가 많이 발생하므로 전체 데이터를 싹 지우면 속도가 더 빨라짐. 예를들어 100기가 테이블 사이즈를 delete로 지우면 기..

728x90
반응형