티스토리 뷰

SQL/SQLD 2과목

SQLD - 과목2. (3) DML

채애 2021. 3. 5. 17:16

▷ DDL : 테이블을 생성하고 생성된 테이블의 구조를 변경하는 명령어

DML : 테이블에 관리할 자료들을 입력, 수정, 삭제, 조회하는 명령어

            ( Data Manipulation Language )

 

[SQL/SQLD 2과목] - SQLD - 과목2. (2) DDL

 

SQLD - 과목2. (2) DDL

1. 데이터 유형 ▷ 데이터 유형 : 데이터베이스의 테이블에 특정 자료를 입력할 때, 그 자료를 받아들일 공간을 자료의 유형별로 나누는 기준이다. 선언한 유형이 아닌, 다른 종류의 데이터가 들

chae-developer.tistory.com

 


1. INSERT

 

테이블에 데이터를 입력하는 방법 ( 2가지 )

(1) INSERT INTO 테이블명 (COLUNM_LIST) VALUES (COLUMN_LIST에 넣을 VALUE_LIST);

(2) INSERT INTO 테이블명 VALUES (전체 COLUMN 에 넣을 VALUE_LIST);

 

칼럼명과 입력 값을 서로 1:1 매핑해서 입력한다.

해당 칼럼의 데이터 유형이 문자 유형 (CHAR or VARCHAR2 등) 이면 ' ' (Single Quotation) 로 입력할 값을 입력한다.

숫자 유형이면 ' ' 을 붙이지 않는다.

데이터를 입력하는 경우 정의되지 않은 미지의 값은 두개의 '' (Single Quotation) 을 붙여서  표현하거나, NULL 이라고 명시적으로 표현할 수 있다.

 

 

(1) 유형의 경우

칼럼의 순서는 테이블의 칼럼 순서와 매치할 필요 없다.

정의하지 않은 칼럼은 Default 로 NULL 값이 입력된다.

( Primary Key 나 NOT NULL 지정된 칼럼은 NULL 값이 허용되지 않는다. )

 

(2) 유형의 경우

이 경우, 모든 칼럼에 데이터를 입력하는 경우로 칼럼의 순서대로 빠짐없이 데이터가 입력되어야 한다.

 

 

 

 

 


2. UPDATE

입력된 정보를 수정해야 하는 경우 사용하는 UPDATE 문장.

SET 다음에 수정되어야 할 칼럼명과 해당 칼럼에 수정될 값으로 수정이 된다.

 

UPDATE 테이블명 SET 수정할 칼럼명 = 새로운 값

 

(예시)

UPDATE PLAYER SET NUMBER = 99;

PLAYER 테이블의 NUMBER 칼럼 값이 99로 수정된다.

 

 

 

 


3. DELETE

DELETE 문장은 데이터 삭제를 할 때 사용한다.

FROM 문구는 생략 가능하고, WHERE 절을 사용하지 않으면 테이블의 전체 데이터가 삭제된다.

 

DELETE [FROM] 테이블명 [WHERE절];

 

데이터베이스는 DDL 명령어와 DML 명령어를 처리하는 방식에서 차이가 있다.

 

DDL ( CREATE, ALTER, RENAME, DROP ) 은 직접 데이터베이스의 테이블에 영향을 미치기 때문에, DDL 명령어에 해당하는 작업이 즉시 완료된다.

 

하지만, DML ( INSERT, UPDATE, DELETE, SELECT ) 은 조작하려는 테이블을 메모리 버퍼에 올려놓고 작업을 해서 실시간으로 테이블에 영향을 미치지 않는다.

따라서, DML 명령어가 실제 테이블에 반영되기 위해 COMMIT 명령어를 입력하여 TRANSACTION 을 종료해야 한다.

 

 

 

< SQL Server >

DML의 경우도 즉시 처리되기 때문에 COMMIT 명령어가 필요없다.

테이블의 전체 데이터를 삭제하는 경우, 시스템 활용 측면에서 삭제된 데이터를 로그로 저장하는 DELETE 보다는 시스템 부하가 적은 TRUNCATE 이 좋다.

 

TRUNCATE : 삭제된 데이터의 로그가 없으모로 ROLLBACK이 불가능하므로 주의 필요. 

                데이터 삭제 이후 오류가 발견되어 다시 복구를 하려면 ROLLBACK 문을 이용하여 테이블 데이터를 원 상태로 되돌릴 수 있다.

 

 

 


4. SELECT

입력한 데이터를 조회하기 위한 명령어.

조회할 칼럼명을 콤마 ( , ) 로 구분하고, FROM 다음에 해당 칼럼이 존재하는 테이블명을 입력한다.

 

SELECT [ALL/DISTINCT] 칼럼명, 칼럼명, ... FROM 해당 칼럼이 있는 테이블명;


▷ ALL : Default 옵션이므로 별도 표시 X
           중복한 데이터도 모두 출력

 


 DISTINCT : 중복된 데이터가 있으면 1건으로 처리 후 출력

 

 

▷ WILDCARD : 해당 테이블의 모든 칼럼 정보를 보려고 할 때 와일카드로 애스터리스크(*) 를 사용하여 조회

SELECT * FROM 테이블명;

 

 

레이블은 기본적을 대문자로 표시되며, 좌측 정렬 (문자 및 날짜 데이터) / 우측 정렬 (숫자 데이터) 로 정렬된다.

 

▷ ALIAS 부여 : 일종의 별명(ALIAS, ALIASES) 을 부여해서 칼럼 레이블을 변경할 수 있다.

                     (1) 칼럼명 바로 뒤에 온다

                     (2) 칼럼명과 ALIAS 사이에 as 키워드를 사용한다.

                     (3) 이중 인용부호(Double quotation) 는 ALIAS 가 공백, 특수문자를 포함하거나 대소문자 구분이 필요할 경우 사용된다.

SELECT PLAYER_NAME AS 선수명, POSITION AS 위치, HEIGHT AS 키, WEIGHT AS 몸무게 FROM PLAYER;

# OUTPUT
선수명  위치  키  몸무게
________________________
KIM     MF   175  65

* 칼럼 별명 중간에 공백이 들어가는 경우 " " 를 사용한다.

SQL Server 의 경우 " " , ' ' , [ ] 의 3가지 방식으로 별명을 부여한다.

SELECT PLAYER_NAME "선수명", POSITION "위치", HEIGHT "키", WEIGHT "몸무게" FROM PLAYER;

# OUTPUT
선수명  위치  키  몸무게
________________________
KIM     MF   175  65

 

 

 

 

 

 


5. 산술 연산자와 합성 연산자

▷ 산술 연산자

    : NUMBER 와 DATE 자료형에 대해 적용된다. 우선순위를 위한 괄호 적용이 가능하다.

     산술 연산을 사용하면 적절한 ALIAS 를 새로 부여하는 것이 좋다.

     우선순위 → ( ) , * , / , + , - 

 

산술 연산자의 종류

 

 

 

▷ 합성 연산자

    : ( CONCATENATION )

     문자 - 문자 를 연결하는 합성 연산자를 사용하여 SQL 문장만으로 리포트를 출력한다.

     CONCAT ( string1, string2 ) 함수 사용 가능하다.

 

     * Oracle

       2개의 수직 바 ( || ) 를 사용한다.

 

     * SQL Server

       ( + ) 표시를 사용한다.

Oracle
SELECT PLAYER_NAME || '선수,' || HEIGHT || 'cm,' || WEIGHT || 'kg' 체격정보 FROM PLAYER;

SQL Server
SELECT PLAYER_NAME + '선수,' + HEIGHT + 'cm,' + WEIGHT + 'kg' 체격정보 FROM PLAYER;


# OUTPUT
체격정보 KIM선수,175cm,65kg

 

 

 

 

 

 


 

'SQL > SQLD 2과목' 카테고리의 다른 글

SQLD - 과목2. (6) 함수 (FUNCTION)  (0) 2021.03.16
SQLD - 과목2. (5) WHERE 절  (0) 2021.03.11
SQLD - 과목2. (4) TCL  (0) 2021.03.08
SQLD - 과목2. (2) DDL  (0) 2021.03.03
SQLD - 과목2. (1) 데이터베이스  (0) 2021.02.28
댓글