테이블을 여러개 출력하고 싶다면 INNER JOIN을 쓰면 된다고하였습니다. 그리고 공통점이 있는 행만 필터링 하고 싶다면 ON을 쓰는 것도 배웠습니다. 근데 공통점이 하나도 없는 테이블을 JOIN 하고 싶다면??? 그때는 LEFT JOIN, RIGHT JOIN, OUTER JOIN 을 쓰면 됩니다. 일케 두 테이블이 있습니다. 왼쪽 테이블 전체 + 공통된 행 출력하고 싶으면 LEFT JOIN 그러니까유 지난 시간에 했던 INNER JOIN 결과 + 왼쪽 테이블 모든 행을 출력하고 싶다면 LEFT JOIN 쓰는 겁니다. SELECT * FROM program LEFT JOIN teacher ON program.강사id = teacher.id ⬆️ 진짜 모든 행이 나오는구만요 왼쪽 테이블의 강사id와 일치..
오늘은 join 문법을 파헤쳐보도록 하겠습니다. SQL 실력자들은 보통 join을 자유자재로 하는데요. 제가 스승으로 모시고 있는 용xx준 님도 스승님 이거 테이블 join 어떻게 해요 물어보면 ‘아 이거 별거 아니자나 이거 쉬움ㅋㅋ’ 이라고 하십니다. 누군가 일을 쉽게 한다? 그 분은 이미 전문가이십니다. 그럼 저희도 전문가로 가기위한 첫 발걸음을 떼 보도록 하겠습니다. ㄹㅊㄱㄹ 제 n정규형이 된 테이블을 만드는 것까지는 좋은데, 그거 한다고 해서 테이블을 다 쪼개 놓는다면 나중에 출력은 어떡할까요. 실은 SELECT, JOIN 문법으로 요리조리 잘 쓰면 되기 때문에 걱정할 필요 없습니다. JOIN을 쉽게 이해하려면 테이블을 합치는 방법부터 알아야합니다. 알아보시죠. 다른 테이블에 있는 컬럼도 한꺼번에..
열어분 제가 지난번에 모라그랬죠? DB를 설계할때 정규화로 테이블을 쪼개면 좋다고했죠 하지만 테이블을 그런식으로 100개를 쪼개놓는다면? 나중에 테이블 하나를 보고 있을때 이게 먼 테이블인가 판단하기 어질어질합니다. 그래서 테이블들의 관계를 도식화해서 그려놓기도 하는데요. 이것을 안티티티티 프레자일이 아니라 엔티티 관계도(ERD : Entity Relationship Diagram)이라고 합니다. ⬆️ 요로콤 생겼습니다. 새로운 기능을 추가하기위해 DB 설계를 위해 ERD부터 그리라고 요구하는 사람이 있기도하고, join 연산 같은거 할때 테이블간의 관계를 파악할때 ERD로 찾기도 합니다. 저희는 ERD를 직접 사용해보는 법을 알아보겠습니다. ERD 는 직접 종이에 그려도 되고요 무료로 온라인에서 ERD..
자 지난 시간까지 제1,2 정규형을 알아보았습니다. 오늘은 하… 기훈이형!!! 말고 3정규형을 알아보겠습니다. 제3정규형(3rd Normal Form) 제 2정규형을 만족하는 테이블에서 primary key 또는 composite primary key 컬럼에 종속되는 것이 아닌 하찮은(무도 박명수) 잔챙이 컬럼에 종속된 컬럼을 다른 테이블로 뺀다면 그것이 제3정규형입니다. [체육센터 테이블] 프로그램 가격 강사 출신대학 스쿼시 5000 팜하니 서울대 축구 4000 손흥민 서울대 헬스 7000 덱스 연세대 헬창과정 8000 덱스 고려대 탁구 3000 팜하니 연세대 ⬆️ 대충 제2정규화를 만든 테이블입니다. 이 테이블은 2정규형을 만족하기 때문에 partial dependency는 없습니다. 하지만 ‘출신대..
[책대여내역 table] 회원아이디 책이름 날짜 회원등급 책가격 반납여부 kuk 디자인책 2월23일 우수 1000 1 kim 만화책 2월24일 일반 2000 0 park SQL책 2월25일 일반 1000 1 park 소설책 2월25일 일반 2000 0 Q1. 위 테이블에서 ‘책가격’ 컬럼은 다른 테이블로 옮기는게 좋을까염? 위 테이블에 composite primary key 는 ‘회원아이디’, ‘날짜’, ‘책이름’입니다. 다른 테이블로 빼야합니다. composite primary key 중 하나인 ‘책이름’에 종속 O composite primary key 중 하나인 ‘날짜’에 종속 X composite primary key 중 하나인 ‘회원아이디’에 종속 X 그래서 제 2정규형 만들려면 다른 테이블로 ..
차 번호만 알면 내 전여친의 현남친의 포르쉐가 중고인지 신차인지 알 수 있는 것처럼, 정규형을 알면 DB 설계가 가능하다.(1NF, 2NF) 사람들은 보통 쿼리를 짤 때 JOIN 문법을 매우매우매우 어려워합니다. 이걸 왜하는지, 왜 테이블을 애초에 여러개로 나눠놓는거지? 이해도 안가고 세상아 덤벼라 반발심도 생길텐데요. 오늘 배우는 정규화/정규형을 배우면 매우매우 쉬워집니다. 배워두면 손해볼 것 없는 장사이니 잘 알아보도록 합시다. 제 1 정규형(1st normal form) 여러분은 지금부터 종합 운동센터 전산시스템을 만드는 개발자입니다. 일단 센터에 등록한 사람들을 테이블을 정리하고 싶습니다. 후딱 만들어보겠습니다. [센터등록회원현황] 회원번호 이름 신청프로그램 10001 국성우 수영 10002 김태..
컬럼에 Constraints (제약조건) 주기 컬럼 만들 때 제약조건을 걸어둘 수 있습무니다. 이 컬럼은 NOT NULL 해야한다.(텅빈 데이터 넣지마삼) 이 컬럼에 있는 데이터들은 항상 UNIQUE 해야한다. 여기에 음수 말고 양수만 들어오는지 check 해라 이 컬럼을 PK로 설정해라 등 여러가지 설정이 가능합니다. 1. NOT NULL 제약 조건 CREATE TABLE 적자생존 ( id INT NOT NULL, 이름 VARCHAR(100) NOT NULL, 나이 INT ) 컬럼 만들때 우측에 NOT NULL 을 체크해주면 NULL 금지령을 때릴 수 있습니다. 원래 데이터를 넣을 때 까먹고 안넣으면 자동으로 NULL 이 됩니다. 그래서 NOT NULL 을 입력해두면 나중에 이름 컬럼이나 id 컬럼에 ..
다덜 DBeaver나 다른 RDBMS에서 클릭하면서 테이블만들고 컬럼 생성하시나요? 실은 쿼리로 테이블과 컬럼을 만들 수 있습니다. 제가 그냥 말단 청소하는 직원이라면 테이블 생성보다는 테이블을 가져다쓰는 일만 많겠지만 인생한방이라고 어떻게 될지 모르는 거 아니겠습니까. 그래서 오늘은 SQL 문법으로 새로운 테이블과 컬럼 만드는 법을 알아보도록 하겠습니다. 렛츠 콩 데이터베이스 생성, 삭제하는 법 CREATE DATABASE 데이터베이스이름 DROP DATABASE 데이터베이스이름 위는 생성 아래는 삭제. 삭제하면 돌이킬 수 없는 강을 건넙니다. 테이블생성 CREATE TABLE 테이블명 ( 컬럼1이름 datatype, 컬럼2이름 datatype, 컬럼3이름 datatype, ... ); 원하는 데이터베..
중요한 IF / CASE 문법 자주쓰는 IF 함수 쿼리를 다루다뷰면 문자나 숫자 같은 데이터 넣는 곳이 많습니다. 근데 그 곳에 한가지 고정이 아니라 조건에 따라 각각 값을 넣고 싶을때 if/case문을 사용합면 됩니다. IF(조건식, 조건식맞으면이거, 조건식틀리면이거); IF() 안에 차례로 이것들을 넣으면 됩니다. 조건식은 WHERE 뒤에 쓰던거 그대로 사용하시면 됩니다. SELECT IF(1+2=3, '정답', '오답'); 이렇게 쿼리를 날리면 어떻게 될까요? 조건식이 참이니 ‘정답’이라는 문자가 그 자리에 남습니다. IF()는 문자, 숫자 등의 데이터가 들어가는 곳에 전부 넣을 수 있기 때문에 이렇게 사용할 수 있습니다. 예를들어 card 테이블에서 사용금액이 20만원이 넘는 경우 ‘부자’ 그게 ..
이런 🐴 이 있습니다. “데이터는 거짓말을 하지 않는다.” 이 데이터 속에 숨겨진 의미를 찾고 싶다면 전체를 통계내는 것보다는 그룹으로 묶고 그 특정 그룹에 안에서 통계를 내는 것이 훨 ~ 씬 더 쉽습니다. 특정 그룹을 뽑고 싶다면 WHERE을 쓰면 되지만, 그룹이 뽑을게 많다? 그렇다면 GROUP BY를 쓰면 됩니다. GROUP BY SELECT 시군구명 FROM 강원도_관광숙박업_현황 GROUP BY 시군구명; select from 뒤에 group by 컬럼명을 붙일 수 있는데, 일케하면 그 컬럼에 있는 카테고리끼리 그룹지어 보여줍니다. ㄹㅇ이네;;; 근데 그룹만 지으면 아무 쓰잘데기 없습니다. GROUP BY 는 전에 했던 MIN, MAX, COUNT, SUM, AVG 함수와 같이 사용하는 경우가 ..