MySQL 34

2024.07.08 MySQL 활용 UNION 연산자 - 13 (미완)

class_40.sql 학습 목표 UNION 연산자에 대한 개념을 이해하자. UNION 연산자와 JOIN에 차이점을 이해하자. UNION 연산자는 SQL에서 여러 SELECT 문의 결과를 하나의 결과 집합으로 결합할 때 사용됩니다.즉, 서로 다른 테이블이나 같은 테이블의 다른 조건에서 검색된 데이터를 하나의 결과로 볼 수 있도록 하기 위해 사용한다.기능: UNION은 두 개 이상의 SELECT 결과를 결합합니다.조건: 모든 SELECT 문은 동일한 수의 열을 가져야 하며, 열의 데이터 타입이 호환 가능해야 합니다.중복 제거: 기본적으로 UNION은 중복된 행을 제거합니다.중복 포함: 중복된 행을 포함하려면 UNION ALL을 사용합니다. 사용 예시 SELECT name, email FROM custome..

MySQL 2024.07.08

2024.07.08 MySQL 활용 제 3정규형(Third Normal Form, 3NF) - 12

제 3정규형(Third Normal Form, 3NF)데이터베이스 테이블이 제 2정규형(2NF)을 만족하며, 추가적으로 모든 비기본 키 속성이 기본 키에만 종속되고 기본 키가 아닌 다른 속성에는 종속적이지 않아야 합니다. 이를 '이행적 종속성이 없어야 한다'고 합니다.  이행적 종속이란?A -> B, B -> C의 종속 관계에서 A가 B에 종속되고, B가 C에 종속될 때, 간접적으로 A가 C에 종속되는 관계를 말합니다.  제 3정규형을 만족하지 못하는 예제 학생ID학생 이름과목코드과목명교수ID교수 이름1홍길동MAT101수학101김교수2이순신ENG101영어103박교수 학생 성적 테이블학생 성적 테이블이 제 3정규형(3NF)을 만족하도록 설계하기 위해 이행적 종속성을 제거해야 합니다.현재 테이블에서 교수 이..

MySQL 2024.07.08

2024.06.13 MySQL 활용 제 2정규화(Second Normal Form, 2NF)

class_33.sql   2NF를 만족하지 못하는 데이터 예제 학생들이 수강하는 과목과 그 과목의 담당 교수에 대한 정보를 포함하는 테이블을 설계여기서 pk는 학생ID, 과목코드의 복합 키 이다. 수강 정보 테이블학생ID과목코드과목명담당 교수1MAT101수학김교수1SCI101과학이교수2MAT101수학김교수2ENG101영어박교수     위 테이블에서 '과목명'과 '담당 교수'는 과목코드에 부분적으로 종속되어 있습니다.즉, 학생ID와는 직접 적인 관련이 없습니다.  2NF 문제 해결 2NF를 만족시키기 위해 부분 종속성을 제거해야 합니다.이를 위해 위 테이블을 분해하여 부분적 종속성을 제거할 수 있습니다. 수강 정보 테이블: 학생ID, 과목코드과목 정보 테이블: 과목코드, 과목명, 담당 교수 수강 정보 테..

MySQL 2024.06.13

2024.06.13 MySQL 활용 제 1정규화(First Normal Form, 1NF)

정규화란?데이터베이스에서 정규화는 데이터를 조직화하고 중복을 최소화하기 위해 데이터베이스 테이블의 설계를 시스템적으로 개선하는 과정입니다.정규화를 통해 데이터의 무결성과 일관성을 유지하면서 효율적인 데이터 관리가 가능해집니다.정규화(Normalization)의 기본 목표테이블 내에서 발생할 수 있는 데이터의 중복을 최소화하여 이상 현상을 방지하고, 데이터 무결성을 유지하는 것입니다.  제 1정규화 테이블(Relation)이 제 1정규형을 만족했다는 것은 아래 세 가지 조건를 만족했다는 것을 의미합니다.어떤 Relation에 속한 모든 Domain이 원자값(atomic value)만으로 되어 있다.모든 attribute에 반복되는 그룹(repeating group)이 나타나지 않는다.기본 키를 사용하여 관..

MySQL 2024.06.13

2024.06.13 MySQL활동 서브 쿼리란

class_32.sqlsubquery란?서브쿼리(subquery)는 SQL 문장 내에서 다른 SQL 쿼리를 내포하는 구문입니다. 서브쿼리의 개념서브쿼리는 보통 소괄호 () 안에 작성된다.메인 쿼리(main query) 또는 외부 쿼리(outer query)라고 하는 더 큰 SQL 쿼리의 일부로 존재합니다.서브쿼리는 메인 쿼리에 의해 반환된 데이터를 기반으로 추가적인 조건을 적용하거나, 메인 쿼리의 조건을 정의하는 데 사용됩니다.  문법에 형태 select * from reservationwhere name in( select name from customer where address ='서울' ); 서브쿼리를 사용하는 이유복잡성 감소: 복잡한 쿼리를 더 작고 관리하기 쉬운 부분으로 나누어 처리할 수 있습..

MySQL 2024.06.13

2024.06.12 MySQL 활용 쇼핑몰과 카테고리 2단계

class_29.sqlclass_30.sqltb_categories 테이블 Field Name Data Type Description Constraints Example Values category_idINT카테고리의 고유 IDPRIMARY KEY, AUTO_INCREMENT1, 2, 3parent_idINT상위 카테고리의 IDFOREIGN KEY, NULL 가능NULL, 1category_nameVARCHAR(100)카테고리 이름NOT NULL"남성복", "팬츠", "셔츠"  category_idparent_idcategory_name1NULL남성복2NULL여성복31팬츠 (남성복 --> 팬츠)42팬츠 (여성복 -->  팬츠)51셔츠 (남성복 --> 셔츠)62셔츠 (여성복 --> 셔츠)73면바지..

MySQL 2024.06.12

2024.06.12 MySQL 활용 쇼핑몰과 카테고리 1단계

class_28.sql tb_categoriesField NameData TypeDescriptionValuecategory_idINT카테고리 고유 ID1, 2, 3, 4 ...category_nameVARCHAR(100)카테고리 이름"상의", "하의", "외투" categories는 여러 product를 참조한다. 1:n카테고리와 상품은 1:N이다. use mydb3;-- tb_categories 테이블 생성create table tb_categories( category_id int auto_increment primary key, category_name varchar(100) not null);insert into tb_categories(category_name) values('상의');i..

MySQL 2024.06.12

2024.06.11 MySQL활용 블로그 서비스의 DB 구축(2)

class_26.sqlUser 테이블 명세서  Board 테이블 명세서  Reply 테이블 명세서 create database m_boad;use m_boad;create table user( id int primary key auto_increment, username varchar(100) not null unique, -- ex) 닉네임인 경우 (unique를 통해 중복검사) password varchar(255) not null, email varchar(100) not null, userRole varchar(20), createDate timestamp);-- board table, reply table 설계-- 하나의 게시글에는 여러개의 댓글이 달릴 수 있다. 1:..

MySQL 2024.06.11

2024.06.11 MySQL활용 쇼핑몰 서비스의 DB 구축(1)

쇼핑몰 사이트 구축하기 위해서 1. 회원가입에 대한 테이블 설계가 필요하다.2. 상품에 대한 정보를 저장하는 테이블이 필요하다.3. 주문 테이블 필요, 주문 상세테이블 필요 (정규화 과정 때문에) User Table 설계 도면 (사용자 테이블)Field (속성)Type (타입)Constraints (제약)desc (설명)idINTPK, auto_increment사용자 고유 IDusername VARCHAR(50)Not Null 사용자 이름emailVARCHAR(100)Not Null, Unique이메일 주소passwordVARCHAR(255)Not Null비밀번호addressVARCHAR(255)-주소created_at (회원 생성일)TIMESTAMPDefaultCURRENT_TIMESTAMP계정 생성 ..

MySQL 2024.06.11

2024.06.11 MySQL활용 SELF JOIN

class_25.sqlSelf join이란?하나의 테이블 내에서 자기 자신을 조인하는 것을 의미합니다.이는 동일한 테이블에서 서로 다른 행을 비교하고 조작하는 데 사용됩니다.Self join을 사용하면 동일한 열을 가진 두 개의 서로 다른 인스턴스 간의 관계를 파악하거나 계층적인 구조를 나타낼 때유용합니다. 예를 들어, 조직 구조에서 각 직원이 직속 상급자의 정보를 확인해야 할 때 self join을 사용할 수 있습니다.각 직원은 같은 테이블에 저장되어 있지만, 상급자와 직속 부하 직원 간의 관계를 파악하기 위해자기 자신과의 조인을 수행합니다. Column NameData TypeDescriptionemployee_idINT직원의 식별자employee_nameVARCHAR직원의 이름employee_pho..

MySQL 2024.06.11