CS 116

[혼공SQL] 제약 조건

제약 조건이란 데이터의 무결성(데이터에 결함이 없음)을 지키기 위해 제한하는 조건을 의미합니다. 이러한 제약 조건에는 PK 제약조건, FK 제약조건, UNIQUE 제약조건, CHECK 제약 조건, DEFAULT 제약 조건, NULL값 허용이 있습니다. 오늘은 이들의 제약조건에 대해서 알아보겠습니다. PK 제약조건 테이블의 열에 PK 제약조건을 추가할 수 있다. PK(Primary Key)는 데이터를 구분할 수 있는 식별자를 의미하며 이는 중복될 수 없고 NULL이 될 수 없다 는 특징이 있다. 이렇게 기본키로 생성한 데이터는 자동으로 클러스터형 인덱스가 생성된다고 한다. 클러스터형 인덱스에 관해서는 나중에 다룬다. 또한 테이블에서는 기본 키를 하나만 가질 수 있다. 테이블의 특성을 가장 잘 반영하는 열을..

CS/DB 2024.01.29

[혼공SQL] 혼공단 11기 - 4주차 미션 인증

이번 주는 지원서도 제출하고... 이런 저런 일들로(사실 핑계지만..) 혼공S를 끝까지 미루다가 드디어 했다. 조금은 양심에 찔리긴 하는데...ㅎ 이번 주는 DB의 세가지 핵심 개체..? 중 하나인 뷰에 대해서 학습한다. 어려운 개념은 아니었어서 정리하면서 빠르게 흡수되는 느낌이 좋았다. 내일이면 SQLD 신청도 해야하는데, 다시 마음 다잡고 5주차 미션을 진행하도록 하겠어! 4주차 학습 내용 공유합니다. 2024.01.29 - [CS/DB] - [혼공SQL] 제약 조건 2024.01.29 - [CS/DB] - [혼공SQL] 뷰 4주차 기본 미션 p.226의 market_db의 회원 테이블(member) 생성하고, p.229 데이터 입력한 후 인증하기 4주차 선택 미션 p.271 확인 문제 4번 풀고 ..

CS/DB 2024.01.28

[혼공SQL] 혼공단 11기 - 3주차 미션 인증

생각보다 많은 내용을 배워서 정리할 것도 많았던 3주차.. 그래도 SQL에 대해서 감을 많이 잡은 것 같아서 좋다! 이번 3주차에 진행하면서 정리한 내용들을 링크로 공유합니다! 2024.01.15 - [CS/DB] - [혼공SQL] MySQL의 데이터 형식 2024.01.15 - [CS/DB] - [혼공SQL] 변수의 종류와 사용 2024.01.15 - [CS/DB] - [혼공SQL] 데이터의 형 변환 2024.01.17 - [CS/DB] - [혼공SQL] 두 테이블을 묶는 JOIN 2024.01.17 - [CS/DB] - [혼공SQL] SQL 프로그래밍 3주차 기본 미션 p.195의 확인 문제 4번 풀고 인증하기 정답 : 4 해설: LEFT JOIN을 수행하게 된다면, member 테이블의 모든 값이..

CS/DB 2024.01.17

[혼공SQL] SQL 프로그래밍

스토어드 프로시저 MySQL에서 프로그래밍 기능이 필요할 때 사용하는 데이터베이스 개체를 의미합니다. 스토어드 프로시저의 형식은 아래와 같습니다. DELIMITER $$ CREATE PROCEDURE 스토어드_프로시저_이름() BEGIN -- SQL 프로그래밍 구문들 END $$ DELIMITER ; CALL 스토어드_프로시저_이름(); -- 스토어드 프로시저 호출 여기서 DELIMITER를 사용하는 것을 알 수 있습니다. DELIMITER는 문장을 구분자를 지정하는 키워드입니다. 만약 우리가 스토어드 프로시저에서 문장 구분자를 변경하지 않는다면, 스토어드 프로시저 내에서 작성하는 SQL문이 서버로 끊어져서 전송되게 됩니다. 만약 문장 구분자를 변경하여 진행한다면, 스토어드 프로시저의 전체를 한번에 보낼..

CS/DB 2024.01.17

[혼공SQL] 두 테이블을 묶는 JOIN

JOIN 두 개의 테이블을 묶어서 하나의 결과를 내는 것을 말합니다. 두 개뿐만 아니라 3개, 4개도 가능하지만 2개가 통상적으로 사용됩니다. 예를 들어 회원 테이블에는 회원 이름과 연락처, 주소 정보가 있고 구매 테이블에는 회원이 구매한 물건의 정보가 있다고 해봅시다. 물건 배송을 위해서는 각 물건에 따른 회원의 주소 정보가 필요합니다. 따라서 이러한 경우에 두 테이블을 묶는 JOIN이 필요하게 됩니다. JOIN에는 내부 조인, 외부 조인, 상호 조인, 자체 조인이 있으며 이에 대해서 다뤄보겠습니다. 내부 조인 내부 조인은 두 테이블 사이에 어느 열에 공통된 데이터가 있을 때 사용할 수 있습니다. 또한 내부 조인을 위해서는 두 테이블이 일대다 관계로 연결되어 있어야합니다. 내부 조인의 형식은 아래와 같..

CS/DB 2024.01.17

[혼공SQL] 데이터의 형 변환

데이터의 형변환 데이터베이스의 데이터 타입 중 문자형을 정수형으로 바꾸거나 정수형을 문자형으로 바꾸는 것처럼 데이터의 형을 변경하는 행위를 형 변환이라고 합니다. 형 변환에는 함수를 사용해 직접 데이터의 타입을 변경하는 명시적 형 변환과 별도의 작업 없이 자연스럽게 변환되는 암시적 형 변환이 있습니다. 이 두 가지에 대해서 알아봅시다. 명시적 형 변환 명시적 형 변환에서는 CAST()와 CONVERT() 함수를 사용하여 데이터의 형 변환을 수행할 수 있습니다. 두 함수는 아래와 같이 사용할 수 있습니다. CAST(값 AS 데이터 형식[(길이)]) CONVERT(값, 데이터 형식[(길이)]) 실제 사용되는 경우를 확인해봅시다. SELECT AVC(price) AS '평균 가격' FROM buy; -- 수행..

CS/DB 2024.01.15

[혼공SQL] 변수의 종류와 사용

오늘은 MySQL에서 변수를 사용하는 방법에 대해서 알아봅니다. 사용자 정의 변수 변수의 선언 및 초기화 SQL 문에서 변수는 아래와 같이 선언 및 초기화를 진행할 수 있습니다. SET @변수이름 = 대입값; SELECT @변수이름 := 대입값; SQL에서는 SET을 제외한 나머지에서 등호(=)는 비교연산자로 취급됩니다. 따라서 SELECT에서는 콜론과 등호를 합쳐(:=) 사용하여 변수에 값을 대입해줄 수 있습니다. 변수 호출 SELECT @변수이름; -- 변수 호출 이렇게 변수에 어떤 값이 대입되었는지 출력 결과를 통해서 확인할 수도 있습니다. 변수의 사용 SET @txt = '가수 이름 ==> '; SET @height : 166; SELECT @txt, mem_name FROM member WHER..

CS/DB 2024.01.15

[혼공SQL] MySQL의 데이터 형식

데이터베이스에 값을 저장하기 위해서는 데이터를 저장할 공간이 필요합니다. 하지만 데이터베이스에서 우리가 어떤 값을 입력하냐에 따라서 항상 고정된 크기만큼을 할당하거나, 항상 데이터의 길이를 체크해서 공간을 할당하는 것은 상당히 비효율적으로 보입니다. 따라서 사용자가 데이터베이스의 테이블을 구성할 때, 각 열에 입력할 데이터의 형식을 지정해주어, 데이터를 효율적으로 저장할 수 있습니다. 그 중에서도 MySQL에는 어떤 데이터 형식이 있는지를 알아보겠습니다. 데이터 형식 MySQL에서는 데이터의 형식이 크게 정수형, 문자형, 실수형, 날짜형, 대규모 데이터 전용 형식이 존재합니다. 이에 대해 자세하게 알아봅시다. 정수형 데이터 형식 바이트 수 숫자 범위 TINYINT 1 -128 ~ 127 SMALLINT ..

CS/DB 2024.01.15

[혼공SQL] 혼공단 11기 - 2주차 미션 인증

혼공단 2주차 미션 인증합니다! 이번 주는 기존에 알고있던 간단한 쿼리문을 복습하는 시간이었습니다. 그래서 무난하였던 것 같습니다. 다만 조금 구체적으로 알고있지 않았던 것들을 알게돼서 수확이 있는 한 주인 것 같다!! 또한 혼공s에서 다루는 내용들이 다소 가볍고 양이 적다보니까, 혼공운체까지 진행해보려고 한다. 화이팅!!! 2주차 기본 미션 다음 보기 중에서 각 문항의 빈칸에 들어갈 것을 고르세요. 1번에는 ORDER BY가 들어간다. height를 기준으로 member의 전체 테이블을 정렬하는 쿼리문이다. 기본은 ASC며 오름차순으로 정렬된다. 2번에는 LIMIT가 들어간다. member 테이블에서 5번째 데이터부터 2개까지를 가져오는 쿼리문이다. 그래서 총 5번째와 6번째 데이터가 출력 결과로 나오..

CS/DB 2024.01.11

[혼공SQL] 데이터 변경 SQL

이번에는 데이터베이스에 값을 변경하기 위한 INSERT, UPDATE, DELETE를 알아본다. 데이터 입력 INSERT CREATE TABLE hongong (toy_id INT, toy_name CHAR(4), age INT); INSERT INTO hongong VALUES (1, '우디', 25); 1열에서는 테이블을 생성하였고, 해당 테이블에 대한 값을 2열에서 INSERT한 모습이다. 해당 SQL 문에서는 모든 열에 해당하는 값을 넣어주었기 때문에 생략된 부분이 존재한다. 아래를 보자. INSERT INTO hongong (toy_id, toy_name) VALUES (2, '버즈'); 이렇게 원하는 열에만 데이터를 넣을 수도 있다. 자동으로 증가하는 AUTO_INCREMENT AUTO_INC..

CS/DB 2024.01.11