데이터베이스 7

[데이터베이스] 정규화 : 1NF, 2NF, 3NF, BCNF

데이터베이스 정규화 (Normalization) 앞선 포스팅에서 데이터베이스의 잘못된 설계로 발생하는 이상(Anomaly)과, 함수적 종속에 대해 알아보았다. [데이터베이스] 정규화 : 이상(Anomaly), 함수적 종속성 (Functional Depenency) 데이터베이스 이상 (Anomaly) 관계형 데이터베이스의 잘못된 설계에서 발생하는 데이터 중복으로 인해 발생하는 부작용을 이상(Anomaly)이라 한다. 이상 현상의 종류를 회원의 정보를 저장하는 예시 4legs-study.tistory.com 데이터 중복으로 발생하는 이상 현상을 제거하기 위해서는, 데이터베이스의 테이블을 올바르게 재구성해야 할 것이다. 이처럼 데이터베이스 설계 단계에서 중복이 최소화되도록 구조화하는 과정을 정규화(Normal..

데이터베이스 2021.03.25

[데이터베이스] 정규화 : 이상(Anomaly), 함수적 종속성 (Functional Depenency)

데이터베이스 이상 (Anomaly) 관계형 데이터베이스의 잘못된 설계에서 발생하는 데이터 중복으로 인해 발생하는 부작용을 이상(Anomaly)이라 한다. 이상 현상의 종류를 회원의 정보를 저장하는 예시 테이블을 보며 알아보자. ID NAME ORDER_ID SHIPMENT_ID MEMBERSHIP 0001 Lee 18254382 46257892 True 0002 Kim 18254383 37282462 False 0003 Park 18254384 24235423 False 0003 Park 18254385 68872151 False 0003 Park 18254386 68753212 False 0004 Choi 18254387 78951231 True 위 테이블의 기본 키는 ID + ORDER_ID 이다. ..

데이터베이스 2021.03.25

[데이터베이스] 트랜잭션 (Transaction)

트랜잭션 (Transaction) 트랜잭션은 데이터베이스의 상태를 변화시키는 작업의 단위를 의미한다. 데이터베이스의 상태를 변화시킨다는 것은 곧 테이블에 행을 추가하거나, 갱신하는 것을 의미한다. (즉, SQL문의 실행을 의미한다.) 하지만 하나의 SQL문이 반드시 하나의 트랜잭션이 되는 것은 아니다. 여러 질의어들의 묶음 또한 트랜잭션이 될 수 있다. 따라서, 트랜잭션이라는 하나의 큰 상자에 여러 SQL문을 넣는다는 형태로 이해하면 된다. 트랜잭션의 성질 : ACID Atomicity (원자성) 트랜잭션은 반드시 완전히 수행되거나, 아예 아무것도 수행되지 않아야 한다는 성질이다. 이는 곧, 트랜잭션은 일부만 진행된 상태가 될 수 없음을 의미한다. 만약 트랜잭션이 수행되던 도중 오류가 발생한다면, 반드시..

데이터베이스 2021.03.19

[SQL] JOIN

JOIN Orders 테이블에서 3번 ShipperID 가 배송하는 주문의 목록을 조회 //JOIN을 사용하지 않은 SQL문 SELECT Shippers.ShipperID, ShipperName, OrderID FROM Shippers, Orders WHERE Shippers.ShipperID = Orders.ShipperID AND Shippers.ShipperID = 3; //JOIN을 사용한 SQL문 SELECT Shippers.ShipperID, ShipperName, OrderID FROM Shippers INNER JOIN Orders ON Shippers.ShipperID = Orders.ShipperID WHERE Shippers.ShipperID = 3; 배송하는 주문의 수가 60개에서 ..

[SQL] GROUP BY, HAVING

집계 함수와 GROUP COUNT, SUM, AVG, MAX, MIN Customers 테이블에서 국적이 영국인 고객의 수를 조회 SELECT COUNT(*) AS Result FROM Customers WHERE Country = 'UK'; COUNT는 NULL값을 세지 않는다. Products 테이블에서 2번 카테고리에 속한 제품의 가격 총합을 조회 SELECT CategoryID, SUM(Price) as SumOfPrice FROM Products WHERE CategoryID = 2; OrderDetails 테이블에서 10248번 주문의 평균 구매수량 조회 SELECT OrderID, AVG(Quantity) as AvgOfQuantity FROM OrderDetails WHERE..

[SQL] ORDER BY

ORDER BY Products 테이블에서 2번 카테고리에 속한 제품들을 가격 오름차순으로 조회 SELECT * FROM Products WHERE CategoryID = 2 ORDER BY Price ASC; OrderDetails 테이블에서 ProductID + Quantity 값의 내림차순으로 모든 주문을 조회 SELECT OrderDetailID, ProductID * Quantity as value FROM OrderDetails ORDER BY value DESC; Products 테이블에서 각 제품을 이름 오름차순, 가격 내림차순 조회 //여러 개의 정렬 기준 사용 SELECT * FROM Products ORDER BY ProductName ASC, Price DESC;

[SQL] SELECT, INSERT, UPDATE, DELETE

SQL 실습 사이트 SQL Tryit Editor v1.6 WebSQL stores a Database locally, on the user's computer. Each user gets their own Database object. WebSQL is supported in Chrome, Safari, Opera, and Edge(79). If you use another browser you will still be able to use our Try SQL Editor, but a different ver www.w3schools.com 이 카테고리의 게시글들은 위 사이트의 테이블을 기준으로 작성되었다. SELECT, UPDATE, DELETE SELECT 모든 고객의 정보를 조회 SELECT *..