[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의 경우에는DML도AUTO COMMIT으로 처리함 →COMMIT명령어 필요 X -
DELETE는 삭제된 데이터를 로그로 저장하지만,TRUNCATE는 로그를 남기지 않는다.
(SQL Server 에서는TRUNCATE도ROLLBACK문으로 복구 가능)
👑 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;
Leave a comment