# Oracle SQL 튜토리얼: DDL & DML 기초 실습

발라·2025년 7월 23일

서버 이해 첫걸음

목록 보기
8/11
post-thumbnail

오늘은 직원(직원) 테이블과 네이버회원 테이블을 갖고
1️⃣ DDL(테이블 생성·제약조건)
2️⃣ DML(INSERT, UPDATE, DELETE)
연습해볼 거에여!


1. DDL: 테이블 설계 및 제약조건

-- 1) 직원 테이블 생성
CREATE TABLE 직원 (
  직원ID        NUMBER(6)      NOT NULL,     -- PK 후보
  이름           VARCHAR2(20),
  성            VARCHAR2(25)    NOT NULL,
  이메일         VARCHAR2(25)    NOT NULL,     -- UK 후보
  핸드폰         VARCHAR2(20),
  입사일         DATE           NOT NULL,
  직업ID         VARCHAR2(10)    NOT NULL,
  급여           NUMBER(8,2),
  커미션비율      NUMBER(2,2),
  매니저ID       NUMBER(6),
  부서ID         NUMBER(4)
);

-- 2) 직원 테이블 삭제 (테스트용)
DROP TABLE 직원;

-- 3) PK, UK, CK 등 제약조건 추가
ALTER TABLE 직원
  ADD CONSTRAINT 직원_직원ID_PK PRIMARY KEY(직원ID);

ALTER TABLE 직원
  ADD CONSTRAINT 직원_직원이메일_UK UNIQUE(이메일);

ALTER TABLE 직원
  ADD CONSTRAINT 직원_급여_CK CHECK(급여 > 0);

-- 4) 이름 컬럼 NOT NULL 설정 (DDL 수정)
ALTER TABLE 직원
  MODIFY 이름 NOT NULL;

-- 5) FK(부서ID) 추가
ALTER TABLE 직원
  ADD CONSTRAINT 직원_부서ID_FK
  FOREIGN KEY(부서ID) REFERENCES 부서(부서ID);

-- 6) CK 제약조건 삭제 (테스트)
ALTER TABLE 직원
  DROP CONSTRAINT 직원_급여_CK;

포인트

  • PRIMARY KEY, UNIQUE, CHECK, NOT NULL, FOREIGN KEY 를 자유롭게 연습해보세요!
  • 제약조건은 ALTER TABLE 로도 추가·삭제할 수 있어요!

2. DDL 예제: 제약조건 테스트용 테이블

CREATE TABLE 제약조건테스트 (
  PK테스트   NUMBER       PRIMARY KEY,          -- PK
  UK테스트   NUMBER       UNIQUE,               -- UK
  NN테스트   NUMBER       NOT NULL,             -- NN
  CK테스트   VARCHAR2(2)  CHECK(CK테스트 IN ('남','여'))  -- CK
);
  • CK테스트 컬럼은 '남' 또는 '여' 값만 허용되도록 체크
  • 제약조건 하나로 다양한 룰을 구현할 수 있어요!

3. DML: 데이터 조작 (INSERT / UPDATE / DELETE)

3-1. INSERT

-- 컬럼 명시 버전
INSERT INTO 네이버회원 (
  회원ID, 이름, 비밀번호, 생년월일, 성별
) VALUES (
  'ABC', '홍길동', '1234', SYSDATE, '남'
);

-- 컬럼 생략 버전 (테이블 컬럼 순서를 정확히 알아야 함)
INSERT INTO 네이버회원
VALUES (
  'DFG', '홍길동', '1234', SYSDATE, '남'
);

Tip!

  • 컬럼을 명시하면 → 유지보수에 안전
  • 생략하면 → 빠르지만, 컬럼 순서 바뀌면 에러 😱

3-2. UPDATE

-- ① 전체 행 업데이트 (주의!!)
UPDATE 직원
SET 직업ID = 'JAVA';

-- ② 특정 행만 업데이트
UPDATE 직원
SET 직업ID = 'JAVA'
WHERE 직원ID = 4;

주의

  • WHERE 없이 실행하면 전체가 바뀌니까 신중하게~
  • 항상 SELECT 로 대상 확인 후 UPDATE!

3-3. DELETE

-- ① 전체 삭제 (주의!!)
DELETE FROM 직원;

-- ② 특정 행만 삭제
DELETE FROM 직원
WHERE 직원ID = 2;

주의

  • 전체 삭제 전엔 반드시 백업 또는 트랜잭션 확인!
  • COMMIT; 해야 실제 반영!

마무리

오늘은 직원 테이블에 제약조건을 붙이고
네이버회원 테이블에 데이터를 삽입, 수정, 삭제 해봤어요!
SQL 연습할 때,

  • 제약조건으로 데이터 무결성 지키기
  • WHERE 로 대상 한정하기
  • COMMIT 전·후로 상태 점검하기
    이 세 가지 꼭 기억해두세요 (>_<)

작성일:2025.07.23
작성자:발라

profile
능숙한 바이브코딩을 할 수 있게 됨을 꿈꾸며

0개의 댓글