반응형
여승철
INTP 개발자
여승철
  • 분류 전체보기 (376)
    • CS (16)
      • 면접 준비 (7)
      • 운영체제 (0)
      • 네트워크 (2)
      • HTTP (6)
      • 스프링(Spring) IoC 컨테이너 (0)
      • 알고리즘 (1)
    • Web (13)
    • AWS (6)
    • Java (43)
    • JSP & Servlet (65)
      • 개념 (42)
      • 실습 (23)
    • Spring Framework (33)
    • Spring Boot (10)
    • Spring Data (22)
      • JPA (14)
      • Query DSL (7)
      • Redis (1)
    • Spring Security (9)
    • Spring Batch (4)
    • MyBatis (10)
    • Front-End (51)
      • JS (27)
      • Vue.js (17)
      • React (5)
      • JQuery (0)
      • d3.js (2)
    • DBMS (24)
      • SQL, RDBMS (16)
      • MongoDB (5)
      • Redis (3)
    • Kafka (3)
    • 리눅스 (Linux) (4)
    • 디자인 패턴 (3)
    • VCS (8)
    • API (0)
    • TOOL (3)
    • Reading Book (28)
      • 이펙티브 자바 (11)
      • Clean Code (10)
      • 1분 설명력 (4)
      • HOW TO 맥킨지 문제해결의 기술 (3)
    • C# (4)
    • NSIS (6)
    • ETC (11)

블로그 메뉴

  • 홈
  • 태그

인기 글

태그

  • 환경 세팅
  • jsp
  • 이펙티브 자바
  • 스트림
  • controller
  • Dao
  • 회원 관리
  • servlet
  • 로그인
  • ubuntu
  • JDBC
  • Spring Batch
  • mybatis
  • 맥킨지
  • EC2
  • HTTP
  • 디자인 패턴
  • querydsl
  • JSTL
  • 게시판

최근 댓글

최근 글

hELLO· Designed By 정상우.
여승철

INTP 개발자

[SQL]DML(데이터 삽입 & 수정 & 삭제)
DBMS/SQL, RDBMS

[SQL]DML(데이터 삽입 & 수정 & 삭제)

2021. 8. 11. 02:35
반응형

📌 데이터 삽입 (INSERT)


데이터를 삽입하는 종류는 여러 개가 있다.

데이터 전체 행을 삽입하거나 일부만 삽입할 수 있고 SQL 결과문을 삽입할 수도 있다. 데이터 전체 행을 삽입하는 방법은 열 이름을 지정하지 않고 삽입하는 방법과 열 이름을 지정한 후 삽입하는 방법으로 나눌 수 있다. 열 이름을 지정하지 않고 삽입하는 방법은 코딩을 짧게 해도 된다는 장점이 있는 반면 데이터를 삽입하는 값의 순서가 변경될 경우 테이블이 망가질 수 있는 위험이 있다. 그에 반해 열 이름을 지정한 후 행전체를 삽입하는 방법은 열 이름을 지정하기 때문에 코딩을 길게 해야 한다는 단점이 있지만 순서에 따라 값 매칭이 잘되었는지 확인할 수 있고 오류도 적다. 행의 일부분만 삽입할 때도 동일한 문법을 사용한다. 'SELECT 열 이름 FROM 테이블명 WHERE 조건절;'을 사용하면 SQL 문장 결과 전체를 삽입할 수 있다. 

 

 

1.완전한 행 삽입

INSERT INTO 테이블명 VALUES(값1, 값2, 값3);

열 이름을 지정하지 않고 값을 삽입하는 방법

 

 

2.완전한 행 삽입 WITH 열 이름

INSERT INTO 테이블명(열 이름1, 열 이름2, 열 이름3) VALUES (값1,값2,값3);

열 이름을 지정한 후 값을 삽입하는 방법, 오류를 줄일 수 있는 효과적인 방법이다.

 

 

3.부분 행 삽입

INSERT INTO 테이블명(열 이름1, 열 이름3) VALUES(값1, 값3);

열 이름을 사용하여 완전한 행을 삽입한 것과 같이 열 이름을 지정하고 해당 열 이름에 매칭되는 값을 VALUES 키워드 뒤에 순서대로 적으면 된다.

 

 

4. SQL문장 결과를 삽입

INSERT INTO 테이블명1(열 이름1, 열 이름2, 열 이름3)
SELECT 열 이름1,열 이름2, 열 이름3 FROM 테이블명2 WHERE 조건절;

서브쿼리와 WHERE 절을 분리해서 조회한 후 DML을 실행한다.

DML명령어에서는 서브쿼리와 WHERE 절을 모두 사용할 수 있다. 서브쿼리를 사용하는 경우에는 메인 쿼리를 적용하기 전에 먼저 서브쿼리를 조회해서 의도한 결과가 나오는지 확인한다.

SQL 문장 결과 전체를 삽입하고 싶을 경우, VALUES 키워드 대신 'SELECT 열 이름 FROM 테이블명 WHERE 조건절;'을 적으면 된다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

📌데이터 삭제 (DELETE)


1. 테이블의 모든 행 삭제

DELETE FROM 테이블명;

데이터를 삭제할 때는 DELETE절을 사용하면된다.

 

 

 

2. 테이블의 부분 행 삭제

DELETE FROM 테이블명 WHERE 조건절;

--단일 행 삭제
DELETE FROM departments
WHERE department_name = 'Sample_Dept';

--서브쿼리를 이용해도 삭제할 수 있다.
DELETE FROM departments
WHERE department_id IN (SELECT dapartment_id
                        FROM departments
                        WHERE department_name = 'Sample_Dept')

테이블의 부분 행을 삭제할 때는 WHERE 조건절을 추가하면 된다.

 

테이블의 행을 삭제할 때는 DELETE절을 사용하는데 WHERE 조건절을 사용하지 않으면 데이터 전체가 삭제될 수 있기 때문에 단독으로 DELETE절을 사용할 때는 주의해야 한다.

SQL에서는 실행한 내용을 취소할 수 있는 기능이 없기 때문에 DELETE문을 사용할때 주의해야 한다!

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

📌데이터 수정 (UPDATE)


1.모든 행의 데이터 수정

UPDATE 테이블명 SET 열이름=변경할 값;

 

 

 

2.특정한 행의 데이터 수정

UPDATE 테이블명 SET 열이름=변경할 값 WHERE 조건절;

UPDATE문의 문법은 DELETE문과 같이 아주 간단하다. 또한 UPDATE문도 테이블 전체의 데이터를 변형시키는 명령어이기 때문에 사용할 때 조심해야 한다. 행 전체의 데이터를 변경할 때는 WHERE조건절을 사용하지 않고, 일부를 변경할 때는 WHERE조건절을 기재해야 한다.

 

 

 

3.SQL문장으로 데이터 수정

UPDATE 테이블 이름 --변경하려는 데이터가 있는 테이블
SET 열 이름1 [,열 이름2, ...]= --변경하려는 열
                                          (SELECT 열 이름1 [,열 이름2, ...]--변경하려는 데이터 값
                                           FROM 테이블 이름
                                           [WHERE 조건식])
[WHERE 조건식];

서브쿼리와 WHERE 절을 분리해서 조회한 후 DML을 실행한다.

DML명령어에서는 서브쿼리와 WHERE 절을 모두 사용할 수 있다. 서브쿼리를 사용하는 경우에는 메인 쿼리를 적용하기 전에 먼저 서브쿼리를 조회해서 의도한 결과가 나오는지 확인한다.

 

 

 

 

DML을 실행한 후 커밋을 필수이다.

데이터 값을 변경하면 커밋해야 한다. 커밋하기 전에 DML 작업이 잘못되었다면 롤백을 실행하여야 한다.

 

 

 

반응형

'DBMS > SQL, RDBMS' 카테고리의 다른 글

[SQL]데이터 무결성 & 트랜잭션 & 가상 테이블  (0) 2022.06.25
[SQL]DDL (테이블 생성 & 추가 & 수정 & 삭제)  (0) 2021.08.12
SQL 하위 쿼리(Sub-query)  (0) 2021.08.10
SQL 테이블 합치기 (조인과 집합)  (0) 2021.08.10
SQL 문자, 숫자, 날짜, COUNT, CASE WHEN, 데이터의 그룹화  (0) 2021.08.10
    여승철
    여승철

    티스토리툴바