SQL과 명령 종류에 대해 알아보자

JINNI·2024년 5월 27일
0

[TIL] Java+Spring

목록 보기
11/15

SQL(Structured Query Language)

관계형 데이터베이스에 접근하고 조작하기 위한 표준 언어

🖥️SQL

데이터베이스에 대한 쿼리 실행, 데이터 검색, 레코드 삽입/업데이트/삭제, 새로운 데이터베이스 생성, 새 테이블 생성, 뷰 생성, 권한 설정, 저장 프로시저 생성 등의 역할을 할 수 있다.

🖥️주요 SQL 구문

  • SELECT : 데이터베이스에서 데이터 추출
  • UPDATE : 데이터 업데이트
  • DELETE : 데이터 삭제
  • INSERT INTO : 새로운 데이터 삽입
  • CREATE DATABASE : 새로운 데이터베이스 생성
  • ALTER DATABASE : 데이터베이스 수정
  • CREATE TABLE : 테이블 생성
  • ALTER TABLE : 테이블 수정
  • DROP TABLE : 테이블을 삭제합니다
  • CREATE INDEX : 인덱스(검색 키)를 생성
  • DROP INDEX : 인덱스 삭제

🖥️SQL Query 예시

  • SQL 키워드는 대소문자를 구분하지 않음
  • 일부 DBMS에서는 각 SQL문 끝에 세미콜론이 필요하기도 함

1) SELECT 구문

// SELECT CustomerName,City FROM Customers; 처럼 특정 필드 추출 가능
SELECT * FROM Customers;

2) INSERT INTO 구문

/*
1. 삽입할 열 이름과 값 모두 지정하는 방법
INSERT INTO table_name (column1, column2, column3, ...)
VALUES (value1, value2, value3, ...);
*/

/*
2. 테이블의 모든 열에 대한 값 추가하는 방법
INSERT INTO table_name
VALUES (value1, value2, value3, ...);
*/

INSERT INTO Customers (CustomerName, City, Country)
VALUES ('Cardinal', 'Stavanger', 'Norway');

3) Table 생성 쿼리

CREATE TABLE member (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(255) NOT NULL,
		email VARCHAR(255) NOT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

4) 데이터베이스 확인을 위한 SHOW 구문

SHOW DATABASES;

5) findById() 메소드 실행 시 나가는 쿼리

SELECT * FROM member WHERE id = 1;
// WHERE은 특정 조건을 만족하는 레코드만 추출할 때 사용

6) 레코드 수정을 위한 UPDATE 구문

UPDATE member SET name = 'jieun', email = 'jieun@velog.com' WHERE id = 4;

7) 삭제를 위한 DELETE FROM 구문

DELETE FROM member WHERE member_id = 1;


SQL 명령의 종류

SQL은 다루는 객체와 형태에 따라 DDL(Data Definition Language), DML(Data Manipulation Language), DCL(Data Control Language), DQL(Data Query Language), TCL(Transaction Control Language)로 나뉘어진다.

🖥️DDL(Data Definition Language)

: 데이터베이스와 테이블을 정의하고 생성, 수정, 삭제하는 역할(데이터 X)

  • 일반적인 유저들에게 사용되는 SQL 명령이 아니라 데이터베이스에 접근 권한이 있는 사람들이 이용
    e.g. CREATE, DROP, ALTER, TRUNCATE, COMMENT, RENAME
  • Spring Boot에서 JPA를 이용해 Entity를 설계하고, 설계한 Entity를 DB에 반영
    이 때, application.yml의 ddl-auto를 활용
  • ddl-auto 옵션
createcreate-dropupdatenone(default)validate
기존 테이블 삭제 후 다시 테이블 생성(DROP+CREATE)기존 테이블 삭제테이블 구조 변경Entity와 테이블이 정상 매핑되었는지 확인이외의 모든 경우
  • 로컬 인메모리 DB에서 create로 설정 후 개발하는 경우 많으나, 실제 서버에서는 validate나 none으로 설정한 후 배포해야 함!

🖥️DQL(Data Query Language)

: 데이터베이스에서 데이터를 가져와 작업을 수행하기 위한 역할

  • SQL에는 DQL 명령이 1개(SELECT)만 존재
  • SELECT가 실행되면 결과는 추가 임시 테이블로 컴파일되어 표시 및 수신될 수 있음

🖥️DML(Data Manipulation Language)

: 데이터베이스 내에 존재하는 데이터를 조작하는 역할

  • 대부분의 SQL문이 포함됨
    e.g. INSERT, UPDATE, DELETE, LOCK, CALL, EXPLAIN PLAN
  • 데이터 및 데이터베이스에 대한 액세스 제어

🖥️DCL(Data Control Language)

: 데이터베이스 시스템의 권한, 사용 권한 및 기타 제어를 처리하는 역할
e.g. GRANT(사용자 계정에 새로운 권한 할당해 액세스 제어), REVOKE(사용자 계정에 부여된 권한 제거)

🖥️TCL(Transaction Control Language)

: 일련의 작업을 단일 실행 단위로 그룹화하는 트랜잭션의 실행을 제어하는데 사용
(트랜잭션에 대해서는 13번 글에서 자세히 정리할 예정)
e.g. BEGIN TRANSACTION, COMMIT, ROLLBACK, SAVEPOINT



참고자료
33기 DO SOPT 서버 파트 3차 세미나 자료(배포 불가)
SQL Introduction
SQL Commands | DDL, DQL, DML, DCL and TCL Commands

profile
천재 개발자 되기

0개의 댓글