-
학원 day33. 데이터 정의어(DDL)기록 2022. 10. 22. 18:08
데이터 정의어(DDL)
- 오라클 데이터베이스 객체 생성, 변경, 삭제에 사용되는 명령어
- Create, Alter, Drop(삭제), Truncate(절단)
주요 데이터베이스 객체
- 테이블 - 데이터의 기본 저장단위, 행과 열로 구성되어 있다.
- 뷰 - 하나 이상의 테이블을 사용해서 만든 가상의 테이블
- 시퀀스 - 일련번호 생성기 (예매번호, 주문번호 등에 사용됨)
- 인덱스 - 검색성능을 향상시키기 위해서 데이터에 대한 색인을 갖고 있다. (모든 행을 실행시키지 않고, 색인을 사용해서 찾는다. 내부적으로 트리라는 형태로 저장되어 있다.)
- 동의어 - 객체에 대한 다른 이름을 제공한다. (다른 계정에 있는 데이터를 조회해야 할 때, 계정명.테이블명을 모두 적으면 길어지니까 동의어를 만들어 사용한다.)
인라인뷰와 뷰의 차이점
: 인라인뷰는 영구적이지 않고 해당 SQL이 실행되는 동안만 생겼다가 사라짐.
반면에, 뷰는 영구적으로 남아있어 재활용이 가능하다.
(* 참고 : https://m.blog.naver.com/jiruchi/10044561030)
테이블
테이블과 컬럼의 이름규칙
- 문자로 시작, 30자까지 가능, A-Z a-z 0-9 _$#만 허용
- 오라클 예약어 사용 금지
(* 오라클 예약어 참고 : https://dmz7881.tistory.com/5007721)
테이블 생성하기
CREATE TABLE 테이블명 ( 컬럼명 데이터타입(크기) [DEFAULT 기본값], ... )
테이블 삭제하기
DROP TABLE 테이블명
테이블 변경
- 컬럼추가
ALTER TABLE 테이블명 ADD (컬럼명 데이터타입(크기) [DEFAULT 기본값]);
- 컬럼수정
ALTER TABLE 테이블명 MODIFY (컬럼명 테이터타입(크기) [DEFAULT 기본값]);
- 컬럼삭제
ALTER TABLE 테이블명 DROP 컬럼명;
- 테이블 이름 변경
RENAME 테이블명 TO 새테이블명
- 테이블 절단하기
TRUNCATE TABLE 테이블명; -- truncate는 테이블에서 모든 행을 제거한다. -- 해당 테이블이 사용하는 저장공간을 해제한다. -- truncate로 제거된 행은 rollback할 수 없다.
-------------------------------------------------------------------------------- -- 테이블 -------------------------------------------------------------------------------- -- 테이블 생성하기 CREATE TABLE SAMPLE_PRODUCTS ( -- 컬럼명 데이터타입(사이즈) 제약조건 기본값 PRODUCT_NO NUMBER(6) PRIMARY KEY, PRODUCT_NAME VARCHAR2(255) NOT NULL, PRODUCT_MAKER VARCHAR2(255) NOT NULL, PRODUCT_PRICE NUMBER(8) NOT NULL, PRODUCT_DISCOUNT_PRICE NUMBER(8), PRODUCT_STOCK NUMBER(4), PRODUCT_ON_SELL CHAR(1) DEFAULT 'Y', PRODUCT_CREATED_DATE DATE DEFAULT SYSDATE, PRODUCT_UPDATED_DATE DATE DEFAULT SYSDATE ); -- 테이블의 모든 행 삭제하기 DELETE FROM SAMPLE_PRODUCTS; -- 변경사항을 테이블에 영구적으로 반영시키기 commit;
시퀀스
- 일련번호를 자동으로 생성하는 데이터베이스 객체다.
- 기본키 값(행을 대표하는 값)을 생성하는데 주로 사용됩니다.
-------------------------------------------------------------------------------- -- 시퀀스 -------------------------------------------------------------------------------- -- 시퀀스 생성하기 (1부터 1씩 증가하는 번호가 발행된다.) -- CREATE SEQUENCE 시퀀스명; CREATE SEQUENCE SAMPLE_PRODUCTS_SEQ; -- 시퀀스에서 새로운 일련번호 발행하기 -- 시퀀스명.NEXTVAL -- NEXTVAL은 새로운 일련번호를 발행시킨다. 시퀀스의 내장함수임. SELECT SAMPLE_PRODUCTS_SEQ.NEXTVAL FROM DUAL; -- 테이블에 데이터 추가시 시퀀스 사용하기 INSERT INTO SAMPLE_PRODUCTS (PRODUCT_NO, PRODUCT_NAME, PRODUCT_MAKER, PRODUCT_PRICE, PRODUCT_STOCK) VALUES (SAMPLE_PRODUCTS_SEQ.NEXTVAL, 'IPHONE 14 PRO MAX', '애플', 2000000, 10);
'기록' 카테고리의 다른 글
학원 day35. 무결성제약조건, 인덱스, 트랜잭션 (0) 2022.10.26 학원 day34. 시퀀스, 테이블, 뷰, 무결성 제약조건 (0) 2022.10.25 학원 day33. 서브쿼리 (0) 2022.10.21 학원 day32. 그룹함수(다중행 함수) (0) 2022.10.21 학원 day31. 조인 (0) 2022.10.19