본문 바로가기
Spring

[Spring] Database와 SQL

by 박졔삐 2024. 10. 1.

 

데이터베이스 (Database)

 

 

1. 정의

데이터베이스는 조직화된 데이터를 저장하고 관리하기 위한 시스템이다. 사용자는 데이터를 쉽게 추가, 조회, 수정, 삭제할 수 있다. 데이터베이스는 종종 서버에서 실행되며 여러 사용자가 동시에 접근할 수 있도록 설계된다.

2. 종류

  • 관계형 데이터베이스 (RDBMS) :
    • 데이터를 표 형식(테이블)으로 저장한다.
    • SQL을 통해 데이터에 접근하고 조작한다.
    • 예: MySQL, PostgreSQL, Oracle, Microsoft SQL Server.
  • 비관계형 데이터베이스 (NoSQL) :
    • 비정형 데이터(문서, 키-값, 그래프 등)를 저장하는 데 적합하다.
    • 예: MongoDB(문서형), Redis(키-값), Neo4j(그래프).

3. 주요 구성 요소

  • 테이블 (Table) :
    • 데이터가 저장되는 기본 단위이다.
    • 각 테이블은 행(레코드)과 열(필드)로 구성된다.
    • 예: STUDENT 테이블은 학생의 이름, 나이, ID 등을 열로 가질 수 있다.
  • 스키마 (Schema) :
    • 데이터베이스의 구조를 정의하는 설계이다.
    • 각 테이블의 이름, 데이터 타입(문자열, 정수 등), 제약조건(기본 키, 외래 키 등)을 포함한다.
  • 관계 (Relationships) :
    • 데이터베이스의 여러 테이블 간의 연결을 정의한다.
    • 외래 키를 사용하여 한 테이블의 필드가 다른 테이블의 기본 키를 참조하게 할 수 있다.

4. 데이터베이스의 이점

  • 데이터 무결성 : 데이터의 정확성과 일관성을 유지한다.
  • 동시 접근 : 여러 사용자가 동시에 데이터베이스에 접근할 수 있다.
  • 효율적인 데이터 검색 : 인덱스 및 쿼리를 통해 빠르게 데이터를 검색할 수 있다.

 

 

 


 

SQL (Structured Query Language)

 

 

1. 정의

SQL은 관계형 데이터베이스에 데이터를 삽입, 조회, 수정, 삭제하기 위해 사용하는 표준 프로그래밍 언어이다. SQL은 ANSI(미국국가표준협회)에서 표준화된 언어로, 여러 데이터베이스 관리 시스템에서 사용된다.

 

2. 기본 SQL 명령어

 

  • SELECT : 데이터를 조회할 때 사용한다.
    SELECT * FROM STUDENT;  -- 모든 학생 데이터 조회
    SELECT name, age FROM STUDENT WHERE age > 18;  -- 18세 이상 학생의 이름과 나이 조회
  • INSERT : 새로운 데이터를 추가할 때 사용한다.
    INSERT INTO STUDENT (name, age) VALUES ('Alice', 21); -- Alice라는 학생 추가

     

  • UPDATE : 기존 데이터를 수정할 때 사용한다.
    UPDATE STUDENT SET age = 22 WHERE name = 'Alice'; -- Alice의 나이를 22로 수정
     
  • DELETE : 데이터를 삭제할 때 사용한다.
    DELETE FROM STUDENT WHERE id = 1; -- id가 1인 학생 삭제
     

 

3. SQL의 세 가지 주요 카테고리

 

SQL은 크게 세 가지 주요 카테고리로 나뉘며, 각각의 기능이 다르다.

 

1) DDL (Data Definition Language)

DDL은 데이터베이스의 구조를 정의하는 데 사용된다.

이 명령어들을 통해 테이블, 데이터베이스, 뷰 등의 구조를 생성하거나 수정할 수 있다.

 

  • CREATE : 새로운 데이터베이스나 테이블을 생성한다.
    CREATE TABLE STUDENT ( id INT PRIMARY KEY, name VARCHAR(100), age INT );
     
  • ALTER : 기존 데이터베이스나 테이블의 구조를 수정한다. 예를 들어, 테이블에 새로운 열을 추가할 수 있다.
    ALTER TABLE STUDENT ADD COLUMN email VARCHAR(100);
  • DROP : 데이터베이스나 테이블을 삭제한다. 이 명령어를 사용하면 해당 데이터와 구조가 모두 삭제된다.
    DROP TABLE STUDENT; -- STUDENT 테이블 삭제
     
  • TRUNCATE : 테이블의 모든 데이터를 삭제하지만, 테이블의 구조는 유지한다. 기본적으로 테이블을 초기 상태로 되돌린다.
    TRUNCATE TABLE STUDENT; -- STUDENT 테이블의 데이터 삭제

 

2) DML (Data Manipulation Language)

DML은 데이터베이스의 데이터를 조작하는 데 사용된다. 이 부분은 실제 데이터의 추가, 조회, 수정, 삭제와 관련이 있으므로 가장 많이 사용된다.

 

  • INSERT : 새로운 데이터를 테이블에 추가한다.
    INSERT INTO STUDENT (name, age) VALUES ('Alice', 22);

     

  • SELECT : 데이터를 조회한다. 조건을 지정하거나 특정 열만 선택할 수 있다.
    SELECT * FROM STUDENT; -- 모든 학생 데이터 조회 SELECT name FROM STUDENT WHERE age > 20;
    -- 20세 이상의 학생 이름 조회
     
  • UPDATE : 기존 데이터를 수정한다. 특정 조건에 맞는 데이터를 선택하여 변경할 수 있다.
    UPDATE STUDENT SET age = 23 WHERE name = 'Alice';
     
  • DELETE : 특정 조건에 맞는 데이터를 삭제한다.
     
    DELETE FROM STUDENT WHERE id = 1; -- id가 1인 학생 삭제

 

3) DCL (Data Control Language)

DCL은 데이터베이스의 사용 권한 및 접근 제어를 관리하는 데 사용된다. 보안과 관련된 작업에 주로 사용된다.

 

  • GRANT : 특정 사용자에게 데이터베이스나 테이블에 대한 권한을 부여한다.
    GRANT SELECT ON STUDENT TO user_name; -- user_name에게 STUDENT 테이블 조회 권한 부여
  • REVOKE : 특정 사용자에게 부여된 권한을 취소한다.
    REVOKE SELECT ON STUDENT FROM user_name; -- user_name의 STUDENT 테이블 조회 권한 취소

     

요약

  • DDL : 데이터베이스 구조 정의 (CREATE, ALTER, DROP, TRUNCATE)
  • DML : 데이터 조작 (INSERT, SELECT, UPDATE, DELETE)
  • DCL : 데이터 권한 관리 (GRANT, REVOKE)

 

 

4. 고급 SQL 기능

 

  • JOIN : 여러 테이블의 데이터를 결합한다.
    SELECT STUDENT.name, COURSE.course_name FROM STUDENT JOIN COURSE ON STUDENT.course_id = COURSE.id;
    -- 학생과 수업 정보를 함께 조회
     
  • WHERE : 조건을 지정하여 데이터를 필터링한다.
    SELECT * FROM STUDENT WHERE age < 20; -- 20세 미만 학생 조회
     
  • GROUP BY : 데이터를 그룹화하여 집계한다.
    SELECT age, COUNT(*) FROM STUDENT GROUP BY age; -- 각 나이별 학생 수 카운트
  • ORDER BY : 결과를 정렬한다.
    SELECT * FROM STUDENT ORDER BY age DESC; -- 나이를 기준으로 내림차순 정렬

 

5. SQL의 이점

  • 표준화된 언어 : 다양한 데이터베이스 시스템에서 동일한 쿼리 구조를 사용한다.
  • 데이터 관리의 용이성 : 간단한 구문으로 복잡한 데이터 조작이 가능하다.
  • 유연성 : 다양한 쿼리 조합을 통해 필요한 데이터를 쉽게 조회할 수 있다.

결론

데이터베이스와 SQL은 현대 데이터 관리의 핵심이다. 데이터베이스는 정보를 체계적으로 저장하고 관리하며, SQL은 이러한 데이터를 효과적으로 처리하는 도구다. 이 두 가지를 잘 이해하면 데이터 분석, 애플리케이션 개발 등 다양한 분야에서 유용하게 활용할 수 있다. 

728x90
반응형