체다의 기록

[SQLD] 2과목: SQL 기본 및 활용 - Chapter1. SQL 기본 - (3) DML (Data Manipulation Language) 본문

STUDY

[SQLD] 2과목: SQL 기본 및 활용 - Chapter1. SQL 기본 - (3) DML (Data Manipulation Language)

체다오니 2022. 10. 23. 23:31
  • DML
    • 호스트 프로그램 속에 삽입되어 사용 -> 데이터 부속어 (Data Sub Language)라고도 함
    • Procedural DML (절차적 데이터 조작어) : 초급언어니까 다 알려줘야 함
      • 사용자가 무슨 데이터 (what) 원하고 어떻게 (how) 접근해 처리할 것인지 명시해야 함
    • Nonprocedural DML (비절차적 데이터 조작어) : 고급언어니까 어떻게 하는지 알려줄 필요 x
      • 사용자가 무슨 데이터 (what) 원하는지만 명세하고 어떻게 (how) 접근할 것인지는 x
      • 사용자가 원하는 데이터만 선언하기 떄문에 선언적 언어 (declarative language)라고도 함

 

1. INSERT

  • 테이블에 데이터를 입력하는 명령어
  • 주의사항: 데이터가 문자형일 경우 ' ' (single quotation)으로 묶어서 입력
INSERT INTO 테이블명 (칼럼명1, 칼럼명2, ...) VALUES (데이터1, 데이터2, ...);
  • 이 경우 명시되지 않은 칼럼에는 NULL값이 입력되는데 PK나 NOT NULL 제약조건이 걸린 칼럼에는 NULL값이 입력될 수 없으니 주의해야 한다.
INSERT INTO 테이블명 VALUES (전체 칼럼에 입력될 데이터 리스트);
  • 이 경우 전체 칼럼에 대한 데이터가 테이블의 칼럼 순서대로 빠짐없이 나열되어야 하는데 순서가 뒤바뀌어 데이터 유형이 맞지 않거나 누락된 데이터가 있어 전체 칼럼 갯수와 맞지 않았을 경우 에러 발생

 

 

2. UPDATE

  • 이미 저장된 데이터를 수정하고 싶을 때 사용하는 명령어
  • WHERE절이 없으면 테이블의 모든 Row가 변경되니 주의 필요
UPDATE 테이블명 SET 칼럼명=새로운 데이터 WHERE 수정할 데이터에 대한 조건;

 

3. DELETE

  • 이미 저장된 데이터를 삭제하고 싶을 때 사용하는 명령어
  • WHERE절이 없으면 테이블의 모든 Row가 삭제되니 주의 필요
DELETE FROM 테이블명 WHERE 삭제할 데이터에 대한 조건;

 

 

4. SELECT

<중복 데이터 모두 출력 (기본 옵션)>
SELECT * FROM 테이블명;
SELECT ALL FROM 테이블명;

<중복 제거 (중복인건 하나로 통일하여 출력)>
SELECT DISTINCT 중복제거칼럼 FROM 테이블명;

 

 

5. MERGE

  • 테이블에 새로운 데이터를 입력하거나 이미 저장되어 있는 데이터에 대한 변경 작업을 한 번에 할 수 있도록 해주는 명령어
MERGE 
INTO 타겟 테이블명
USING 비교 테이블명
ON 조건
WHEN MATCHED THEN
UPDATE
SET 칼럼명=새로운 데이터 [, 칼럼명=새로운 데이터...]
WHEN NOT MATCHED THEN
INSERT [(칼럼명1, 칼럼명2,...)]
VALUES (데이터1, 데이터2, ...);

 

 

  • 산술 연산자 우선 순위
    1. ()
    2. *
    3. /
    4. +
    5. -

 

  • 합성 연산자
    • 문자와 문자를 연결
    • Oracle: ||
    • SQL Server: +
<Oracle>
SELECT name ||'선수', position ||'포지션', back_number ||'번' FROM Player WHERE id=2002007;

=> 박지성선수MF포지션7번

 

  • 삭제 SQL 비교 정리
DROP TABLE 테이블명 TRUNCATE TABLE 테이블명 DELETE FROM 테이블명
DDL DDL (일부 DML 성격 가짐) DML
Auto Commit (DDL 이니까) Auto Commit (DDL 이니까) 사용자 Commit
ROLLBACK 불가 ROLLBACK 불가 Commit 전 ROLLBACK 가능
테이블의 모든 데이터 삭제 테이블의 모든 데이터 삭제 테이블의 모든 데이터 삭제
디스크 초기화 (=로그 제거) 디스크 초기화 (=로그 제거) 디스크 초기화 x (=로그 유지)
스키마 정의까지 싹 다 삭제 테이블 스키마 구조 유지 테이블 스키마 구조 유지

 

반응형