본문 바로가기
반응형

Database6

정규화 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 (.. 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.. 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); 위와 같이 서브쿼리가 메인쿼리와는 상관없이 독립적으로 수행될 수 .. 2023. 10. 13.
JDBC - PreparedStatement Statement(인터페이스) static(정적) SQL을 사용하기 위한 인터페이스 Static SQL에서 연산자를 사용하면 문제점 사용자에 의해 원치않는 결과가 생길 수 있음 예를들어 사용자에게 input을 통해 입력받은 값으로 WHERE 절에 대입할 수 있는 코드가 있다고 가정한다. 이는 사용자가 입력한대로 SQL문이 작성되기 때문에 위험하다. 즉, 악의적인 SQL문을 실행되게 함으로써 데이터베이스를 비정상적으로 조작하게 하며, 이것을 SQL injection이라고함. PreparedStatement SQL Injection 공격을 방지하고 DB 성능을 최적화하기 위한 기술 Statement에서 향상된 인터페이스 SQL 쿼리가 실행되기 전 DB 서버에 미리 컴파일됨. 즉, SQL 쿼리의 실행 계획을 .. 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= 데이터베이스 연결 시 사용할.. 2023. 10. 13.
MariaDB /SQL - 문법 모음 AND, OR -- suppliers의 country가 'sweden'이거나 'italy'만 조회 SELECT * FROM suppliers WHERE Country = 'sweden' OR Country ='Italy'; -- employees의 birthDate가 1963-08-01 ~ 1963-08-31 사이만 조회 SELECT * FROM employees WHERE BirthDate >= '1963-08-01' AND BirthDate = 100.0 AND Price = 100) AND (CategoryID = 1); BETWEEN -- price 30~40 사이 조회 SELECT * FROM products WHERE Price BETWEEN 30 AND 40; -- birthdate '195.. 2023. 10. 13.
반응형