Oracle SQL의 DDL과 DML

June Lee·2021년 2월 18일
0

Database

목록 보기
4/19

데이터형

  • 문자형: CHAR(size), VARCHAR2(size)
    (varchar는 size 지정하지만 가변형이므로 안에 담긴 데이터 사이즈에 따라 달라짐. 크기가 남지 않고 고정적인 경우 char 사용)
  • 숫자형: NUMBER(w, d), FLOAT(w)
    (FLAOT는 NUMBER의 하위 타입이다.)
  • 날짜형: DATE, TIMESTAMP
  • 대용량 (이미지, 파일): LOB, BLOB
    (대용량 데이터를 넣을 수 있지만 대여료가 비싸기 때문에 이미지가 아닌 문자로 바꿔서 저장하는게 좋음 -> optimizer, data tuning 등 기술이 많음)
< 데이터 삽입 및 조회 시의 묵시적 형변환 >
데이터 삽입 시 형변환 문자형 <=> 숫자형 (가능)
데이터 조회 시
where title = 3; (문자형을 숫자로 찾는 것 -> 불가)
where count = '3'; (숫자형을 문자로 찾는 것 -> 가능)
📌 그러나 이렇게 묵시적 형변환을 이용해 조회를 하는 경우, 
천만건 이상의 데이터 환경에서는 엄청난 성능 저하가 발생할 수 있으므로 
칼럼 타입에 맞춰서 질의를 하는 것이 좋다! 📌



DDL(Data Definition Language)

테이블 생성: CREATE TABLE

CREATE TABLE 테이블명(
	컬럼명1 데이터형,
        컬럼명2 데이터형,
        컬럼명3 데이터형
)

테이블 복사

데이터까지 복사

<CREATE TABLE emp01
	AS SELECT * FROM employees;
--cf. 제약 조건은 NOT NULL만 복사

테이블 구조만 복사

CREATE TABLE emp02
	AS SELECT * FROM employees WHERE 1=0;

테이블 구조 수정: ALTER TABLE

컬럼 추가

ALTER TABLE emp02
	ADD(job VARCHAR2(50))

컬럼 데이터 타입 수정

ALTER TABLE emp02
	MODIFY(job VARCHAR2(100))

컬럼 삭제

ALTER TABLE emp02
	DROP COLUMN job;

테이블 데이터 수정

테이블 데이터 삭제

TRUNCATE TABLE emp01;  --DDL
DELETE FROM emp01;	--DML

DDL은 트랜잭션 적용이 불가능하다. (롤백이 불가능)
DML은 트랜잭션 적용이 가능하여 롤백이 가능하다.
DELETE에 WHERE 절을 붙이면 특정 데이터만 삭제 가능하다.

테이블 삭제

DROP TABLE emp01 [CASCADE CONSTRAINT];
DROP TABLE emp01 PURGE;

휴지통으로 보내지 않고 바로 삭제

테이블 이름 변경

RENAME emp01 TO emp00;



DML(Data Manipulation Language)

=> 쿼리를 실행할 후 commit 필요 ⭐️

INSERT

INSERT INTO dept01 VALUES(300, 'Developer', 100, 10); --컬럼 순서대로 넣어줌
INSERT INTO dept01 (department_id, department_name)
	VALUES(400, 'Developer2); --일부 컬럼에만 데이터 추가(위에 적은 순서대로)

UPDATE

주의⏰
모든 데이터를 수정하길 원하지 않는 경우 update와 delete는 반드시 where 절을 수반해야한다!

UPDATE dept01 SET department_name='IT Service'
	WHERE department_id=300;

where 절이 없으면 모든 department_name 데이터가 다 IT Service로 바뀌게 된다.

UPDATE emp01 SET salary = salary*1.1
	WHERE salary >= 3000;

DELETE

DELETE FROM dept01
	WHERE department_name='IT_Service';
profile
📝 dev wiki

0개의 댓글

관련 채용 정보