SQL 15

3 Tables 세 개 테이블 조인

세 개 이상의 테이블 조인 3개 이상의 테이블을 조인은 2개 테이블을 조인 할때와 조금 다른 부분이 있습니다. 3개 테이블을 조인 할 때는 from 절에 세 개의 테이블과 두 개의 조인 유형이 있고 두 개의 on 하위절이 있습니다. [예시 1] SELECT c.first_name, c.last_name, ct.city FROM customer c INNER JOIN address a ON c.address_id = a.address_id INNER JOIN city ct ON a.city_id = ct.city_id; [출력 1] first_name last_name city JULIE SANCHEZ A corua PEGGY MYERS Abha 이렇게 여러 테이블을 조인할 때 주의할 점은, 조인 순서와 ..

SQL 2024.01.13

Group by & Having 절

Group by & Having 절 GROUP BY 절은 특정 열을 기준으로 결과를 그룹화합니다. HAVING 절은 GROUP BY 절과 함께 사용되며, 그룹에 대한 조건을 지정합니다. HAVING 절은 일반적으로 집계 함수와 함께 사용되어 그룹화된 결과에서 필터링을 수행합니다. HAVING 절은 WHERE 절과 유사하지만, WHERE 절은 개별 행을 필터링하고, HAVING 절은 그룹을 필터링합니다. [예시 1] SELECT c.first_name, c.last_name, count(*) FROM customer c INNER JOIN rental r ON c.customer_id = r.customer_id GROUP BY c.first_name, c.last_name HAVING count(*) >..

SQL 2024.01.10

Inner Join 테이블 연결

INNER JOIN은 SQL에서 두 개 이상의 테이블 간에 공통된 값을 기준으로 레코드를 결합하는 데 사용되는 키워드입니다. 이것은 데이터베이스에서 데이터를 효율적으로 관리하고 관계형 데이터베이스 시스템에서 강력한 쿼리를 작성하는 데에 중요한 역할을 합니다. INNER JOIN은 다른 종류의 JOIN과 달리, 양쪽 테이블에서 일치하는 행만을 반환합니다. 그렇기 때문에 INNER JOIN을 사용하면 두 테이블 간에 정확한 일치하는 행들을 결합할 수 있습니다. SELECT customer.first_name, customer.last_name, time(rental.rental_date) rental_time FROM customer INNER JOIN rental ON customer.cust..

SQL 2023.12.29

Tables 테이블 유형3: 가상 테이블

Tables 테이블 유형: 가상 테이블 SQL에서 가상 테이블은 실제 데이터를 포함하지 않고, 쿼리 실행 시에 동적으로 생성되는 결과 집합입니다. 가상 테이블은 주로 SELECT 문에서 사용되며, 일반적으로 뷰 (View)나 일시적인 결과 집합을 의미합니다. 다음 예시는 employee 테이블을 쿼리하여 4개의 열이 포함된 뷰 입니다. CREATE VIEW cust_vw AS SELECT customer_id, first_name, last_name, active FROM customer; 위와 같이 뷰를 생성 하더라도 데이터가 저장 되지는 않습니다. SELECT문 대신 뷰가 있기 때문에 다음과 같이 뷰를 쿼리할 수 있습니다. SELECT first_name, last_name FROM cust_vw W..

SQL 2023.12.28

Tables 테이블 유형2: 임시 테이블

Tables 테이블 유형2: 임시 테이블 SQL에서 임시 테이블은 일시적으로 데이터를 저장하고 처리하기 위한 임시적인 데이터 저장소입니다. 이러한 테이블은 쿼리 실행 도중에만 존재하며, 세션 종료 시에는 자동으로 삭제됩니다. 임시 테이블은 주로 중간 결과를 저장하거나 복잡한 쿼리를 단순화하기 위해 사용됩니다. 임시 테이블을 생성하려면 다양한 방법이 있습니다. 가장 일반적인 방법은 CREATE TEMPORARY TABLE 문을 사용하는 것입니다. 예를 들어: CREATE TEMPORARY TABLE temp_table ( column1 INT, column2 VARCHAR(255) ); 임시 테이블에 데이터 삽입 INSERT INTO temp_table (column1, column2) V..

SQL 2023.12.18

Tables 테이블 유형1: 파생 테이블

Tables 테이블 유형1: 파생 테이블 SQL에서 테이블은 데이터베이스에 저장된 일련의 행 집합입니다. 하지만 관련 행들의 집합의 저장 형태에 따라 테이블을 나눌수 있습니다. 영구 테이블(permanent table): create table 문으로 생성 파생 테이블(derived table): 하위 쿼리에서 반환하고 메모리에 보관 임시 테이블(temporary table): 메모리에 저장된 휘발성 데이터 가상 테이블(virtual table): create view 문으로 생성 파생 테이블 서브쿼리는 다른 상위 쿼리가 참조하는 쿼리로 괄호로 묶여 있으며 select 문에서 찾을 수 있습니다. 그러나 from 절 내에서의 서브쿼리는 from 절에 명시된 다른 쿼리의 테이블과의 상호작용이 가능합니다. S..

SQL 2023.12.16

Sakila 샤키라 예시

MySQL에 입문하시는 분들을 위한 연습용 데이터베이스는 샤키라(Sakila)를 추천 드립니다. 해당 데이터베이스는 DVD 대여점 체인을 설계하였습니다. 테이블 구성으로 customer, film, actor, payment, rental 그리고 category가 포함 되어 있습니다. 샤키라 예시를 다루기 위한 몇가지 쿼리 절입니다. SELECT ⇒ 쿼리 결과에 포함할 열을 결정합니다. FROM ⇒ 데이터를 검색할 테이블과, 테이블을 조인하는 방법을 식별합니다. WHERE ⇒ 불필요한 데이터를 걸러냅니다. GROUP BY ⇒ 공통 열 값을 기준으로 행을 그룹화합니다. HAVING ⇒ 불필요한 그룹을 걸러냅니다. ORDER BY ⇒ 하나 이상의 열을 기준으로 최종 결과의 행을 정렬합니다. SELECT 문 ..

SQL 2023.12.14

SQL table 테이블 수정

이번 장에서는 지난번에 설계한 person과 favorite_food 테이블을 활용하여 insert, update, delete, select 등을 사용하여 테이블의 데이터를 수정해 보도록 하겠습니다. ALTER TABLE 테이블 데이터 수정 전 데이터를 추가 할 때 person_id의 값이 null인 경우 person_id에서 사용 가능한 값 다음으로 넣어주는 기능입니다. 이를 ‘auto_increment’라고 합니다. ALTER TABLE person MODIFY person_id SMALLINT UNSIGNED AUTO_INCREMENT INSERT 문 INSERT INTO person (person_id, fname, lname, eye_color, birth_date) VALUES (null, ..

SQL 2023.12.13

SQL table 테이블 생성 2

SQL table 테이블 생성 지난번 ‘SQL table 테이블 생성 1’에서 사람과 좋아하는 음식에 대한 두 테이블 설계를 했었습니다. 이번장에서는 설계한 테이블에 이어서 SQL문을 만들어 데이터베이스에 테이블을 만들어 보겠습니다. CREATE TABLE person (person_id SMALLINT UNSIGNED, Fname VARCHAR(20), lname VARCHAR(20), eye_color CHAR(2), birth_date DATE, street VARCHAR(30), city VARCHAR(20), state VARCHAR(20), country VARCHAR(20), postal_code VARCHAR(20), CONSTRAINT pk_person PRIMARY KEY (person..

SQL 2023.12.11

SQL table 테이블 생성 1

SQL table 테이블 설계 이번 장에서 SQL 데이터베이스에서 테이블 설계하는 간단한 방법에 대해서 살펴보겠습니다. 우선 사람 정보를 담은 테이블부터 정의해 보겠습니다. 이름(name) 눈동자 색(eye_color) 생일(birth_date) 주소(address) 좋아하는 음식(favorite_foods) 열 자료형 허용값 name varchar(40) eye_color char(2) BL, BR, GR birth_data date address varchar(100) favorite_foods varchar(200) varchar형태의 데이터는 자유로운 형식의 데이터 입력이 가능합니다. eye_color 같은 경우는 2 문자로 허용값 BL, BR, GR 중 하나만 가능합니다. birth_date과 ..

SQL 2023.12.10