[JDBC] JDBC와 JDBC DriverManager
·
Spring DB/JDBC
간단히 알아보는 JDBC의 역사JDBC는 자바 애플리케이션과 DB사이를 연결해주는 자바 API로써, 다양한 RDBMS에 접근하도록 도와준다.RDBMS 회사마다 애플리케이션과 연결, SQL 전송, 결과 응답을 받는 방식이 다르기 때문에, 자바가 이러한 문제점을 해결하기 위해 JDBC라는 표준 API를 통해 Connection, Statement, ResultSet 3가지 인터페이스를 제공한다.각 회사들은 이제 본인들의 DB에 맞게 구현체를 라이브러리로 제공하여 개발자는 이 3가지 인터페이스에만 의존하여 개발하면 된다.커넥션을 위한 JDBC DriverManagerJDBC에서는 Connection 이란 인터페이스를 정의 해놨고, H2 데이터베이스 드라이버는 이 JDBC의 Connection 인터페이스를 구현..
[Spring DB] H2 데이터베이스 대신 MySQL 연동해보기
·
Spring DB
김영한님 강의 커리큘럼은 H2 데이터베이스를 사용한다.근데 나는 그렇게 MySQL을 열심히 공부했는데 막상 다른 데이터베이스를 쓰니 스스로 굉장히 서운했고, 앞으로 내가 프로젝트를 할 때 어쨌든 DB를 연동할 줄 알아야하기 때문에, 나는 MySql로 시도해보고자 했다.그리고 앞으로 강의도 H2로도 해보고, 되도록이면 MySQL로 적용해보도록 하자.연습 테이블 LOL_CHAMPIONS기존에 블로그에 업로드 해뒀든 실습용 롤 챔피언 데이터베이스를 사용했다.DB 1편에서 JDBC를 사용했던 처음부터 천천히 따라가보겠다.Gradle 의존성 추가하기dependencies { implementation 'org.springframework.boot:spring-boot-starter-jdbc' compi..
[SQL] Stored Procedure 총 정리 + 변수 사용법 정리
·
DataBase/SQL
고객 대응 팀에 일하고 있어서 하루 죙일 고객정보를 SELECT 해야하는 상황이라고 가정하자.고객 센터 문의를 답변하기 위해 고객 정보를 조회 하기 위하여 SELECT * FROM 고객 이름 WHERE ~ 어쩌구와 같은 SQL문을 하루종일 타이핑하고 앉아 있는 거지 효율을 줄이기 위해 등장한 기능이 바로 저장 프로시저 기능이다.Stored Procedure 란재사용성이 높은 코드를 하나로 묶어 덩어리로 관리하는 기능을 Stored Procedure 라고 한다.먼저 프로시저를 만드는 법을 보자. 코드를 보면 이해가 쉽다DELIMITER $$$$CREATE PROCEDURE DB명.프로시저명BEGIN SQL문 1; SQL문 2;END $$DELIMITER ;// 저는 이렇게 해봄DELIMITER $$..
[SQL] TABLE 대신 VIEW를 쓰는 이유는 뭘까?
·
DataBase/SQL
VIEW는 언제 쓸까? 그리고 왜 그냥 테이블 안쓰고 뷰를 쓰는걸까?View대학교 교재 보면 그냥 가상의 뷰를 생성하여 테이블 역할을 어쩌구 저쩌구 하는데, 그냥 쉽게 생각해서 내가 JOIN한 두 테이블을 자주 사용할 것 같을 때 사용하는 이유가 큰 것 같다.계속 FROM A INNER JOIN B ON ~~ 이런 문법을 쓰기 싫을 때 그냥 뷰에 조인해둔 테이블을 두고 사용하면 편하다.예를 들어 sales와 product 테이블을 조인하여 자주 쓸 일이 있다고 가정하자.뷰를 생성하는 문법은 다음과 같다.CREATE VIEW 뷰이름 AS SELECT 컬럼1, 컬럼2, ... 컬럼nFROM 테이블;// 그래서 저는 이렇게 해봄CREATE VIEW temp_view asSELECT sales.id, 고객번호,..
[Database] 3정규형
·
DataBase/Database Modeling
지난번 직접 만든 테이블로 정규화를 설명하려니 난잡해서 이번엔 간단한 데이터들로 포스팅 하겠다.3정규형 3정규형의 정의는 다음과 같다.어떤 릴레이션 R이 2정규형을 만족하고, 기본키에 속하지 않는 모든 속성이 기본키에 이행적 함수 종속이 아니면 제 3정규형에 속한다. 바로 예시를 보자이런 2정규형 테이블이 있다고 가정하자. PK는 프로그램이다.출신대학이라는 컬럼은 PK와 전혀 관계 없고 단지 강사 컬럼에 종속되어 있다.이렇게 PK가 아닌 다른 컬럼에 종속되어 있는 컬럼이 존재할때 (이행 함수 종속), 3정규형을 위배한다고 한다.그래서 출신 대학 컬럼을 다른 테이블로 빼면 제 3정규형을 만족한다고 한다.정확하게 말하자면..정확하게 말하면, 다음과 같다2정규형 만족 + 이행 함수 종속 제거 = 3정규형PK에..
[Database] 1정규형 & 2정규형
·
DataBase/Database Modeling
오늘은 1정규형 , 2정규형에 대해 알아 보자.1정규형1정규형의 개념은 다음과 같다.어떤 릴레이션 R 에 속한 모든 속성의 도메인이 원자값만을 갖는다면 1 정규형에 속한다.즉, 쉽게 생각하면 1속성 = 1데이터를 준수 해야한다. 더 쉽게 생각하면 한칸에 하나의 데이터만 들어가면 1정규형을 만족한다고 한다. 만약 다음과 같은 테이블에 데이터가 있다고 하자. 해당 데이터에서 아리는 두가지의 Role 을 가지고 있다.1정규형은 한칸에 하나의 데이터만 있어야 하기 때문에, 다음과 같이 SQL을 통해 1정규화를 진행할 수 있다.UPDATE LOL_CHAMPIONS_SAMPLE SET `ROLE` = 'Mage' WHERE name = 'Ahri';INSERT INTO LOL_CHAMPIONS_SAMPLE VALU..
[인사이트] 백엔드 개발자도 HTML이 필수 스펙인 이유
·
책, 인사이트
요새 근황도 없이, 계속 DB 와 스프링만 주구장창 파다보니 개발의 숲이 아닌 나무를 보고 있는 것이 아닌가해서, 조금 쉬는 시간을 가질때마다 읽은 개발 서적에 대한 인사이트를 기록할 예정이다.백엔드 개발자도 HTML 할줄 알아야하나요개인적으로는 반드시 최소한의 지식은 필요하다고 본다.그렇다고, 백엔드 필수요소들을 능가할만큼 중요한가? 에 대해서는 아니라고 답하고 싶다. 최소 자신이 개발한 API 서버가 구동은 될 수 있을정도의 능력은 필요하다고 생각한다. 상품 ID 상품명 가격 수량 저장 ..
[SQL] 테이블을 안전하게 관리하는 기초 - Constraints 제약 걸기
·
DataBase/SQL
컬럼을 생성할 때, 테이블을 안전한게 관리하고 유지하기 우해 제약 조건을 걸어둘 수 있다.대표적인 예시는 다음과 같다.1. 이 컬럼은 NOT NULL 이어야 한다2. 이 컬럼의 데이터는 중복되면 안된다 -> 데이터가 UNIQUE 해야한다.3. 음수는 들어오면 안되고 무조건 양수만 들어오는지 CHECK4. 현재 컬럼을 PK 로 지정해야한다.빈 데이터 금지 - NOT NULLCREATE TABLE new_table ( id INT NOT NULL, 이름 VARCHAR(100) NOT NULL, 나이 INT)이렇게 NOT NULL 옵션을 붙이게 되면, id와 이름은 비어 있을 수 없다. 까먹고 데이터를 입력하지 않으면 커밋이 불가하다. 중복 값 없어야 함 - UNIQUECREATE TABLE ..
[SQL] GUI에 의존하지 말고 DDL 직접 씁시다
·
DataBase/SQL
Dbeaver이나 MySql 워크 밴치처럼 요새는 GUI가 잘 되어 있어서 사실 딱히 DDL 외울 필욘 없지만, 우리는 폼생 폼사이고, 데이터 베이스 개고수가 되어야 하니까 DDL에 대해 알아보자.데이터베이스 생성, 삭제 - create / dropCREATE DATABASE 데이터베이스이름DROP DATABASE 데이터베이스이름생성은 Create, 삭제는 Drop 명령어르 쓰면 된다.참고로 아직도 자바 버릇 때문에 new database, new column 이런 식으로 적는데, 이건 어쩔 수 없이 머슬 메모리를 키우는 수 밖에..테이블 생성, 삭제마지막 컬럼 제외 쉼표로 구분하여 컬럼명 + 자료 타입을 입력해주면 된다.CREATE TABLE champ ( id INT, champion_na..