본문 바로가기
부트캠프/코드스테이츠 백엔드부트캠프 43기

코드스테이츠 백엔드 부트캠프 43기 (32,33일차-SQL)

by 고구마는호박고구마 2023. 2. 1.

Intelij 에서 MySQL에 데이터 삽입

 

데이터베이스를 연결을 확인, 데이터 추가, 변경, 검색 등을 통한 과제를 실시 하였다.


CREATE

실행을 하면서 테이블이 생성이 안됬던 경우가 있었다. 첫 번째 경우는 , (쉼표)가 빠지거나 작은 오타들이 있는 경우, 두 번째로 밑에서 동작을 보겠지만이 명령은 순서대로 이루어 진다. 그래서 user 객체에서 다른 객체를 외래키로 설정하려면 다른 객체가 user 객체보다 앞에 있어야 한다. 당연한 내용인데 코딩을 하면 이러한 사소한 부분을 많이 놓친다.

 

따로 schema.sql 문서를 작성하여 호출후 명령을 실행하도록 동작 

 

 

1 : 작성한 문서의 위치를 참조여 file로 설정 하여 파일을 읽는다.

 

2 : split메소드를 사용하여 세미콜론을 기준으로 실행할 명령어를 String 배열에 담는다.

 

3 : excute()메소드를 사용하여 실행을 하면 명령이 실행되고 mysql에 데이터 저장

- Statement 클래스는 SQL 명령어를 실행하는 역할을 한다.

 

JDBC : 자바에서 제공하는 데이터베이스와 연결하여 데이터를 주고 받을 수 있는 인터페이스

JDBC API 를 사용하여 제공하는 메소드를 통하여 DB와 연결하고, 데이터를 넣고 출력한다. 

<간략한 흐름 순서> 

1. JDBC 드라이버 연결 // Mysql이랑 연결하겠다

2. 계정을 연결 // Mysql에 있는 데이터베이스 연결 id, pw 입력 + Connection 클래스를 통하여 연결

3. 명령 실행 // Statement 클래스 이용


READ, UPDATE

 

JUnit 환경에서 상수값(쿼리문)을 받아와서 테스트 진행

 

 

Table이 만들어 졌다면 구조를 확인하는 테스트 (만들어진 테스트에 상수값만 적절히 설정하여 코드 실행)

 

 

이런식으로 상수값만 설정해주면서 SQL 쿼리문을 오랜만에 다시 상기시키면서 복습하는 기회가 되었다. SQL을 처음 접하시는 분들한테는 어려운 쿼리문도 있었다. 주로 처음에는 기본적은 쿼리문이 나왔고 후반부로 가면 JOIN, LEFT JOIN, GROUP BY 등을 활용해야 하는 쿼리문들이 등장했다.

 

 


 

UPDATE (바꿀 테이블) SET (바꿀 열) = (바꿀 내용) // 전체 열의 내용을 바꿀 내용으로 바꾼다.

UPDATE (바꿀 테이블) SET (바꿀 열) = (바꿀 내용)  WHERE // WHERE을 설정하여 특정 행만 바꾼다.

UPDATE content SET body ='database is very easy' WHERE title LIKE 'database homework

 

WHERE NAME LIKE '%luckykim%'  // 문자열에 luckykim이 포함되어 있다면

SELECT NAME FROM USER WHERE NAME LIKE'%luckykim%

 

서브쿼리를 활용하여 원하는 내용 출력 단순한 경우에는 가독성이 좋고 성능이 나쁘진 않지만 수준이 높아지면 JOIN에 비해 성능이 매우 좋지 않다. 

서브쿼리를 조인으로 대체할수 있는 경우도 있고 없는 경우도 있다.

SELETE title FROM content WHERE userId = (SELECT id FROM user WHERE name='minsanggu')

 

댓글