SQL ???

David Jeon·2022년 12월 15일
1
post-thumbnail

1. SQL 이란?

  • Structured Query Language(구조적 질의 언어)의 약어로 관계형 데이터베이스 시스템(RDBMS)을 제어하는 언어입니다.

2. SQL의 3가지 분류

  • DDL(Data Definition Language, 데이터 정의어)
    DB Object(Table, Column, Index, Function, Trigger, Stored Procs, etc..)를 생성, 삭제, 변경할 수 있으며, DB 설계 단계에서 사용합니다.
    • CREATE, DROP, ALTER, ...
  • DML(Data Manipulation Language, 데이터 조작어)
    DB를 조회, 삽입, 삭제, 변경하는 역할을 하며, Data 관리 목적의 쿼리문입니다.
    • SELECT, INSERT, UPDATE, DELETE
  • DCL(Data Control Language, 데이터 제어어)
    사용자의 권한을 관리하는 역할을 합니다.
    • GRANT, REVOKE, DENY, ...

3.1 Data Type

3.1.1 String Type

3.1.2 Number Type

3.1.3 Date Type

3.1.3.1 Date Type의 표현 방식

3.2 예약어

  • MySQL 예약어 목록

4. SQL 교육을 위한 DB Sample

5. DDL(Data Dafenition Language)

  • DDL 명령어 : SHOW, CREATE, DROP, ALTER, USE, DESC, RENAME

5.1 Table 생성

5.1.1 Table 생성

상기 DB Sample 이미지의 TEST_DB.PLAYER 테이블의 생성 스크립트

-- COUNTRY Table Create SQL
-- 테이블 생성 SQL - COUNTRY
CREATE TABLE COUNTRY
(
    `C_CODE`  CHAR(3)        NOT NULL    COMMENT '국가코드', 
    `C_NAME`  VARCHAR(45)    NOT NULL    COMMENT '국가명', 
     PRIMARY KEY (C_CODE)
);


-- PLAYER Table Create SQL
-- 테이블 생성 SQL - PLAYER
CREATE TABLE PLAYER
(
    `P_ID`      INT            NOT NULL    AUTO_INCREMENT COMMENT '선수 아이디', 
    `C_CODE`    CHAR(3)        NOT NULL    COMMENT '국가코드', 
    `P_NAME`    VARCHAR(45)    NOT NULL    COMMENT '선수명', 
    `POSITION`  VARCHAR(45)    NOT NULL    COMMENT '포지션', 
    `HEIGHT`    INT            NOT NULL    COMMENT '키', 
    `REG_DATE`  DATETIME       NOT NULL    COMMENT '등록일', 
     PRIMARY KEY (P_ID)
);

-- Foreign Key 설정 SQL - PLAYER(C_CODE) -> COUNTRY(C_CODE)
ALTER TABLE PLAYER
    ADD CONSTRAINT FK_PLAYER_C_CODE_COUNTRY_C_CODE FOREIGN KEY (C_CODE)
        REFERENCES COUNTRY (C_CODE) ON DELETE RESTRICT ON UPDATE RESTRICT;

-- Foreign Key 삭제 SQL - PLAYER(C_CODE)
-- ALTER TABLE PLAYER
-- DROP FOREIGN KEY FK_PLAYER_C_CODE_COUNTRY_C_CODE;


-- PRE_MATCH Table Create SQL
-- 테이블 생성 SQL - PRE_MATCH
CREATE TABLE PRE_MATCH
(
    `M_ID`        INT         NOT NULL    AUTO_INCREMENT COMMENT '매치 아이디', 
    `C_CODE1`     CHAR(3)     NOT NULL    COMMENT '국가코드 1', 
    `C_CODE2`     CHAR(3)     NOT NULL    COMMENT '국가코드 2', 
    `M_DAY`       DATETIME    NOT NULL    COMMENT '경기일', 
    `WIN_C_CODE`  CHAR(3)     NULL        COMMENT '승리 국가코드', 
    `REG_DATE`    DATETIME    NOT NULL    COMMENT '등록일', 
     PRIMARY KEY (M_ID)
);


-- GOLE Table Create SQL
-- 테이블 생성 SQL - GOLE
CREATE TABLE GOLE
(
    `G_SEQ`     INT            NOT NULL    AUTO_INCREMENT COMMENT '골 순번', 
    `M_ID`      INT            NOT NULL    COMMENT '매치 아이디', 
    `P_ID`      INT            NOT NULL    COMMENT '선수 아이디', 
    `G_TIME`    VARCHAR(45)    NOT NULL    COMMENT '골 시간', 
    `REG_DATE`  DATETIME       NOT NULL    COMMENT '등록일', 
     PRIMARY KEY (G_SEQ)
);

6. DML(Data Manipulication Language)

  • DML 명령어 : INSERT, SELECT, UPDATE, DELETE

INSERT INTO player( c_code, height, p_name, POSITION, REG_DATE)
VALUE( 'KOR',195, '이운재', 'GK', NOW() );
INSERT INTO player( c_code, height, p_name, POSITION, REG_DATE)
VALUE( 'KOR',187, '차두리', 'CF', NOW() );
INSERT INTO player( c_code, height, p_name, POSITION, REG_DATE)
VALUE( 'KOR',179, '최성용', 'MF', NOW() );
INSERT INTO player( c_code, height, p_name, POSITION, REG_DATE)
VALUE( 'KOR',177, '이천수', 'FW', NOW() );
INSERT INTO player( c_code, height, p_name, POSITION, REG_DATE)
VALUE( 'KOR',179, '이영표', 'DF', NOW() );
INSERT INTO player( c_code, height, p_name, POSITION, REG_DATE)
VALUE( 'KOR',176, '안정환', 'MF', NOW() );
INSERT INTO player( c_code, height, p_name, POSITION, REG_DATE)
VALUE( 'KOR',176, '설기현', 'FW', NOW() );
INSERT INTO player( c_code, height, p_name, POSITION, REG_DATE)
VALUE( 'KOR',176, '홍명보', 'DF', NOW() );

INSERT INTO player( c_code, height, p_name, POSITION, REG_DATE)
VALUE( 'ITA',183, '지안루이지 부폰', 'MF', NOW() );
INSERT INTO player( c_code, height, p_name, POSITION, REG_DATE)
VALUE( 'ITA',195, '크리스티안 파누치', 'GK', NOW() );
INSERT INTO player( c_code, height, p_name, POSITION, REG_DATE)
VALUE( 'ITA',187, '파올로 말디니', 'CF', NOW() );
INSERT INTO player( c_code, height, p_name, POSITION, REG_DATE)
VALUE( 'ITA',179, '프란체스코 코코', 'MF', NOW() );
INSERT INTO player( c_code, height, p_name, POSITION, REG_DATE)
VALUE( 'ITA',188, '파비오 칸나바로', 'FW', NOW() );
INSERT INTO player( c_code, height, p_name, POSITION, REG_DATE)
VALUE( 'ITA',189, '크리스티아노 자네티', 'DF', NOW() );
INSERT INTO player( c_code, height, p_name, POSITION, REG_DATE)
VALUE( 'ITA',194, ' 알레산드로 델 피에로', 'MF', NOW() );

INSERT INTO player( c_code, height, p_name, POSITION, REG_DATE)
VALUE( 'BRA',202, '마르코스', 'GK', NOW() );
INSERT INTO player( c_code, height, p_name, POSITION, REG_DATE)
VALUE( 'BRA',195, '카푸', 'CF', NOW() );
INSERT INTO player( c_code, height, p_name, POSITION, REG_DATE)
VALUE( 'BRA',186, '페레이라 루시우', 'FB', NOW() );
INSERT INTO player( c_code, height, p_name, POSITION, REG_DATE)
VALUE( 'BRA',178, '에드미우송', 'FW', NOW() );
INSERT INTO player( c_code, height, p_name, POSITION, REG_DATE)
VALUE( 'BRA',172, '호케 주니오르', 'DF', NOW() );
INSERT INTO player( c_code, height, p_name, POSITION, REG_DATE)
VALUE( 'BRA',177, '호나우지뉴', 'FW', NOW() );
INSERT INTO player( c_code, height, p_name, POSITION, REG_DATE)
VALUE( 'BRA',176, ' 카를로스', 'MF', NOW() );

6.2 Select 문

SELECT * FROM TEST_DB.PLAYER;
SELECT LENGTH(p_id) FROM PLAYER;

6.3 Update 문

UPDATE player
SET height = 188
WHERE p_id = '001';

6.4 Delete 문

DELETE FROM TEST_DB.PLAYER
WHERE p_id = '001';

7. DCL(Data Control Language)

  • DCL 명령어 : GRANT, REVOKE, COMMIT, ROLLBACK

COMMIT;
ROLLBACK;
SET AUTOCOMMIT=FALSE;
TRUNCATE TABLE player;
profile
코딩이 즐거운 아저씨

0개의 댓글