728x90
대학시절 처음 DML, DCL을 써봤을때 데이터가 제가 짠 퀄리대로 쏙쏙 나오는게 너무 재밌었어서, 혼자서 이것저것 시도해보면서 배웠던 기억이 있는데요ㅎㅎ
요즘 쿼리문 작성할일이 별로 없었는데 이렇게 강의들으면서 오랜만에 작성해보니까 재밌었습니다~
DML (Data Manipulation Language)
DML은 데이터 조작 언어입니다. 즉, 데이터를 삽입, 조회, 수정, 삭제할 때 사용하는 SQL 명령어입니다.
SELECT - 데이터 조회
SELECT 열 FROM 테이블 WHERE 조건 ORDER BY 정렬기준;
- SELECT: 어떤 열을 조회할지
- FROM: 어떤 테이블에서
- WHERE: 조건이 무엇인지
- GROUP BY: 데이터를 그룹으로 묶기
- HAVING: 그룹에 조건 걸기
- ORDER BY: 정렬 기준 지정
- LIMIT: 결과 개수 제한
뷰(View)
- 뷰는 가상 테이블입니다. 실제 데이터를 가지지 않고, SELECT 결과처럼 작동합니다.
- 복잡한 쿼리를 재사용하거나, 보안이 필요한 컬럼을 숨길 때 사용합니다.
INSERT - 데이터 삽입
INSERT INTO 테이블 (열1, 열2) VALUES (값1, 값2);
- INSERT INTO: 어떤 테이블에 데이터를 넣을지
- VALUES: 어떤 값을 넣을지
- SELECT 삽입: 다른 쿼리 결과를 그대로 넣을 수 있음
AUTO_INCREMENT
- id INT AUTO_INCREMENT PRIMARY KEY 형태로 사용
- INSERT할 때 값을 생략하면 자동으로 1씩 증가
- 마지막 증가값은 SELECT LAST_INSERT_ID();로 확인
UPDATE - 데이터 수정
UPDATE 테이블 SET 열1 = 값1 WHERE 조건;
- SET: 어떤 열의 값을 어떻게 바꿀지
- WHERE: 어느 행을 바꿀지 (❗ 생략하면 모든 행이 수정됨)
DELETE - 데이터 삭제
DELETE FROM 테이블 WHERE 조건;
- WHERE절 없으면 전체 삭제 주의!
- 삭제 전 반드시 조건 확인 필요
DCL (Data Control Language)
DCL은 권한 제어 언어입니다. 사용자의 접근 권한을 부여하거나 회수할 수 있습니다. 일반적으로 DBA나 관리자가 사용합니다.
GRANT | 권한 부여 |
REVOKE | 권한 회수 |
TCL (Transaction Control Language)
TCL은 트랜잭션 제어 언어입니다. 여러 SQL 문을 하나의 작업 단위로 묶어 처리할 수 있습니다.
COMMIT | 모든 변경사항을 저장 |
ROLLBACK | 변경사항을 취소하고 이전 상태로 복원 |
- MYSQL은 기본적으로 autocommit ON이므로 변경사항이 자동 저장됩니다. 트랜잭션이 필요할 땐 명시적으로 OFF하거나 START TRANSACTION을 사용합니다.
무결성 제약조건 (Integrity Constraints)
데이터의 정확성, 일관성, 신뢰성을 보장하기 위한 규칙입니다. 테이블을 정의할 때 **제약조건(Constraints)**을 설정해 잘못된 입력을 막습니다.
NOT NULL | NULL 불가 |
UNIQUE | 중복 불가 (NULL은 허용) |
PRIMARY KEY | NOT NULL + UNIQUE |
FOREIGN KEY | 다른 테이블의 열 참조 |
CHECK | 특정 조건 만족 시만 입력 가능 |
DEFAULT | 기본값 자동 설정 |
SELECT * FROM information_schema.table_constraints;
-- 테이블에 설정된 제약조건 목록 확인
FOREIGN KEY와 참조 무결성
FOREIGN KEY (dept_id) REFERENCES dept(id)
- 외래키는 부모 테이블의 PK 또는 UNIQUE 키를 참조합니다.
- 참조하는 테이블이 먼저 생성되어 있어야 함
- 참조 컬럼과 자료형이 일치해야 함
ON DELETE / ON UPDATE 옵션
NO ACTION | 기본값. 참조 중이면 삭제/수정 거부 |
RESTRICT | 참조 중이면 삭제/수정 거부 |
CASCADE | 부모의 삭제/수정이 자식에도 반영 |
SET NULL | 부모 삭제 시 자식의 외래키를 NULL로 |
SET DEFAULT | 부모 삭제 시 자식 값을 기본값으로 변경 (MySQL은 지원 미흡) |
DEFAULT와 자동 시간 설정
MySQL에서 자주 사용하는 자동 시간 입력 기능입니다.
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
- 레코드가 생성될 때 created_at은 현재 시각 자동 입력
- 레코드가 수정될 때 updated_at은 자동 갱신됨
'TIL' 카테고리의 다른 글
[TIL] 2025-5-28 MySQL 내장 함수 / 조인 (0) | 2025.05.28 |
---|---|
[TIL] 2025-5-27 sql (0) | 2025.05.28 |
[TIL] 2025-5-23 제약조건/정규화 (0) | 2025.05.28 |
[TIL] 2025-5-22 자바 입출력 (0) | 2025.05.22 |
[TIL] 2025-05-21 스트림, 내부클래스, 스레드, 람다식 (0) | 2025.05.21 |
댓글