개발/CS

[DB] RDBMS, MySQL, JDBC

zz132456zz 2022. 3. 19. 00:26
728x90

이번 주는 데이터베이스에 관해서 공부했다. 대학교 3학년 때 전공 수업으로 기초 데이터베이스를 배운 적이 있어서 어렵지 않게 공부할 수 있었던 것 같다. 다음 주에는 배운 DB를 바탕으로 간단하게 프로젝트에 연동시켜보고 백엔드에 대해 공부를 시작할 것 같다.

 


 

RDBMS (Relational DataBase Management System)

RDBMS는 한국말로 직역하면 관계형 데이터베이스 관리 시스템이다.

테이블 기반으로 데이터베이스를 관리하는데 하나의 테이블은 여러 개의 Column으로 구성된다.

같은 데이터가 여러 컬럼이나 테이블에 존재하면 데이터 수정 시에 문제가 발생할 가능성이 높아져 정규화를 통해 문제를 해결할 수 있다. 그렇다고 정규화가 만능은 아니고 때에 따라서 역정규화가 필요로 할 때도 있다.

 


 

SQL (Structured Query Language)

SQL은 Database에 있는 정보를 사용할 수 있도록 지원하는 언어이다. 모든 DBMS에서 사용이 가능하지만 언어의 종류별로 사용법이 조금씩 다르니 공부할 때 헷갈리지 않게 주의해야 할 것이다. (MySQL, Oracle, MariaDB 등등)

그래도 전체적인 사용법이나 겹치는 부분이 많으니 하나를 제대로 공부해놓으면 나중에 다른 언어를 쓰게 될 때에도 분명 도움이 될 것이다.

SQL 구문은 DCL, DDL, DML 등으로 구분한다.

DDL (Data Definition Language) - 데이터 정의어

데이터베이스 객체의 구조를 정의한다. 테이블 생성, 컬럼 추가, 타입 변경, 제약조건 지정, 수정 등 관련하여 사용한다.

DML (Data Manipulation Language) - 데이터 조작어

데이터를 조작할 때 사용하고 흔히 많이 알고 있는 CRUD가 여기에 해당된다.

DCL (Data Control Language) - 데이터 제어어

DB나 테이블의 접근권한이나 CRUD 권한을 정의한다. 특정 사용자에게 테이블의 검색 권한을 부여하거나 금지시킬 수 있다.

TCL (Transaction Control Language) - 트랜잭션 제어어

transaction이란 데이터베이스의 논리적 연산 단위이다. 이를 제어할 때 사용하고 commit rollback 명령어가 이에 해당한다. 

 


 

  • JOIN
  • INNER JOIN
  • OUTER JOIN
  • SELF, Non-Equi JOIN
  • NESTED SUBQUERY
  • INLINE VIEW
  • SCALAR SUBQUERY

JOIN에 대해서 간단히 적어보자면 둘 이상의 테이블에서 데이터가 필요한 경우 두 테이블을 조인해서 하나의 쿼리로 데이터를 얻을 때 사용한다. JOIN시에 주의해야 할 점은 어느 테이블을 먼저 읽을지를 결정하는 것이 중요하다. 순서에 따라 처리할 작업량이 많이 달라질 수 있기 때문이다.

 


 

데이터베이스 모델링 - 정규화에 관련된 내용인데 관련해서 후에 더 공부하고 정리해서 따로 글을 작성할 생각이다.

 

 


 

JDBC (Java DataBase Connectivity) 자바에서 데이터베이스를 연동하여 사용할 수 있도록 해주는 API이다.

 

JDBC 사용순서

1. DB Driver Load 

- DB를 뭐 쓸지를 하고 해당 DB에 해당되는 드라이버를 로드한다. (oracle? mysql? mariadb?)

2. DB 연결

3. Query 실행

4. ResultSet 결과 처리

5. DB 연결 종료

 

로컬에 데이터베이스를 생성하고 JDBC를 이용하여 위의 순서대로 코드를 작성하여 간단하게 insert, update, delete, select 등을 수행이 되는지 확인해보았다.

 

 

 

 

 

 

 

 

 

 

728x90