ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • SQL (Query문)
    스프링 2023. 4. 14. 23:46

    Database : Database를 한 마디로 정의하면 ‘데이터의 집합라고 할 수 있습니다.

     

    DBMS       : Database를 관리하고 운영하는 소프트웨어를 의미합니다.  (Database Management System)

     

    RDBMS : RDBMS는 ‘Relational DBMS’의 약자로 관계형 데이터베이스라고 불립니다.

    RDBMS는 테이블(table)이라는 최소 단위로 구성되며, 이 테이블은 열(column)과 행(row)으로 이루어져 있습니다.

      열(column) 열(column) 열(column) 열(column) 열(column)
    행(row)          
    행(row)          

    사용할 RDBMS

     

    H2   :   H2를, 앞으로 연습용으로 사용할 것입니다. 인메모리 DB란 서버가 작동하는 동안에만 내용을 저장하고, 서버가 작              동을 멈추면 데이터가 모두 삭제되는 데이터베이스를 말합니다.

     

    MySQL   :  MySQL은 우리가 서비스를 배포할 때 사용할 데이터베이스입니다. 


    SQL

     

    SQL은 ‘Structured Query Language’ 의 약자로 RDBMS에서 사용되는 언어입니다. 수 많은 정보를 Database에서 조작하고 관리하기 위해서는 SQL 언어를 사용해야합니다.

     

    DDL  :  Data Definition Language’ 의 약자로 테이블이나 관계의 구조를 생성하는데 사용합니다   (테이블 생성)

    DCL    :    ‘Data Control Language 의 약자로 데이터의 사용 권한을 관리하는데 사용합니다.(권한주기)

    DML   :  Data Manipulation Language 의 약자로 테이블에 데이터를 검색, 삽입, 수정, 삭제하는데 사용합니다.


     

    DDL  :  ‘Data Definition Language’ 의 약자로 테이블이나 관계의 구조를 생성하는데 사용합니다   (테이블 생성)

     

     

    CREATE : 새로운 데이터베이스 및 테이블을 생성해 줍니다.

     

    CREATE DATABASE 데이터베이스이름;
    CREATE TABLE 테이블이름
    (
    필드이름1 필드타입1,
        필드이름2 필드타입2,
        ...
    );

     

     

     

    ALTER : 데이터베이스와 테이블의 내용을 수정할 수 있습니다.

     

    ALTER TABLE 테이블이름 ADD 필드이름 필드타입;
    ALTER TABLE 테이블이름 DROP 필드이름;
    ALTER TABLE 테이블이름 MODIFY COLUMN 필드이름 필드타입;

     

     

     

    DROP : 데이터베이스와 테이블을 삭제할 수 있습니다. 데이터 및 테이블 전체를 삭제합니다.

     

    DROP DATABASE 데이터베이스이름;
    DROP TABLE 테이블이름;

     

     

     

    TRUNCATE : 데이터베이스와 테이블을 삭제할 수 있습니다. 최초 테이블이 만들어졌던 상태 즉, 컬럼값만 남깁니다.

     

    TRUNCATE DATABASE 데이터베이스이름;
    TRUNCATE TABLE 테이블이름;


    DCL    :    ‘Data Control Language의 약자로 데이터의 사용 권한을 관리하는데 사용합니다.

     

     

     

    GRANT : 사용자 또는 ROLE에 대해 권한을 부여할 수 있습니다.

     

    GRANT [객체권한명] (컬럼)
    ON [객체명]
    TO { 유저명 | 롤명 | PUBLC} [WITH GRANT OPTION];

    //ex
    GRANT SELECT ,INSERT 
    ON mp
    TO scott WITH GRANT OPTION;

     

     

     

     

    REVOKE : 사용자 또는 ROLE에 부여한 권한을 회수할 수 있습니다.

     

    REVOKE { 권한명 [, 권한명...] ALL}
    ON 객체명
    FROM {유저명 [, 유저명...] | 롤명(ROLE) | PUBLIC} 
    [CASCADE CONSTRAINTS];

    //ex
    REVOKE SELECT , INSERT
    ON emp
    FROM scott
    [CASCADE CONSTRAINTS];


    DML   :  ‘Data Manipulation Language의 약자로 테이블에 데이터를 검색, 삽입, 수정, 삭제하는데 사용합니다.

     

     

    INSERT : 테이블에 새로운 row를 추가할 수 있습니다.

    INSERT INTO 테이블이름(필드이름1, 필드이름2, 필드이름3, ...) VALUES(데이터값1, 데이터값2, 데이터값3, ...);
    INSERT INTO 테이블이름 VALUES(데이터값1, 데이터값2, 데이터값3, ...);

     

     

    SELECT : 테이블의 row를 선택할 수 있습니다.

    SELECT 필드이름 FROM 테이블이름 [WHERE 조건];

     

     

    UPDATE : 테이블의 row의 내용을 수정할 수 있습니다.

    UPDATE 테이블이름 SET 필드이름1=데이터값1, 필드이름2=데이터값2, ... WHERE 필드이름=데이터값;

     

     

    DELETE : 테이블의 row를 삭제할 수 있습니다.

    DELETE FROM 테이블이름 WHERE 필드이름=데이터값;


    SQL 연습하기

     

    AUTO_INCREMENT : 컬럼의 값이 중복되지 않게 1씩 자동으로 증가하게 해줘 고유번호를 생성해 줍니다.

     

    CREATE TABLE 테이블이름
    (
        필드이름 필드타입 AUTO_INCREMENT,
        // id bigint AUTO_INCREMENT,
        ...
    );

     

    NOT NULL : 해당 필드는 NULL 값을 저장할 수 없게 됩니다.

     

    CREATE TABLE 테이블이름
    (
        필드이름 필드타입 NOT NULL,
        ...
    );

     

    UNIQUE : 해당 필드는 서로 다른 값을 가져야만 합니다.

     

    CREATE TABLE 테이블이름
    (
        필드이름 필드타입 UNIQUE,
        ...
    );

     

    PRIMARY KEY : 해당 필드가 NOT NULL과 UNIQUE 제약 조건의 특징을 모두 가지게 됩니다.

     

    CREATE TABLE 테이블이름
    (
        필드이름 필드타입 PRIMARY KEY,
        ...
    );

     

    FOREIGN KEY : 하나의 테이블을 다른 테이블에 의존하게 만들며 데이터의 무결성을 보장해 줍니다.

    (FK 를 가지는 테이블이 참조하는 기준 테이블의 열은 반드시 PK, UNIQUE 제약조건이 설정되어 있어야 합니다.)

     

    CREATE TABLE 테이블이름
    (
        필드이름 필드타입,
        ...
    FOREIGN KEY(필드이름)
        REFERENCES 테이블이름(필드이름)
    );

     

    CASCADE : FOREIGN KEY 로 연관된 데이터를 삭제,변경할 수 있습니다.

     

    CREATE TABLE 테이블이름
    (
        필드이름 필드타입,
        ...
    FOREIGN KEY(필드이름)
        REFERENCES 테이블이름(필드이름) ON DELETE CASCADE 
     //ON UPDATE CASCADE
    );

     

     

Designed by Tistory.