목록SQL (11)
한 걸음씩
[프로젝트] 가상의 도서관 데이터베이스 구축 및 분석 [기본 지식]Primary Key테이블에서 각 행을 고유하게 식별하는 열, NULL 불가Auto Increment새로운 행이 추가될 때 자동으로 값이 증가함, 주로 기본 키에 사용.VARCHAR(100)문자열을 최대 100자까지 저장할 수 있음.NOT NULL해당 열에 NULL 값을 저장할 수 없음, 반드시 값을 입력해야 함!INT정수를 저장하는 데이터 타입 1. 데이터베이스 및 테이블 생성-- 도서 정보 테이블 생성CREATE TABLE Books ( book_id INT PRIMARY KEY AUTO_INCREMENT, title VARCHAR(100) NOT NULL, author VARCHAR(100) NOT NULL, ..
1. Normalization 정규화 RDB 설계 단계에서 중복을 최소화하여 데이터를 구조화하는 과정 구조화 : 크고, 제대로 조작되지 않은 테이블들과 관계들을 작고 잘 조직된 테이블과 관계들로 나누는 것 정규화는 해결하는 과정을 같으나 보는 관점에 따라 다를 수 있음 정규화 목적 "데이터를 쉽게 관리하기 위해!" 하나의 데이터를 무조건 한 곳에만 위치하도록 테이블 간의 관계는 키를 통해 형성 데이터를 변경하더라도 한 곳만 변경하는 구조 확립 ▶ 제1 정규화 데이터베이스의 각 필드에는 하나의 값만 저장해야 함 유사하게 정보를 저장하는 두 개의 필드가 있어서는 안 됨 반복되는 부분을 찾아 테이블을 분할하고 기본키가 될 필드를 작성 ⎣ 예시 테이블의 주문상품 필드에 여러 가지 값이 저장되어 있어서 분할함 ▶..
1. Transactions (다 성공하던지 혹은 다 실패하던지 해야 하는) 여러 쿼리문을 묶어서 하나의 작업처럼 처리하는 방법 START TRANSATION; # 트랜잭션 구문의 시작을 알림 state_ments; ... [ROLLBACK||COMMIT]; # COMMIT : 모든 작업이 정상적으로 완료되면 한꺼번에 DB에 반영 # ROLLBACK : 부분적으로 작업이 실패하면 트랜잭션에서 진행한 모든 연산을 취소하고 트랜잭션 실행 전으로 되돌림 ① Transaction practice ROLLBACK vs COMMIT SQL은 자동 commit 상태인데 ROLLBACK을 위해서 commit 비활성화 시킴 테이블 생성 자동 commit을 비활성화 시킨 상태이기 때문에 저장은 되지 않음 ROLLBACK전..
1. Subquery A query inside a query 단일 쿼리문에 여러 테이블의 데이터를 결합하는 방법 조건에 따라 하나 이상의 테이블에서 데이터를 검색하는 데 사용 SELECT, FROM, WHERE, HAVING 절 등에서 다양한 맥락에서 사용 # table 1에서 가장 나이가 어린 사람을 삭제해야 한다면? DELETE FROM table1 WHERE age = ( SELECT MIN(age) FROM table1 # 괄호 안이 subquery ); ① 가장 많은 돈을 소비한 고객 번호 조회 (payments 테이블 활용) ② 미국에 있는 사무실에서 근무하는 직원의 이름과 성 조회 (직원 정보는 employees, 사무실 정보는 offices 테이블에 존재) ③ 주문한 적이 없는 고객 목록..
수정 필요함 !! 1. Joining tables JOIN clause 둘 이상의 테이블에서 데이터를 검색하는 방법 INNER JOIN 두 테이블에서 값이 일치하는 레코드에 대해서만 결과를 반환 (교집합) OUTER JOIN LEFT JOIN 오른쪽 테이블의 일치하는 레코드와 함께 왼쪽 테이블의 모든 레코드 반환 (왼쪽 테이블 전체) RIGHT JOIN 왼쪽 테이블의 일치하는 레코드와 함께 오른쪽 테이블의 모든 레코드 반환 (오른쪽 테이블 전체) CROSS JOIN ▶ INNER JOIN clause SELECT select_list FROM table1 # 왼쪽 테이블 (무조건!) INNER JOIN table2 # 오른쪽 테이블 (무조건!) ON table.fk = table2.pk; # fk : 외..