안녕하세요!
오늘은 DML 의 마지막인 DELETE 구문을 알아보려고 합니다.
어제 DML 못 보신분들은 알죠? 복습 필요합니다~!
DML - DELETE
DELETE 는 많이 본 단어죠?
예상 하셨겠지만 테이블의 행을 삭제할 때 사용하는 SQL 입니다.
먼저 문법을 보시면
먼저 어떤 테이블에서 삭제할지를 결정하고,
테이블의 어떤 행을 삭제할지를 결정해주면 됩니다.
어제 UPDATE 쿼리로 emp 테이블에 사번이 9999번인 사원을 등록했다고 가정하고
(아, 물론 INSERT 로 직접 삽입을 한 후에 하셔도 됩니다!)
다시 DELETE 를 통해 그 사원 정보를 삭제하는 쿼리를 짜보겠습니다.
위와 같이 간단하게 작성할 수 있습니다.
DELETE 구문은 WHERE 절이 따라 온다는 것을 볼 수 있는데요,
따라서 WHERE 절에 서브쿼리도 사용이 가능합니다.
위와 같이 WHERE 절에 서브쿼리를 사용하므로써
삭제할 행을 제한할 수 있습니다.
아! 원래 있던 데이터를 DELETE 하면 완전 날아가는 것이니 COMMIT; 하기 전에
반드시 실습 후에는 ROLLBACK; 명령어를 통해서 다시 복구해주세요~!
(혹은 데이터를 복구할 필요가 없으신 분들은 DELETE 대신에 TRUNCATE 을 사용해 주세요!
문법은 동일합니다. 다만, TRUNCATE 은 ROLLBACK 도 못해요^^;)
DDL
DELETE 를 마지막으로 DML 구문들을 모두 배워봤습니다.
다음으로 DDL 을 배울 건데요,
그 중에서 오늘은 DROP과 CREATE 을 배우도록 하겠습니다!
우선 DDL 은 데이터가 들어갈 공간(table) 을 생성, 삭제,
컬럼 추가, 각종 객체 생성, 수정, 삭제 등의 기능을 하는 녀석입니다.
다만, DDL은 자동 커밋이 되기 때문에 테이블을 생성했다고 하면
ROLLBACK 이 되지 않으므로 테이블 삭제 명령어를 사용해야합니다.
이 점 기억해 두고 시작하겠습니다.
DROP
DROP은 테이블을 삭제하는 SQL 구문 입니다.
문법은 간단합니다.
위와 같이 작성해주시면 됩니다.
만약 emp 테이블의 복사본인 emp_copy 테이블을 삭제 한다고 하면
위와 같이 작성 해주시면 되는데요,
아까 말씀 드렸다싶이 ROLLBACK 이 되지 않기 때문에
삭제 하기 전에 한 번 생각하고 삭제해주세요!
실습을 할 때는 다음으로 배울 CREATE 으로 복사본을 만든 후 그 테이블을 삭제해주세요.
CREATE
다음은 CREATE 입니다.
말 그대로 생성. TABLE 을 생성하는 구문입니다.
문법은
위와 같습니다.
먼저 테이블명을 정해주시고
그 테이블에 들어갈 컬럼들과 컬럼들의 타입을 정해주시면 되겠습니다.
위는 ranger 라는 테이블을 만들어 본 것인데요,
ranger_no 이라는 컬럼의 데이터는 숫자 이어야 하고,
ranger_nm 의 데이터는 문자(SQL에서 문자 데이터는 보통 VARCHAR2를 사용합니다!),
reg_dt 는 날짜로 지정해 주었는데
값이 없으면 기본값으로 현재날짜가 입력되게 한 것입니다.
위에서 제가 생성한 테이블들의 컬럼 옆에
숫자형, 문자형, 날짜형 과 같은 '제약조건'을 걸어 주었는데요
그렇다면 이 제약조건은 무엇인지 알아보겠습니다.
제약조건
우선 ORACLE DBMS 는 데이터 무결성 이라는 특징을 갖고 있습니다.
잘못된 데이터가 들어가는 것을 방지하는 성격이죠.
예를 들자면,
사원 테이블에 중복된 사워번호가 등록되는 것을 방지하거나,
반드시 입력이 되어야 되는 컬럼의 값을 확인하는 등의 성격입니다.
이 데이터 무결성을 지키기 위해 제공하는 것이 제약조건인데, 5가지가 있습니다.
1. NOT NULL
해당 컬럼에 값이 NULL이 들어오는 것을 제약, 방지한다.
2. UNIQUE
전체 행 중에 해당 컬럼의 값이 중복되면 안된다.
(단, NULL에 대한 중복은 허용한다.)
3. PRIMARY KET = UNIQUE + NOT NULL
(다른 행에 동일한 값이 나오면 안된다)
4. FOREIGN KEY
연관된 테이블에 해당 데이터가 존재해야만 입력이 가능하다.
(ex. emp 테이블에 데이터를 입력할 때 dept 테이블에 존재하지 않는
deptno 값을 입력하는 것을 방지)
5. CHECK 제약 조건(NOT NULL 은 여기에 들어갈 수 있음)
컬럼에 들어오는 값을 정해진 로직에 따라 제어한다.
(ex. 남성 = M, 여성 = F
시스템에는 M, F 두 가지 값만 저장될 수 있도록 제어)
위와 같은 5가지 제약 조건이 있는데요,
그렇다면 제약조건을 생성하는 방법은 어떤것들이 있는지 알아보겠습니다.
1. 테이블 생성시 컬럼 옆에 기술하는 경우
(상대적으로 세세하게 제어하는 것은 불가)
2. 테이블 생성 시 모든 컬럼을 기술하고 나서 제약조건만 별도로 기술
(1번 방법보다 세세하게 제어하는게 가능)
3. 테이블 생성 이후, 객체수정 맹령을 통해 제약조건을 추가
그럼 1번 방법으로 PRIMARY KEY 를 생성 해보겠습니다.
일단 dept 테이블의 정보를 토대로 시작하기 위해
DESC dept; 명령으로 dept 테이블의 데이터 정보를 확인 후 시작 해주세요.
위와 같이 dept_test 테이블을 만들어 보았습니다.
NUMBER 옆에 PRIMARY KET 라고 적어 주시면 됩니다.
그 전에 CONSTRAINT 하고 PK_dept_test 라고 있는데요,
CONSTRAINT는 PK_dept_test라는 별칭을 부여하기 위해 필요한 녀석입니다.
PRIMARY KEY 이외에 다른 조건을 넣어주시고 싶으면
아까 제가 소개해 드렸던 다섯가지중에 하나를
PRIMARY KEY 위치에 작성 해주시면 됩니다.
오늘은 DELETE, DROP, CREATE 에 대해서 알아보았습니다.
이 전까지 배웠던 테이블의 컬럼들을 가공하는 것이 아니라
테이블 자체를 가공하는 것인만큼
좀 더 신경써서 사용 해주시면 좋을 것 같네요~!
오늘도 끝까지 봐주셔서 감사합니다!
다음에 또 봐요~!
#sql#sqldeveloper#oracle#dbms#select#from#where#groupby#join#outerjoin#조인#서브쿼리#delete#drop#create#제약조건#rollback#commit#primarykey#notnull#check#contstraint
'프로그래밍 > 데이터베이스' 카테고리의 다른 글
[SQL 기초 - 14장] 오라클 뷰, view 사용 이유, 시퀀스, 인덱스(1) (1) | 2024.12.19 |
---|---|
[SQL 기초 - 13장] 오라클 SQL 제약조건, ALTER (0) | 2024.12.18 |
[SQL 기초 - 11장] 오라클 SQL EXISTS, 집합연산자, DML (1) | 2024.12.16 |
[SQL 기초 - 10장] 오라클 SQL 서브쿼리 (1) | 2024.12.13 |
[SQL 기초 - 9장] 오라클 SQL OUTER JOIN, 서브쿼리 (0) | 2024.12.12 |