알고리즘/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; -- 모든 학생 정보 삭제!
💡 실습 팁
- 테이블 삭제 시 주의: DROP TABLE IF EXISTS 테이블명;으로 안전하게 삭제.
- 외래 키 참조: 부모 테이블 삭제 전 자식 테이블 먼저 삭제해야 함
- AUTO_INCREMENT 초기화: ALTER TABLE 테이블명 AUTO_INCREMENT = 1;
반응형