혼자 공부하는 공간

[SQL기본 및 활용] 2020년 SQLD 내용 정리 :: SQL 기본 #3 본문

자격증/SQLD

[SQL기본 및 활용] 2020년 SQLD 내용 정리 :: SQL 기본 #3

god_z 2020. 8. 16. 15:43

<목차>

<< DML (Data Manipulation Language) >>

* DDL VS DML

- DDL(CREATE, ALTER, DROP, RENAME) 명령어
 : DB의 테이블에 직접 영향을 미치기 때문에 DDL 명령어를 실행하는 순간 해당 작업이 즉시 DB에 반영된다. (AUTO COMMIT)

 

- DML(INSERT, UPDATE, DELETE, SELECT) 명령어

 : 조작하려는 테이블을 메모리 버퍼에 올려놓고 작업을 하기 때문에 DDL처럼 실행하는 순간 DB에 즉시 반영되는 것이 아니다. 따라서 버퍼에서 처리한 DML 명령어가 실제 테이블에 반영되기 위해서는 COMMIT 명령어를 입력하여 TRANSACTION을 종료해야 한다.

 : DML 명령어 실행 후 COMMIT / ROLLBACK 작업을 하지 않은 상태에서 DDL 명령어를 실행시키면 이전의 DML 명령어도 AUTO COMMIT 된다.

---> SQL Server는 DML의 경우도 DB에 즉시 반영됨.

 

 모든 데이터를 삭제할 때 DELETE 보다 TRUNCATE가 시스템 부하가 적은 이유가 조작하려는 테이블을 메모리 버퍼에 올리지 않고 바로 실행시키기 때문이다.

ROLLBACK, COMMIT, TRANSACTION에 대한 자세한 내용은 뒤에서 다룰 예정이다.

 

1. INSERT

* 테이블에 데이터를 입력하는 명령으로 두 가지 방법이 존재.

* 데이터 유형이 CHAR/VARCHAR2 등의 문자 유형일 경우 ' (Single Quotation ; 작은 따옴표) 로 값을 입력하고 숫자일 경우는 붙히지 않는다.

  1. 모든 칼럼을 입력하는 경우
    * INSERT문에 칼럼의 리스트를 언급하지 않아도 됨.
    * 테이블에 정의된 칼럼의 순서에 맞춰서 입력해야 함.
    * 예시

     

    1
    2
     INSERT INTO PLAYER 
    VALUES ('2002010','이청용','K07','','BlueDragon','2002','MF','17',NULLNULL,'1',180,69);
    cs

     

  2. 특정 칼럼에 맵핑시켜 입력하는 경우(일부 칼럼만 입력 가능)
    * 테이블에 정의된 칼럼의 순서에 맞출 필요는 없지만, INSERT문에 작성한 칼럼의 수/순서/타입과 데이터의 수/순서/타입은 일치해야 함.
    * 정의하지 않은 칼럼에 대해서는 NULL 값이 입력됨. ---> NOT NULL 제약조건 있으면 에러 발생.
    ex) Oracle에서는 '' 도 NULL처리, SQL Server에서는 ''는 ''로 처리한다.

    * 예시

    1
    2
    INSERT INTO PLAYER (PLAYER_ID, PLAYER_NAME, TEAM_ID, POSITION, HEIGHT, WEIGHT, BACK_NO) 
    VALUES ('2002007''박지성''K07''MF'178737);
    cs

 

2. UPDATE

테이블의 데이터를 수정할 때 사용하는 명령.

  1. 예시 - 일괄적으로 변경

    1
    2
    UPDATE PLAYER 
    SET BACK_NO = 99;
    cs
  2. 예시 - 특정 데이터만 변경(WHERE 절 포함)

    1
    2
    3
    UPDATE PLAYER 
    SET BACK_NO = 99
    WHERE PLAYER_ID = '2002010';
     

 

3. DELETE

* 테이블의 데이터를 삭제할 때 사용하는 명령.

---> DELETE 뒤 FROM은 생략이 가능함.
* WHERE 절을 생략하면 테이블의 모든 데이터가 삭제되니 WHERE절을 반드시 사용하자.

  1. 예시

    1
    2
    DELETE FROM PLAYER
    WHERE PLAYER_ID = '2002010';
    cs

 

4. SELECT

입력한 데이터를 조회할 때 사용하는 명령

  1. 기본 형식
    * 예시

    1
    2
    SELECT PLAYER_ID, PLAYER_NAME, TEAM_ID, POSITION, HEIGHT, WEIGHT, BACK_NO 
    FROM PLAYER;
    cs
  2. ALL
    * Default 옵션으로 별도로 표시하지 않음.
    * 중복된 데이터도 모두 출력.
    * 예시

    1
    2
    3
    SELECT ALL POSITION 
    FROM PLAYER;
    -- POSITION의 값의 갯수만큼 출력
    cs
  3. DISTINCT
    * 중복된 데이터가 있는 경우 1건으로 처리해서 출력.
    * 예시

    1
    2
    3
    SELECT DISTINCT POSITION 
    FROM PLAYER;
    -- POSITION의 값 중에서 중복된 값들은 제외하고 출력 (GK, DF, FW, MF)
    cs
  4. 애스터리스크(*)
    * 모든 칼럼 정보를 조회할 때 와일드 카드로 애스터리스크(*) 사용.
    * 예시

    1
    2
    SELECT * FROM PLAYER;
    -- PLAYER 테이블의 데이터의 모든 칼럼 정보 출력
    cs
  5. ALIAS
    * 일종의 별명을 부여할 때 사용.
    * 칼럼명 바로 뒤에 위치.
    * 칼럼명과 별명 사이에 AS, as 키워드 사용할 수 있음. (선택적)
    * 별명에 공백이나 특수문자 포함 OR 대소문자 구분이 필요한 경우 " (Double Quotation ; 큰 따옴표)를 사용해야 함.
    * 예시

    1
    2
    3
    4
    5
    6
    -- AS 키워드는 선택적
    SELECT PLAYER_NAME AS 선수명, POSITION AS 위치, HEIGHT AS 키, WEIGHT AS 몸무게 
    FROM PLAYER;
     
    SELECT PLAYER_NAME 선수명, POSITION 위치, HEIGHT 키, WEIGHT 몸무게 
    FROM PLAYER;
    cs

     

    1
    2
    3
    -- 공백/특수문자 포함 OR 대소문자 구분하기 위해서는 큰 따옴표 
    SELECT PLAYER_NAME "선수 이름", POSITION "그라운드 포지션", HEIGHT "키", WEIGHT "몸무게" 
    FROM PLAYER;
    cs

 

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

    1. 산술연산자
      * NUMBER와 DATE 자료형에 대해 적용됨. ---> 수학의 사칙연산과 동일
      * LABEL이 길어지므로 ALIAS를 부여하는 것이 좋다.
      * 사칙연산에서의 우선순위와 동일한 우선순위를 가짐.

      산술 연산자의 종류

      * 예시

      1
      2
      3
      4
      SELECT PLAYER_NAME 이름, ROUND(WEIGHT/((HEIGHT/100)*(HEIGHT/100)),2"BMI 비만지수" 
      FROM PLAYER;
      -- ROUND(x) : x를 반올림하는 함수
      -- ROUND(WEIGHT/((HEIGHT/100)*(HEIGHT/100)),2) 로 LABEL이 길기 때문에 "BMI 비만지수"로 ALIAS 처리
      cs
    2. 합성 연산자
      * 문자와 문자를 연결할 때 사용.
      * Oracle - 두 개의 수직바(||)에 의해 연결, CONCAT(str1, str2) 함수로 연결
      * SQL Server - 더하기(+)에 의해 연결, CONCAT(str1, str2) 함수로 연결
      * 칼럼+칼럼 / 칼럼+문자로 자유롭게 연결이 가능
      * 예시 - Oracle

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      SELECT PLAYER_NAME || '선수,' || HEIGHT || 'cm,' || WEIGHT || 'kg' 체격정보 
      FROM PLAYER;
       
      /* 
      [출력]
      체격정보 (하나의 칼럼)
      AAA선수,170cm,70kg
      BBB선수,175cm,72kg
      CCC선수,172cm,69kg
      ....
      */
      cs

      * 예시 - SQL Server

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      SELECT PLAYER_NAME +'선수, '+ HEIGHT +'cm, '+ WEIGHT +'kg' 체격정보
      FROM PLAYER;
       
      /* 
      [출력]
      체격정보 (하나의 칼럼)
      AAA선수,170cm,70kg
      BBB선수,175cm,72kg
      CCC선수,172cm,69kg
      ....
      */
      cs

 

 

 

 

 

출처

http://www.dbguide.net/db.db?cmd=view&boardUid=148191&boardConfigUid=9&categoryUid=216&boardIdx=134&boardStep=1

 

데이터 전문가 지식포털 DBGuide.net

관계형 데이터베이스 개요 DDL DML TCL WHERE 절 함수(FUNCTION) GROUP BY, HAVING 절 ORDER BY 절 조인(JOIN) 앞 절에서 테이블을 생성하고 생성된 테이블의 구조를 변경하는 명령어에 대해서 알아보았다. 지금��

www.dbguide.net

질문은 댓글로 남겨주시면 되겠습니다. 감사합니다.

Comments