[SQL] DML (Data Manipulation Language)

아래의 명령어들은 모두 Oracle 의 SQL 명령어이다. (SQL Server 명령어의 경우 따로 표시)

👑 DML

DML (Data Manipulation Language) 는 테이블에 자료들을 입력, 수정, 삭제, 조회가

가능하도록 하는 명령어이다.


👑 INSERT

  • 테이블에 데이터를 입력하는 명령어이며, 두 가지 유형이 존재한다.

  • 자료형이 CHAR 또는 VARCHAR2 등의 문자 유형인 경우 ' (Single Quotation) 을 사용한다.

  • 숫자일 경우 Single Quotation 을 사용하지 않는다.

  • 데이터 입력 시 정의되지 않은 값을 ''로 표현하거나, NULL 이라고 명시적으로 표현할 수 있다.

-- 1번 방법
INSERT INTO 테이블명 (COLUMN_LIST)
VALUES (VALUE_LIST);

-- e.g.
INSERT INTO TABLE (TEAM_ID, STADIUM_ID, TEAM_NAME)
VALUES ('T01', 'S01', 'Liverpool');

-- 2번 방법
INSERT INTO 테이블명
VALUES (전체 VALUE_LIST);

-- e.g.
INSERT INTO TABLE
VALUES ('T02', 'Chelsea', 'London', 'S02', '');
  • 1번 방법의 경우 데이터를 입력할 칼럼의 일부를 적고 그 칼럼들에 대한 데이터를 넣는 방법이다.

  • 칼럼의 순서는 테이블의 칼럼 순서와 일치하지 않아도 되며, 정의되지 않은 칼럼은 NULL이 입력된다.

  • 2번 방법의 경우 모든 칼럼에 데이터를 입력하는 방법으로, COLUMN_LIST를 쓸 필요가 없다.


👑 UPDATE

  • 입력한 데이터 중 수정을 해야 하는 경우 UPDATE 명령어를 사용한다.
UPDATE 테이블명
SET 수정할 칼럼명 = 새로운 ;

-- e.g.
UPDATE TEAM
SET TEAM_ID = 'T01'; -- 팀 테이블의 모든 팀코드를 'T01'로 수정


👑 DELETE

  • 테이블의 데이터가 필요 없게 될 경우 데이터 삭제를 수행하는 명령어이다.

  • WHERE 절을 사용하지 않을 시에 테이블의 전체 데이터를 삭제한다.

DELETE [FROM] 테이블명; -- FROM은 생략이 가능한 키워드

e.g.
DELETE FROM TEAM;
  • DDL 명령어와 DML 명령어는 처리하는 방식에 차이가 있다.

  • DDL 의 경우 명령어를 입력하는 순간 해당 작업이 즉시 (AUTO COMMIT) 완료된다.

  • DML 의 경우 조작하는 테이블을 메모리 버퍼에 올려놓고 작업을 하기에 실시간으로 테이블에
    영향을 끼치지는 않는다. 따라서 실제 테이블에 반영시키기 위해 COMMIT 명령어를 통해
    TRANSACTION을 종료해야 한다.

  • SQL Server의 경우에는 DMLAUTO COMMIT으로 처리함 → COMMIT 명령어 필요 X

  • DELETE는 삭제된 데이터를 로그로 저장하지만, TRUNCATE는 로그를 남기지 않는다.
    (SQL Server 에서는 TRUNCATEROLLBACK 문으로 복구 가능)


👑 SELECT

  • 사용자가 입력한 데이터를 조회하는 명령어이다.
SELECT [ALL/DISTINCT] 칼럼명1, 칼럼명2, ...
FROM 해당 칼럼들의 테이블명;

-- ALL : Default 옵션 (따로 표시 안해도 O, 중복 데이터도 모두 출력)
-- DISTINCT : 중복된 데이터가 있는 경우 1건으로 처리하여 출력

-- e.g.
SELECT TEAM_ID, TEAM_NAME
FROM TEAM;

💡 WILDCARD

  • WILDCARD (*) 를 통해 테이블의 모든 칼럼 정보를 조회할 수 있다.
SELECT * FROM 테이블명;


💡 ALIAS

  • 칼럼에 별명을 부여해서 조회되는 결과의 칼럼 레이블을 변경할 수 있다.

  • 칼럼명 바로 뒤에 위치하며, AS 키워드를 사용할 수도 있다. (사용 안해도 O)

  • 별명 중간에 공백이 있는 경우 " " 를 사용해야 한다.
    (SQL Server의 경우 " ", ' ', [ ] 의 3가지 방식 사용 가능)

e.g.
SELECT TEAM_ID 팀코드, TEAM_NAME AS 팀이름, FOUNDED_YEAR AS "창단 연도"
FROM TEAM;


👑 산술 연산자

  • NUMBER, DATE 자료형에 적용된다.

  • (), *, /, +, - 존재

  • 수학에서와 같은 우선순위를 가지며, 우선순위를 위한 괄호 사용이 가능하다.

SELECT PLAYER_NAME, HEIGHT - WEIGHT AS "키 - 몸무게"
FROM PLAYER;


👑 합성 연산자

  • 문자와 문자를 연결하는 연산자이다.

  • Oracle 의 경우 | | 로 사용하며, SQL Server 의 경우 + 로 사용한다.

  • 두 벤더 모두 CONCAT 함수를 사용할 수 있다.

  • 칼럼과 문자 or 칼럼과 다른 칼럼을 연결할 수 있다.

  • 새로운 칼럼을 생성한다.

SELECT TEAM_NAME || ' 의 창단연도는' || FOUNDED_YEAR || '년이다.' 팀정보
FROM TEAM;

Categories:

Updated:

Leave a comment