Database 7

DB - JDBC의 이해

애플리케이션 개발 시 중요 데이터는 주로 데이터베이스에 보관한다. 이 데이터는 클라이언트, 애플리케이션 서버, 데이터베이스 간 상호 작용을 통해 처리되고 관리된다.  애플리케이션 서버와 DB의 일반적인 상호작용 클라이언트가 애플리케이션 서버를 통해 데이터를 저장하거나 조회할 때, 애플리케이션 서버는 다음과 같은 과정을 통해 데이터베이스와 통신한다.1. 커넥션 연결: 애플리케이션 서버는 주로 TCP/IP를 사용하여 데이터베이스와의 커넥션을 설정한다.2. SQL 전달: 애플리케이션 서버는 데이터베이스가 이해할 수 있는 SQL 문을 커넥션을 통해 전달한다.3. 결과 응답: 데이터베이스는 전달된 SQL을 실행하고 그 결과를 애플리케이션 서버에 응답한다. 애플리케이션 서버는 이 응답 결과를 이용하여 필요한 처리를..

Database 2024.07.25

정규화 Normalization (제 1~3 정규화)

정규화 Normalization (제 1~3 정규화) 정규화란? 데이터베이스 설계 프로세스에서 데이터를 구조화하고 조직화하는 과정을 나태는 것 데이터의 중복을 최소화하고 데이터의 일관성을 유지하며 DB의 효율성을 향상 시키는 것이 목적 제 1,2,3 정규형, BC 정규형, 4,5 정규형이 있음. 제 1 정규화 (FIRST NORMAL FORM) 1NF) 원자적 데이터를 가진 테이블, PK 컬럼이 있어야 한다 . -- PRIMARY KEY(주키, 기본키, PK) CREATE TABLE my_table27( id INT PRIMARY KEY, name VARCHAR(20) ); -- 또는 !! CREATE TABLE my_table28( id INT, name VARCHAR(10), PRIMARY KEY (..

Database/SQL 2023.10.13

서브 쿼리 - MariaDB/SQL

서브 쿼리란? 하나의 SQL문 안에 포함되어 있는 또다른 SQL문을 말함. 서브쿼리는 메인쿼리가 서브쿼리를 포함하는 종속적인 관계 메인 쿼리를 외부 쿼리라고도 부르며, 서브 쿼리를 내부쿼리라고도 부름 서브쿼리 예시 SELECT SupplierID, SupplierName FROM suppliers WHERE SupplierID = (SELECT SupplierID FROM products WHERE ProductName = 'tofu'); 위 예제는 product테이블의 ProductName 이 'tofu'라는 SupplierID를 서브쿼리에서 반환하고. 메인 쿼리의 where절에 대입하는 예제. SELECT OrderDate FROM orders WHERE CustomerID IN (SELECT Cus..

Database/SQL 2023.10.13

상관쿼리와 비상관쿼리 - MariaDB/SQL

비상관쿼리 메인쿼리와 서브쿼리 간에 데이터 종속성이 없는 쿼리를 나타낸다. 비상관쿼리는 독립적으로 실행되며, 메인쿼리에 영향을 미치지 않음. 주로 'IN', 'NOT IN', 'EXISTS', 'NOT EXISTS'등 연산자와 사용 SELECT COUNT(*) FROM customers WHERE Country = (SELECT Country FROM suppliers WHERE SupplierID =1); SELECT COUNT(*) FROM customers WHERE Country = (SELECT Country FROM suppliers WHERE SupplierID =2); 위와 같이 서브쿼리가 메인쿼리와는 상관없이 독립적으로 수행될 수 ..

Database/SQL 2023.10.13

JDBC - PreparedStatement

Statement(인터페이스) static(정적) SQL을 사용하기 위한 인터페이스 Static SQL에서 연산자를 사용하면 문제점 사용자에 의해 원치않는 결과가 생길 수 있음 예를들어 사용자에게 input을 통해 입력받은 값으로 WHERE 절에 대입할 수 있는 코드가 있다고 가정한다. 이는 사용자가 입력한대로 SQL문이 작성되기 때문에 위험하다. 즉, 악의적인 SQL문을 실행되게 함으로써 데이터베이스를 비정상적으로 조작하게 하며, 이것을 SQL injection이라고함. PreparedStatement SQL Injection 공격을 방지하고 DB 성능을 최적화하기 위한 기술 Statement에서 향상된 인터페이스 SQL 쿼리가 실행되기 전 DB 서버에 미리 컴파일됨. 즉, SQL 쿼리의 실행 계획을 ..

Database 2023.10.13

JDBC 기본

JDBC란 자바에서 데이터베이스에 접속할 수 있도록 하는 자바 API 자바 기반이므로, 자바 코드에서 동작한다. 데이터베이스 설정 정보 연결 application.properties spring.datasource.url= 데이터베이스 서버의 주소와 포트 데이터베이스 이름을 지정 JDBC URL 형식을 따름 예시 : jdbc:mysql://localhost:3306/mydb 여기서 "localhost"는 데이터베이스 서버의 호스트명이고, "3306"은 포트 번호, "mydb"는 데이터베이스 이름 spring.datasource.username= 데이터베이스 연결 시 사용할 사용자 이름을 지정 데이터베이스 연결 인증을 위해 사용 spring.datasource.password= 데이터베이스 연결 시 사용할..

Database 2023.10.13