알고리즘/SQL 문법 정리

SQL 문법 정리 6 :테이블 생성 및 데이터 조작 (CREATE, INSERT, UPDATE, DELETE)

경우42 2025. 2. 3. 16:06
반응형

SQL 문법 정리 6 :테이블 생성 및 데이터 조작 (CREATE, INSERT, UPDATE, DELETE)


📌 테이블 생성 규칙

  • 이름 규칙
    • 영문자로 시작 (예: UDEPT, STUDENT)
    • 최대 64자까지 허용
    • 허용 문자: A-Z, a-z, 0-9, _, $
    • 예약어 사용 금지 (예: SELECT, FROM)

📊 데이터 타입 종류

데이터 타입설명크기/범위

CHAR(n) 고정 길이 문자열 (공백으로 채움) 0 ~ 255 바이트
VARCHAR(n) 가변 길이 문자열 (공백 없음) 0 ~ 65,535 바이트
SMALLINT 작은 정수 (-32,768 ~ 32,767) 2바이트
INT 일반 정수 (-2,147,483,648 ~ 2,147,483,647) 4바이트
DECIMAL(m,d) 고정 소수점 (정확한 계산에 적합, 예: 화폐) m: 전체 자릿수, d: 소수점 이하 자릿수
FLOAT 부동 소수점 (근사값) 4바이트
DOUBLE 더 큰 부동 소수점 8바이트
BLOB 이진 데이터 (이미지, 파일 등) 최대 65,535 바이트

🔑 제약 조건 (Constraints)

1. PRIMARY KEY

  • 기본 키: 유일성 보장 + NOT NULL
    CREATE TABLE STUDENT (
      S_ID INT PRIMARY KEY,
      S_NAME VARCHAR(14) NOT NULL
    );

2. FOREIGN KEY

  • 외래 키: 다른 테이블의 값을 참조
    CREATE TABLE STUDENT (
      S_DEPT VARCHAR(13),
      FOREIGN KEY (S_DEPT) REFERENCES UDEPT(DNAME)
    );

3. UNIQUE

  • 유일한 값: 중복 허용 X (단, NULL은 허용)
    CREATE TABLE STUDENT (
      S_ID INT UNIQUE,
      S_NAME VARCHAR(14)
    );

4. CHECK

  • 값 검증: 조건 충족 시만 입력 허용
    CREATE TABLE STUDENT (
      S_GPA DOUBLE CHECK (S_GPA >= 0.0 AND S_GPA <= 4.5)
    );

5. DEFAULT

  • 기본값 설정: 값 미입력 시 자동 할당
    CREATE TABLE STUDENT (
      S_GPA DOUBLE DEFAULT 1.0
    );

6. NOT NULL

  • NULL 금지: 필수 입력 필드
    CREATE TABLE STUDENT (
      S_ID INT NOT NULL
    );

 AUTO_INCREMENT

  • 자동 증가 값: 주로 기본 키에 사용
    CREATE TABLE STUDENT (
      S_ID INT AUTO_INCREMENT PRIMARY KEY,
      S_NAME VARCHAR(14)
    );
  • INSERT 예시:
    INSERT INTO STUDENT (S_NAME) VALUES ('Kang Di Bi'); -- S_ID 자동 생성

📥 INSERT 문

1. 기본 형식

INSERT INTO 테이블명 (컬럼1, 컬럼2) 
VALUES (값1, 값2);
  • 예시:
    INSERT INTO STUDENT (S_ID, S_NAME) 
    VALUES (200021290, 'Lee Di Bi');

2. NULL 처리

  • 명시적 NULL 지정:
    INSERT INTO STUDENT 
    VALUES (200221290, 'Park Di Bi', NULL);
  • 암시적 생략 (컬럼 지정 필수):
    INSERT INTO STUDENT (S_ID, S_NAME) 
    VALUES (200421290, 'Kang Di Bi');

🔄 UPDATE 문

1. 단일 행 수정

UPDATE STUDENT
SET S_DEPT = 'Science'
WHERE S_ID = 200621290;

2. 다중 행 수정

UPDATE STUDENT
SET S_DEPT = 'Art'
WHERE S_DEPT IS NULL;

⚠️ 주의사항

  • WHERE 절 생략 시 전체 행 수정:
    UPDATE STUDENT SET S_DEPT = 'Art'; -- 모든 학생의 학과가 'Art'로 변경!

🗑️ DELETE 문

1. 특정 행 삭제

DELETE FROM STUDENT
WHERE S_ID = 200621290;

2. 조건부 삭제

DELETE FROM STUDENT
WHERE S_ID > 200221290;

⚠️ 주의사항

  • WHERE 절 생략 시 전체 데이터 삭제:
    DELETE FROM STUDENT; -- 모든 학생 정보 삭제!

💡 실습 팁

  1. 테이블 삭제 시 주의: DROP TABLE IF EXISTS 테이블명;으로 안전하게 삭제.
  2. 외래 키 참조: 부모 테이블 삭제 전 자식 테이블 먼저 삭제해야 함
  3. AUTO_INCREMENT 초기화: ALTER TABLE 테이블명 AUTO_INCREMENT = 1;
반응형