[프로그래밍 기록] Spring - SQL

김엄지·2024년 3월 24일
0

Spring

목록 보기
13/21

SQL란?

  • SQL(Structured Query Language)의 약자로 RDBMS에서 사용되는 언어이다.
  • 수 많은 정보를 Database에서 조작하고 관리하기 위해서는 SQL 언어를 사용해야한다.

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 필드이름=데이터값;

CREATE 제약조건

  • 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
    );

    CREATR, ALTER, INSERT, UPDATE, DELETE, SELECT, JOIN

  • JOIN은 나누어진 테이블을 하나로 합치기 위해 데이터베이스가 제공하는 기능이다.

    • JOIN 은 ON 이라는 키워드를 통해 기준이 되는 컬럼을 선택하여 2개의 테이블을 합쳐 준다.
    • JOIN을 할 때에는 적어도 하나의 컬럼을 서로 공유하고 있어야 하기 때문에 테이블에 외래 키가 설정 되어 있다면 해당 컬럼을 통해 JOIN을 하면 조건을 충족할 수 있다.
profile
나만의 무언가를 가진 프로그래머가 되자

0개의 댓글