MySQL 42

13강. SQL 테이블 제약조건(기본키, 외래키, 고유키)

05-2. 제약조건으로 테이블을 견고하게 👉🏻 제약 조건 - 테이블을 견고하게 만든다 - 데이터가 완전무결하게 도와준다 👉🏻 제약 조건의 기본 개념과 종류 ✅ 기본키 제약 조건 - ID는 기본키(Primary key) / 중복 불가 - 중복을 허용해버리면 이메일을 보낼 때 누구에게 보내는 건지 알 수 없다 - 혼란스러운 상황을 미연에 방지 - 데이터 결함이 없어지는 것 기본키 외래키 고유키 체크 기본값 NOT NULL 👉🏻 기본키 제약 조건 🧩 기본키 데이터를 구분할 수 있는 식별자 카카오톡의 수많은 회원 행들 중에서 아이디(기본키)만 알면 어떤 행인지 알 수 있다 값은 중복될 수 없다 NULL값이 허용되지 않는다 - 기본키 제약 조건은 가장 필수적으로 사용해야하는 제약 조건 - 테이블에는 기본키 제약 ..

MySQL/혼공SQL 2023.11.24

[프로그래머스 lv.1] 인기있는 아이스크림

❓문제 FIRST_HALF 테이블은 아이스크림 가게의 상반기 주문 정보를 담은 테이블입니다.FIRST_HALF 테이블 구조는 다음과 같으며, SHIPMENT_ID, FLAVOR, TOTAL_ORDER는 각각 아이스크림 공장에서 아이스크림 가게까지의 출하 번호, 아이스크림 맛, 상반기 아이스크림 총주문량을 나타냅니다. 문제 상반기에 판매된 아이스크림의 맛을 총주문량을 기준으로 내림차순 정렬하고 총주문량이 같다면 출하 번호를 기준으로 오름차순 정렬하여 조회하는 SQL 문을 작성해주세요. 예시 예를 들어 FIRST_HALF 테이블이 다음과 같을 때 상반기 아이스크림 맛을 총주문량을 기준으로 내림차순 정렬하고 총주문량이 같은 경우 출하 번호를 기준으로 오름차순 정렬하면 chocolate, melon, white..

[SQL 기초 강의] 12강. GUI 환경에서 테이블 생성하기, SQL로 테이블 만들기

05-1. 테이블 만들기 - 엑셀의 시트와 유사 (하지만 엑셀의 시트는 테이블이라 부르지는 않음) - 테이블은 DB안에 있는 객체 - GUI 방식 (마우스로 클릭)과 SQL문을 통한 방식이 있다 🗃️ 네이버 쇼핑 DB 구성도 👉🏻 테이블 설계 - 집 짓기 전 건축 설계도 그리는 것 처럼 🧩 회원 테이블 - ID를 PK로 - 평균 키는 UNSIGNED TINYINT (0~255) 🧩 구매 테이블 - 구매 테이블의 ID를 회원 테이블의 ID와 PK - FK 관계로 연결되도록 - 순번: 기본키 (PK), AUTOINCREMENT 👉🏻 GUI 환경에서 테이블 만들기 🎮 DB 만들기 - 일단 DB만 쿼리문으로 만드는 듯 - 더블 클릭을 통해 데이터베이스 사용하기 🎮 테이블 만들기 - naver_db를 열어 'Ta..

MySQL/혼공SQL 2023.11.20

[프로그래머스 lv.1] 흉부외과 또는 일반외과 의사 목록 출력하기

❓문제 다음은 종합병원에 속한 의사 정보를 담은DOCTOR 테이블입니다. DOCTOR 테이블은 다음과 같으며 DR_NAME, DR_ID, LCNS_NO, HIRE_YMD, MCDP_CD, TLNO는 각각 의사이름, 의사ID, 면허번호, 고용일자, 진료과코드, 전화번호를 나타냅니다. 문제 DOCTOR 테이블에서 진료과가 흉부외과(CS)이거나 일반외과(GS)인 의사의 이름, 의사ID, 진료과, 고용일자를 조회하는 SQL문을 작성해주세요. 이때 결과는 고용일자를 기준으로 내림차순 정렬하고, 고용일자가 같다면 이름을 기준으로 오름차순 정렬해주세요. 예시 DOCTOR 테이블이 다음과 같을 때 SQL을 실행하면 다음과 같이 출력되어야 합니다. 주의사항 날짜 포맷은 예시와 동일하게 나와야합니다. 🤔풀이 방법 고민해보..

[프로그래머스 lv.1] 12세 이하인 여자 환자 목록 출력하기

❓문제 다음은 종합병원에 등록된 환자정보를 담은 PATIENT 테이블입니다. PATIENT 테이블은 다음과 같으며 PT_NO, PT_NAME, GEND_CD, AGE, TLNO는 각각 환자번호, 환자이름, 성별코드, 나이, 전화번호를 의미합니다. 문제 PATIENT 테이블에서 12세 이하인 여자환자의 환자이름, 환자번호, 성별코드, 나이, 전화번호를 조회하는 SQL문을 작성해주세요. 이때 전화번호가 없는 경우, 'NONE'으로 출력시켜 주시고 결과는 나이를 기준으로 내림차순 정렬하고, 나이 같다면 환자이름을 기준으로 오름차순 정렬해주세요. 예시 PATIENT 테이블이 다음과 같을 때 SQL을 실행하면 다음과 같이 출력되어야 합니다. 🤔풀이 방법 고민해보기 PT_NAME, PT_NO, GEND_CDM AG..

[SQL 기초 강의] 11강. SQL 프로그래밍(IF문, CASE문, WHILE문, 동적SQL)

04-3. SQL 프로그래밍 - 한마디로 코딩하는 것 - 일반 언어보다는 약하지만 일반적 코딩에 가깝게 SQL을 사용할 수 있는 것 👉🏻 스토어드 프로시저 - SQL 프로그래밍은 기본적으로 스토어드 프로시저 안에 만들어야 한다 - 스토어드 프로시저 이름은 우리가 지정 - 'SQL 프로그래밍 코딩'하는 부분에 코드 작성 더보기 `DELIMITER $$`는 MySQL 쿼리를 작성할 때 사용되는 구분자(delimiter)를 변경하는 명령입니다. 이 명령은 주로 저장 프로시저(Stored Procedure), 트리거(Trigger), 이벤트(Event) 등과 같은 복잡한 쿼리 블록을 정의할 때 사용됩니다. 일반적으로, MySQL에서 기본 구문 구분자는 세미콜론(`;`)입니다. 하지만 저장 프로시저 등의 복잡한 ..

MySQL/혼공SQL 2023.11.14

[SQL 기초 강의] 10강. 두 테이블을 묶는 JOIN(INNER JOIN, OUTER JOIN, CROSS JOIN, SELF JOIN)

04-2. 두 테이블을 묶는 조인 👉🏻 조인 - 두 개의 테이블을 묶는 것 - 회원 테이블과 구매 테이블을 묶어 하나의 정보를 만들고 싶다 - 배송 정보의 경우 구매한 물건에 대한 정보와 배송을 받을 회원의 정보가 필요함 👉🏻 내부 조인 - 제일 중요하고 많이 쓰임 - **조인이라고 안 하고 그냥 '조인'이라고 하면 내부 조인이라고 생각하면 됨 🧩 일대 다 관계 (one to many) 내부 조인의 기본 조건 예외도 있긴 하지만 PK - FK 관계 - 회원 테이블의 ID - PK(중복 불가), 하나 밖에 없음 - 구매 테이블의 ID - PK로 지정하면 큰일남 (한 사람당 한 번 밖에 못 삼) - FK(외래키)로 잡음 - 한 회원이 여러번 나타날 수 있음 (=여러번 구매할 수 있음) ✅ 기본키 - 외래키 ..

MySQL/혼공SQL 2023.11.13

[SQL 기초 강의] 9강. MySQL의 데이터 형식(정수형, 문자형, 실수형, 날짜형)과 형 변환

04-1. MySQL의 데이터 형식 - 테이블에 열을 여러개 만들었다 - 각 열에는 데이터 형식이 지정되어있다 - 숫자, 문자, 날짜 등.. - 각 형식 안에서도 세분화됨 👉🏻 정수형 소수점이 없는 숫자 🧩 종류 ✅ INT Integer 가장 무난 /기본적 내부적으로 4byte 차지 데이터를 정말 많은 건수를 저장함 예를 들어 나이를 저장한다면 0~100정도가 될것이다. 그런데 INT는 -21억 ~ 21억 까지 아주 큰 범위를 저장할 수 있다. 하지만 나이를 이렇게 많이 표현할 필요는 없다 ✅ SMALLINT 바이트수가 INT의 절반 ✅ TINYINT SMALLINT보다 더 작은 것 나이 정도는 TINYINT로 가능 🎮 테이블을 만들어 확인해보기 - 데이터 입력 - 잘 들어감 🎮 범위를 넘는 수 넣어보기..

MySQL/혼공SQL 2023.11.11

[SQL 기초 강의] 8강. 데이터 변경을 위한 SQL 문(INSERT, UPDATE, DELETE)

03-3. 데이터 변경을 위한 SQL 문 - SELECT 문은 조회만 하는 것. 변경을 하진 않는다 👉🏻 INSERT문 🧩 기본 문법 INSERT INTO 테이블명 [(컬럼명, 컬럼명, ...)] VALUES(데이터, 데이터, ...) - 컬럼명은 생략 가능 🎮 모든 열에 데이터 넣기 🎮 나이 열에는 데이터를 넣지 않기 🎮 입력 순서 바꿔도 OK - 값만 맞춰 넣어주면 된다 - 귀찮아도 정확하기 때문에 권장되는 방식 🧩 Auto Increment - 위에처럼 ID를 직접 1, 2, 3,... 이렇게 입력해주는 것이 아니라 ID가 자동으로 증가하며 입력되도록 - 번호가 의미 있는건 아니고 자동 생성만 되면 된다 - 현실에서 물건을 구매했을 때 구매번호(아이디)가 Auto Increment (중복X) - 이..

MySQL/혼공SQL 2023.11.11

[SQL 기초 강의] 7강. SQL SELECT 절의 형식(ORDER BY 절과 GROUP BY 절)

03-2. 좀 더 깊게 알아보는 SELECT 문 👉🏻 ORDER BY절 - SELECT ~ FROM ~ WHERE 다음으로 다양한 것이 붙을 수 있다 - 순서는 꼭 지켜야 한다 결과를 정렬해서 보여준다 있어도 되고 없어도 된다 내용이 바뀌는 게 아니라 차례를 바꿔주는 것 🎮 ORDER BY 없이 - 가능하면 예약어를 대문자로 사용자 정의어를 소문자로 🎮 데뷔 날짜를 기준으로 (오름차순) 정렬하기 - 기본적으로는 오름차순 기준 - ASC를 명시해줘도 되고 안해줘도 되고 🎮 내림차순 기준으로 보기 🎮 순서를 지키지 않았을 경우 - 오류난다 - SELECT ~ FROM ~ HWERE ~ ORDER BY 순으로 나와야 한다 🎮 순서를 지키면 - 오류가 나지 않는다 - 잇지와 트와이스처럼 키가 같을 때 그 안에서..

MySQL/혼공SQL 2023.11.08