DDL(Data Definition Language)
데이터 정의 언어로 객체(OBJECT)를 만들고(CREATE), 수정(ALTER)하고, 삭제(DROP) 하는 구문을 말함
추가설명
DDL : 데이터 정의어, 데이터베이스의 구조를 생성, 변경 ,삭제
CREATE, ALTER, DROP
- 하나의 DDL 구문이 하나의 트랜잭션(AUTO COMMIT)
DML : 데이터 조작어, 데이터베이스의 데이터를 조회, 삽입, 변경, 삭제
SELECT, INSERT, UPDATE, DELETE
- 여러 DML 구문이 하나의 트랜잭션
DCL : 데이터 제어어, 권한을 주거나 회수할 수 있으며 트랜잭션 관리를 함
GRANT, REVOKE, COMMIT, ROLLBACK
- DDL 또는 DCL 구문 실행 시, 정상 종료시(AUTO COMMIT)
- 시스템 장애 시 (AUTO ROLLBACK)
DML
데이터 조작어, 데이터베이스의 데이터를 조회, 삽입, 변경, 삭제
실습용테이블
-- 테이블 생성
CREATE TABLE MEMBER(
USER_ID VARCHAR2(30),
USER_PWD VARCHAR2(30),
USER_NAME VARCHAR2(30),
USER_NO VARCHAR2(30),
PHONE VARCHAR2(30)
);
-- 코멘트 추가
COMMENT ON COLUMN MEMBER.USER_ID IS '아이디';
COMMENT ON COLUMN MEMBER.USER_PWD IS '비밀번호';
COMMENT ON COLUMN MEMBER.USER_NAME IS '이름';
COMMENT ON COLUMN MEMBER.USER_NO IS '주민등록번호';
COMMENT ON COLUMN MEMBER.PHONE IS '핸드폰번호';
INSERT
새로운 행을 추가하는 구문, 테이블의 행 개수가 증가함
테이블에 내가 선택한 컬럼에 대한 값만 INSERT할 때 사용
선택 안 된 컬럼은 값이 NULL이 들어감
-- 아래표현식은 내가 선택한 컬럼명에만 값을 추가할때
-- [표현식]
-- INSERT INTO 테이블명(컬럼명1, 컬럼명2, 컬럼명3,...)
-- VALUES(데이터값1, 데이터값2, 데이터값3, ...);
-- 아래표현식은 전체컬럼에 값을 추가할때
-- [표현식]
-- INSERT INTO 테이블명
-- VALUES(데이터값1, 데이터값2, 데이터값3, ...);
INSERT 실습
-- 컬럼값 전부 추가
-- 무조건 컬럼순서에맞게 작성하여야함 .
INSERT INTO MEMBER
VALUES('id01', 'pw01', '김길동', '111111-1011111', '010-1111-1111');
INSERT INTO MEMBER
VALUES('id02', 'pw02', '이길동', '222222-1011111', '010-2222-2222');
-- 컬럼값 지정해서 추가
-- (아이디, 비밀번호, 이름, 주민등록번호)
INSERT INTO MEMBER(USER_ID, USER_PWD, USER_NAME, USER_NO)
VALUES('id03', 'pw03', '삼길동', '333333-1011111');
아래와 같이 삽입되었다는말과함께 결과 확인하기!
추가했던 3개의행 추가완료
하지만 삼길동의 "PHONE" 컬럼은 추가안하였기 때문에 NULL입력된거임
INSERT 서브쿼리
INSERT시 VALUES대신 서브쿼리 사용 가능
위에서 실습했던내용을 다른 테이블로 복사할예정
1. 빈테이블 생성
-- INSERT SUBQUERY 추가를 위한 빈테이블생성
CREATE TABLE MEMBER_COPY(
USER_ID VARCHAR2(30),
USER_PWD VARCHAR2(30),
USER_NAME VARCHAR2(30),
USER_NO VARCHAR2(30),
PHONE VARCHAR2(30)
);
2. MEMBER -> MEMBER_COPY 로 데이터값 복사하기
-- INSERT 서브쿼리로 이용한 복사
-- VALUE 대신 서브쿼리작성
INSERT INTO MEMBER_COPY
(SELECT
USER_ID
, USER_PWD
, USER_NAME
, USER_NO
, PHONE
FROM MEMBER
);
테이블 생성시 컬럼만 복사하고싶을시
-- 테이블 생성 컬럼만 복사하기
CREATE TABLE MEMBER_COPY2
AS SELECT
*
FROM MEMBER
WHERE 1 = 0; -- 컬럼 복사할때 1 = 0 은 FALSE이기 때문에 데이터값은 안넘어온다
-- 별의미없이 FALSE 나오기위해 써둠
UPDATE
테이블에 기록 된 컬럼의 값을 수정하는 구문, 테이블 전체 행 개수에는 변화 없음
-- UPDATE
-- [표현식]
-- UPDATE 테이블명
-- SET [컬럼] = [값]
-- [조건절]
-- UPDATE 시 WHERE 사용안할시
UPDATE MEMBER
SET PHONE = 123;
PHONE 컬럼의 값이 전부다 123으로 변경되었다.
WHERE 절 사용안하며 테이블안의 컬럼이 전부다바뀌게됨 ..
-- MEMBER 테이블의 이길동의 핸드폰번호를 010-6666-6666 으로변경하기
UPDATE MEMBER
SET PHONE = '010-6666-6666'
WHERE USER_NAME = '이길동';
DELETE
테이블의 행을 삭제하는 구문, 테이블의 행의 개수가 줄어듬
-- [표현식]
-- DELETE FROM 테이블명 WHERE 조건절
-- 만약 WHERE 조건 설정이 없으면 모든 행이 삭제 됨
-- 이길동 회원정보 삭제
DELETE FROM MEMBER
WHERE USER_NAME = '이길동';
'프로그래밍 > Database(Oracle)' 카테고리의 다른 글
Oracle - view (0) | 2021.07.06 |
---|---|
ORACLE - ALTER, DROP (0) | 2021.07.05 |
Oracle - CREATE(생성, 제약조건), INSERT (0) | 2021.07.03 |
Oracle- JOIN (0) | 2021.06.29 |
오라클 - GROUP & HAVING (0) | 2021.06.29 |