본문 바로가기
내일배움캠프(Sparta)/Spring

[Spring] Database / SQL

by mmm- 2023. 11. 3.

Database

: 데이터의 집합. 정보를 저장하고 관리해줌

 

DBMS (Database Management System)

: DB를 관리하고 운영하는 소프트웨어

 

RDBMS

: 관계형 데이터 베이스.

  • 행과 열로 이루어진 테이블이라는 최소 단위로 구성됨.
  • Foreign Key를 통해 다른 데이터를 조합해 함께 볼 수 있음.

 

RDBMS 종류

  • MySQL
  • PostgreSQL
  • Oracle Database

SQL (Structured Query Language)

: RDBMS에서 사용되는 언어.

  • 국제표준화 기구에서 SQL에 대한 표준을 정해서 발표하고 있지만, 회사마다 약간의 차이 존재
  • DDLDCLDML 3가지로 분류됨.

 

DDL (Data Definition Language)

: 테이블이나 관계의 구조를 생성하는데 사용

  • CREATE
    : 새로운 데이터베이스 및 테이블 생성
  • ALTER
    : 데이터베이스와 테이블의 내용 수정
  • DROP
    : 데이터베이스와 테이블 삭제
  • TRUNCATE
    : 데이터베이스와 테이블 삭제

 

DCL (Data Controller Language)

: 데이터의 사용 권한 관리할 때 사용

  • GRANT
    : 사용자 또는 ROLE에 대해 권한을 부여
  • REVOKE
    : 사용자 또는 ROLE에 부여한 권한 회수

 

DML (Data Manipulation Language)

: 테이블에 데이터를 검색, 삽입, 수정 삭제시 사용

  • INSERT
    : 테이블에 새로운 열(row) 추가
  • SELECTE
    : 열 선택
  • UPDATE
    : 열 내용 수정
  • DELETE
    : 열 삭제

DELETE vs TURNCATE vs DROP 차이

DELETE TURNCATE DROP
- WHERE절을 사용해 데이터를 선택해 제거
- COMMIT 명령어 사용 전이라면 ROLLBACK 명령어를 통해 되돌리기 가능
- 전체 데이터를 한 번에 삭제
- 삭제한 데이터 되돌리기 불가
(자동 COMMIT 되기 때문)
- 테이블 자체를 삭제
- 삭제한 데이터 되돌리기 불가
(자동 COMMIT 되기 때문)

CREATE

  • 제약조건
    • AUTO-INCREMENT : 컬럼의 값이 중복되지 않게 1씩 자동으로 증가해 고유번호 생성
    • NOT NULL : 해당 필드는 NULL 값 저장 불가
    • UNIQUE : 해당 필드는 서로 다른 값 가져야 함
    • PRIMARY KEY : NOT NULL과 UNIQUE 제약 조건의 특징을 모두 가짐
      • 사용이유 : 데이터 중복 방지 / 빠른 검색
    • FOREIGN KEY : 하나의 테이블을 다른 테이블에 의존하게 만들며 데이터의 무결성 보장
      • FK를 가지는 테이블이 참조하는 기준 테이블의 열은 반드시 PK나 UNIQUE 제약조건이 설정되어 있어야 함.
    • CASCADE : FK로 연관된 데이터를 삭제, 변경

 

ALTER

ALTER TABLE EXAM ADD PRIMARY KEY(student_code, exam_seq);
ALTER TABLE EXAM ADD CONSTRAINT exam_fk_student_code FOREIGN KEY(student_code) REFERENCES STUDENT(student_code);

 

→ ALTER 명령어를 통해 EXAM 테이블의 PK를 설정

→ ALTER 명령어를 통해 EXAM 테이블의 FK를 설정

  • STUDENT 테이블의 student_code를 참고해 FK 설정. FK는 exam_fk_student_code 라는 이름을 가짐.

 

INSERT

INSERT INTO STUDENT VALUES('s11', '변정섭', '20220222', 'M', '01000000020', 'm2');
INSERT INTO STUDENT(student_code, name, gender, major_code) VALUES('s12', '권오빈', 'M', 'm3');

→ 테이블명 뒤에 소괄호를 하지않고 그냥 VALUES를 통해 데이터를 넣는 것은 모든 필드에 대한 데이터를 넣는 것

→ 소괄호을 해 넣는 것은 일부 필드에 대한 데이터를 넣는 것 

 

UPDATE

INSERT INTO STUDENT VALUES('s0', '수강생', '20220331', 'M', '01000000005', 'm1');
UPDATE STUDENT SET major_code= 'm2' where student_code= 's0';

→ STUDENT테이블의 student_code가 s0인 것의 major_code를 m2로 수정

 

DELETE

DELETE FROM STUDENT WHERE student_code = 's0';

→ STUDENT 테이블의 student_code가 s0인 것 삭제

 

SELECT

SELECT * FROM STUDENT;
SELECT * FROM STUDENT WHERE STUDENT_CODE = 's1';
SELECT name, major_code FROM STUDENT WHERE student_code = 's1';

→ STUDENT 테이블의 모든 필드 선택해서 보여주기

→ STUDENT 테이블의 STUDENT_CODE가 s1인 필드 모두 선택해서 보여주기

→ STUDENT 테이블의 student_code가 s1인 것의 name, major_code 필드 선택해서 보여주기

 

JOIN

: 2개 이상의 테이블을 하나로 합치기 위한 기능

  • 하나이상의 컬럼이 서로 공유되어야 함.
  • ON 키워드를 통해 기준이 되자 공유되고 있는 컬럼을 선택해 2개의 테이블을 합쳐줌.
SELECT s.name, s.major_code, m.major_name FROM STUDENT s JOIN MAJOR m on s.MAJOR_CODE = m.MAJOR_CODE;

위의 코드와 아래의 코드 결과 같음

SELECT s.name, s.major_code, m.major_name FROM STUDENT s, MAJOR m WHERE s.MAJOR_CODE = m.MAJOR_CODE;

👉 참고 사이트
1. https://chiefcoder.tistory.com/58

'내일배움캠프(Sparta) > Spring' 카테고리의 다른 글

[Spring] 3 Layer Architecture  (0) 2023.11.03
[Spring] JDBC  (1) 2023.11.03
[Spring] DTO  (0) 2023.11.02
HTTP 데이터를 객체로 처리하는 방법  (0) 2023.11.02
[Spring] Jackson / Path Variable / Request Param  (1) 2023.11.02