💋 인트로 안녕하세요 깃짱입니다. 소스 코드 ⇒ https://github.com/gitchan-Study/2023-sql-sample GitHub - gitchan-Study/2023-sql-sample: 깃짱이 복잡한 SQL 명령어를 실습하기 위해 작성한 샘플 코드 깃짱이 복잡한 SQL 명령어를 실습하기 위해 작성한 샘플 코드. Contribute to gitchan-Study/2023-sql-sample development by creating an account on GitHub. github.com 이번 포스팅은 쉬운코드님의 데이터베이스 강의를 바탕으로 작성했습니다. 💋 ORDER BY ✔️ 개념 조회 결과를 특정 attribute 기준으로 정렬해 가져오고 싶을 때 사용한다. 아무것도 설정하지..
Computer Science/Database
💋 인트로 안녕하세요 깃짱입니다. JOIN 예제를 살펴보면서 열심히 SQL 숙련자가 되어 보겠습니다. 소스 코드 ⇒ https://github.com/gitchan-Study/2023-sql-sample GitHub - gitchan-Study/2023-sql-sample: 깃짱이 복잡한 SQL 명령어를 실습하기 위해 작성한 샘플 코드 깃짱이 복잡한 SQL 명령어를 실습하기 위해 작성한 샘플 코드. Contribute to gitchan-Study/2023-sql-sample development by creating an account on GitHub. github.com 이번 포스팅은 쉬운코드님의 데이터베이스 강의를 바탕으로 작성했습니다. 💋 데이터 소개 시작하기에 앞서, 아래 덤프 파일을 통해서 ..
💋 Constriants ✔️ 개념 relational database에 속한 모든 relation들이 모두, 언제나 지켜야 하는 제약 사항 ✔️ 구분 implicit constraints, explicit constraints로 구분할 수 있다. implicit constraints Relational Database Model 자체가 가지는 제약사항 relation은 중복되는 튜플을 가질 수 없다라던가, relation 내 동일한 이름의 attribute를 가질 수 없다와 같은 제약사항이다. explicit constraints 주로 DDL을 통해 스키마에 직접 명시할 수 있는 제약사항 schema-based constraints라고 한다. 이중에서 explicit constraints의 제약사항에 ..
💋 데이터베이스 기본 개념 ✔️ 데이터베이스 전자적으로 저장되고 사용되는, 관련있는 데이터들의 조직화된 집합 ✔️ DBMS database management systems 사용자에게 DB를 정의하고 만들고 관리하는 기능을 제공하는 소프트웨어 시스템 ✔️ metadata data about data 데이터베이스를 정의하거나 기술하는 데이터 데이터 유형, 구조, 제약 조건, 보안, 저장, 인덱스, 사용자 그룹 등 메타 데이터 역시 DBMS로 관리된다. ✔️ database system database + DBMS + 연관된 애플리케이션 database라고 부르기도 한다. 💋 data models DB 구조를 기술하는데 사용될 수 있는 개념들 ✔️ 분류 conceptual data models high-le..
💋 Connection Pool이란? ✔️ 등장 배경 많은 애플리케이션에서 데이터베이스를 활용한다. 하지만, 데이터베이스에 연결하는 과정은 굉장히 비용이 많이 든다. 네트워크를 처리(TCP로 연결을 생성하고 종료)하고, 연결이 필요한 객체(SocketFactorv, Socket 등등)를 만들고 JVM GC에서 처리하는 과정은 굉장히 느리다. 데이터베이스와의 연결 비용을 줄이기 위해서 커넥션 풀 이라는 개념이 등장했다. ✔️ 개념 쉽게 말해서, 커넥션을 미리 만들어주고 빌려주는 것 미리 DB에 연결된 객체를 만들어놓고, 이것들을 Connection Pool이라고 하는 컨테이너에 넣어둔다. DB와 연결 요청이 들어올 때, 커넥션 풀에서 연결 객체를 꺼내서 주고, 다 사용하면 재사용할 수 있게 다시 커넥션 풀..
💋 인덱스란? 데이터베이스의 테이블에서 데이터를 검색하고 정렬하는 데 사용되는 구조 예를 들어, 한 대학교에서 학생들 테이블을 관리한다고 생각해 보자. column으로는 id(primary key), name, age, major 등등이 있다. 이때 이름을 기반으로 한 검색이 매우 많다고 하자. 예를 들어 아래와 같은 검색이다. SELECT * FROM STUDENTS WHERE NAME='깃짱'; 이 경우에 매번 primary key로만 정렬된 테이블에서 '깃짱'이라는 이름을 한 학생을 찾으려면 테이블을 전부 뒤져봐야 한다. 이렇게 값을 찾는 방식을 full scan이라고 한다. 대강 생각해봐도 상당히 비효율적이다. 이름 기반 검색이 자주 사용된다면, 이름을 가나다 순으로 만든 테이블을 별도로 두고 관..
💋 H2 데이터베이스 버전 확인 버전 확인 방법이다! 먼저 h2 데이터베이스에 들어간다. 쿼리문으로 아래 명령어를 작성하고 실행한다. SELECT H2VERSION() FROM DUAL; 버전을 확인할 수 있다!
💋 H2란? H2는 가볍고 편리한 데이터베이스다. 개발 과정에서, 혹은 테스트 용도로 주로 사용하며, SQL을 실행할 수 있는 간단한 화면을 제공한다. 💋 H2 설치하기 ✔ H2 dependencies 추가 build.gradle 파일에서 dependencies에 아래와 같은 코드를 추가한다 runtimeOnly 'com.h2database:h2' 반드시 새로고침 ✔ 스프링부트 버전에 맞는 h2 다운로드 https://www.h2database.com/html/download-archive.html Archive Downloads www.h2database.com 위 사이트에 들어가서 내 스프링부트 버전에 맞는 h2를 설치한다. 현재 내 스프링부트 버전에 맞는 h2 버전은 프로젝트 바에서 아래와 같이 ..
💋 다중 기본키가 왜 필요함? 오늘 이리내랑 JAVA로 만든 체스 게임을 DB에 연결하고 있었다. 체스판에서 각 위치를 A1, A2, A3,...,B1,B2,...H8라고 부르는데, 우리는 각 위치에 체스말(Piece)의 종류(King, Queen, Knight...)와 그 색깔(Black, White)을 저장하고 싶었다. 아마도 두 가지 방법이 있을 것이다. 1. A,B,C...H(File)과 1,2,...8(Rank)를 다중 기본키로 설정하는 방법! 만약 내 코드가 이 두 가지를 Position이라는 클래스 내에서 별도로 관리중이라면 굉장히 유용할 것이다. 이 경우 다중 기본키를 지정한 테이블을 만들어야 한다. 💋 다중 기본키 테이블 만들기 (SQL) CREATE TABLE chess_game( po..