카테고리 없음
2024. 7. 26. (금) 슈퍼코딩 부트캠프 Day 47 / 주특기 5주차
태영9922
2024. 7. 26. 17:31
1. FOREIGN KEY
- 외래키 삭제 하려면 참조하고 있는 테이블을 먼저 삭제 해야함
- CASCADE 옵션 : 참조 테이블과 연동해서 옵션 상황때 같이 값이 변경됨
-> 생성부터 힘들고 삭제하려면 서로 참조하고 있기 때문에 ALTER를 사용해서 외래키 참조를 없애고 테이블 삭제 필요함
-> 연결 테이블을 통해 상호 참조하지 않고 외래키로 참조하도록 설정
1. 데이터베이스 모델링
2. 요구사항 파악과 유저 시나리오
3. 데이터베이스 모델링 진행하기
- 요구사항 분석 : 요구사항 파악 -> 유저 시나리오 만들기 -> 엔티티 후보 선정
- 개념적 설계 : 엔티티/관계 만들기 -> ERD 그리기 ->
- 논리적 설계
사진 설명을 입력하세요.
- 물리적 설계
1. JDBC 프로그래밍이란?
- JDBC API를 통해 DB와 연결
- JDBC 프로그래밍이란? Java에서 SQL 구문자체를 넘겨 RDB에서 원하는 동작을 실행하는 프로그래밍
- 구현 순서
2. 단순한 JDBC 프로그래밍
package org.example.jdbc;
import java.sql.*;
public class JdbcTest {
private static final String DB_URL = "jdbc:mysql://localhost:3306/chapter_78";
private static final String DB_USER = "root";
private static final String DB_PASSWORD = "12341234";
public static void main(String[] args) {
//Connection 생성 -> Close 필요
try (Connection connection = DriverManager.getConnection(DB_URL, DB_USER, DB_PASSWORD);
Statement statement = connection.createStatement()
) {
String stringSql = "SELECT mem_name, (price*amount) AS total_price\n" +
"FROM group_singer g\n" +
"LEFT JOIN buy_history_1 b \n" +
"ON g.mem_id = b.mem_id\n" +
"WHERE price*amount >= 1000\n" +
"ORDER BY total_price DESC;";
ResultSet resultSet = statement.executeQuery(stringSql); //SELECT
while (resultSet.next()) {
String name = resultSet.getString("mem_name");
String price = resultSet.getString("total_price");
//
System.out.printf("그룹 : %s, 총액 : %s\n", name, price);
}
String stringSql2 = "INSERT INTO group_singer (mem_id, mem_name, mem_number, addr, phone, height, debut_date)\n" +
"VALUES\n" +
" ('mem1212', '르세라핌', 5, '서울', '01012341234', 172, '2022-12-06');";
statement.executeUpdate(stringSql2); // INSERT
System.out.println("SQL 성공");
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
}
3. 복잡한 JDBC 프로그래밍
사진 설명을 입력하세요.
package org.example.jdbc;
import java.sql.*;
import java.time.LocalDate;
import java.util.Optional;
import java.util.Scanner;
public class JdbcTest2 {
private static final String DB_URL = "jdbc:mysql://localhost:3306/chapter_80";
private static final String DB_USER = "root";
private static final String DB_PASSWORD = "12341234";
public static void main(String[] args) {
String sqlQuery1 = "SELECT user_id, user_name, like_travel_place\n" +
" FROM users\n" +
" WHERE user_name =?;";
String sqlQuery2 = "SELECT ticket_type, departure_loc, arrival_loc, departure_at, return_at, tax, total_price\n" +
"FROM airline_ticket\n" +
"WHERE departure_loc = '서울' AND ticket_type='왕복' AND arrival_loc =?\n" +
"ORDER BY total_price;";
System.out.print("유저 이름을 입력해주세요 : ");
Scanner scanner = new Scanner(System.in);
String userName = scanner.nextLine();
try (Connection connection = DriverManager.getConnection(DB_URL, DB_USER, DB_PASSWORD);
PreparedStatement preparedStatement1 = connection.prepareStatement(sqlQuery1);
PreparedStatement preparedStatement2 = connection.prepareStatement(sqlQuery2)
) {
preparedStatement1.setString(1, userName);
ResultSet resultSet = preparedStatement1.executeQuery();
String place = null;
if (resultSet.next()) {
place = resultSet.getNString("like_travel_place");
}
Optional<String> likeTravlePlace = Optional.ofNullable(place);
String likePlace = likeTravlePlace.orElseThrow(() -> new RuntimeException());
System.out.println("선호하는 곳은 : " + likePlace);
preparedStatement2.setString(1, likePlace);
ResultSet resultSet2 = preparedStatement2.executeQuery();
while (resultSet2.next()) {
String ticketType = resultSet2.getNString("ticket_type");
String departureLoc = resultSet2.getString("departure_loc");
LocalDate departureAt = resultSet2.getDate("departure_at").toLocalDate();
String arrivalLoc = resultSet2.getNString("arrival_loc");
LocalDate returnAt = resultSet2.getDate("return_at").toLocalDate();
System.out.println("type : " + ticketType + ", 출발 : " + departureLoc + ", 도착 : " + arrivalLoc +
", 출국시간 : " + departureAt + ", 출국장소 : " + returnAt);
}
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
}
#슈퍼코딩, #1:1관리형부트캠프, #백엔드, #backend, #백엔드공부, #개발공부, #백엔드개발자 #취준일기, #취준기록, #취뽀, #빡공, #HTML/CSS, #javascript, #react , #java, #spring