혼공SQL 14

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

우와.. 진짜 마지막 주차를 진행하게 되었네요... 뭔가 처음에는 엄청 열심히 막 화요일에 끝내버리고 이런 느낌이었는데 시간이 갈수록 마감기한에 촉박하게 제출했던 기억이 남습니다... 이번주에는 정보처리기사 필기도 응시해서 당.당.히 합격했습니다!!(정처기가 당일처리기사라고 불릴만큼 쉽다지만요...하핫) 무튼 그렇게 이런저런 연휴도 보내면서 하다보니, 뭔가 많은 양은 아니었는데, 오랫동안 미뤄뒀었네요... 파이썬과 연결하여 진행하는 실습은 개념 부분이 아니라 따로 정리하지 않았고, 그 외의 7단원은 정리한 글 공유합니다! 2024.02.05 - [CS/DB] - [혼공SQL] 스토어드 프로시저 2024.02.07 - [CS/DB] - [혼공SQL] 스토어드 함수 2024.02.07 - [CS/DB] - ..

CS/DB 2024.02.17

[혼공SQL] 트리거

트리거 트리거는 테이블에서 DML문(INSERT, UPDATE, DELETE 등)의 이벤트가 발생할 때 자동으로 작동하는 기능을 말한다. 이는 테이블에 미리 부착되어 있다. 트리거는 어떤 DB에서 데이터를 삭제할 때, 해당 데이터를 완전히 삭제하는 것이 아닌, 과거 내역을 저장하는 histroy_DB에 저장하는 등의 행동을 할 때, 사람이 직접 하게 되면 이를 놓치거나 잘못 입력하여 다르게 작동시킬 수 있다. 트리거는 한번 선언하여 테이블에 붙여둠으로써 이를 해결하고 자동화하여 편리함을 제공한다. 트리거의 사용 트리거는 아래의 SQL문과 같이 사용이 가능하다. 스토어드 프로시저와 비슷하지만 조금 다른 부분이 존재하며, 아래와 같은 형식이 쓰이니 익혀두는 것을 추천한다. DELIMITER $$ CREATE..

CS/DB 2024.02.09

[혼공SQL] 스토어드 함수

스토어드 함수는 MySQL에서 제공하는 내장 함수를 제외한 나만의 함수를 만들 때 사용하는 기능이다. 스토어드 함수의 선언 스토어드 함수는 다음과 같이 선언하여 사용할 수 있다. -- 스토어드 함수 선언 DELIMITER $$ CREATE FUNTION 스토어드_함수_이름(매개변수) RETURNS 반환형식 BEGIN -- 내장 함수 내용 작성 RETURN 반환값 END $$ DELIMITER ; -- 스토어드 함수 호출 SELECT 스토어드_함수_이름(); 앞서 다룬 스토어드 프로시저와 다른 점은 RETURNS를 이용해서 반환값을 설정할 수 있다는 것이다. 또한 매개변수가 들어갈 자리에는 무조건 IN 매개변수만 입력되며 IN을 작성하지 않는다. 또한 CALL로 호출하지 않고 SELECT로 호출한다. 아래..

CS/DB 2024.02.07

[혼공SQL] 인덱스 사용 SQL

인덱스를 생성하고 삭제하는 과정에서 사용하는 SQL과 인덱스를 활용한 여러가지를 알아보자. 인덱스 생성 문법 인덱스를 생성하기 위해 사용하는 주 문법은 아래와 같다. 공식 문서의 문법은 아니지만 아래와 같은 형태를 주로 사용하니 참고하자. CREATE [UNIQUE] INDEX 인덱스_이름 ON 테이블_이름 (열_이름) [ASC | DESC]; UNIQUE는 아래의 두 가지 상황을 충족할 때 사용할 것을 권장한다. 현재 해당 열에 있는 데이터가 중복되지 않았을 때 추후 입력되는 데이터에서 해당 열의 중복 가능성이 없을 때 ASC, DESC는 인덱스를 오름차순으로 만들 것인지 내림 차순으로 만들 것인지를 결정하는 것인데 기본값이 ASC이며 DESC는 자주 사용하지 않는다. 또한 인덱스는 이름 앞에 idx_..

CS/DB 2024.02.01

[혼공SQL] 인덱스 내부 작동

인덱스는 내부적으로 균형 트리 형태로 만들어집니다. 균형트리는 자료구조 중 하나로써 범용적으로 많이 쓰이는 구조이니 알아두시면 좋습니다. 균형 트리의 개념 인덱스를 구현하는 데 사용되는 자료구조는 균형 트리입니다. 인덱스로써 쓰이는 균형 트리에 대해 조금 더 자세히 알아봅시다. 균형 트리 구조에서 데이터가 저장되는 공간을 노드라고 합니다. 아래의 그림은 노드 4개가 연결된 상태를 보여줍니다. 이러한 노드라는 용어를 MySQL에서는 페이지라고 부릅니다. 보통 페이지는 가장 작은 저장단위로도 쓰이는데 16Kbyte 정도의 크기를 갖습니다. 전체 테이블 검색 만약 균형 트리 구조를 사용하지 않는다면, 데이터를 검색하는데 어떠한 방식을 사용할까요? 아마도 전체 데이터를 검색하는 방식을 이용할 것 같습니다. 만약..

CS/DB 2024.02.01

[혼공SQL] 인덱스의 개념

인덱스의 개념 인덱스는 마치 우리가 책 뒷 부분에서 볼 수 있는 찾아보기와 같다. 개인 프로젝트와 같이 데이터의 양이 적은 상황에서는 인덱스의 효과를 체감할 수 없지만, 대량의 데이터를 다루는 곳에서는 인덱스가 필수적이다. 인덱스에는 클러스터형 인덱스와 보조 인덱스가 있다. 클러스터형 인덱스는 기본키로 지정하면 자동 생성되며 테이블에 1개만 만들 수 있다. 기본키로 지정한 열을 기준으로 자동으로 정렬되기 때문에, 효과적으로 데이터를 찾을 수 있는 것이다. 보조 인덱스는 고유 키로 지정하면 자동 생성되며 여러 개를 만들 수도 있지만 자동 정렬되지는 않는다. 인덱스의 단점 인덱스를 무작정 남용한다고 해서 좋지만은 않다. 예를 들면 SQL문으로 쓰여진 책이 있는데, 해당 책에서 SELECT문을 '찾아보기'를 ..

CS/DB 2024.01.30

[혼공SQL] 뷰

뷰 뷰란 테이블은 아니지만, 사용자가 테이블처럼 사용하는 데이터베이스의 개체 중 하나이다. 놀랍게도, 뷰의 실체는 SELECT 문이며, 뷰를 호출하는 순간 뷰에 있던 SELECT문이 호출되는 형태로 진행된다. 자세한 과정은 조금 뒤에서 다룬다. 뷰는 하나의 테이블과 연관되어 있을 때, 그러니까 JOIN을 사용하지 않았을 때 단순 뷰라고 부르며, JOIN을 사용하여 여러 테이블과 연관되어 있을 때는 복합 뷰라고 부른다. 뷰의 생성 뷰는 아래의 SQL문 형식으로 생성할 수 있다. CREATE VIEW 뷰_이름 AS SELECT 문; 실제 예시를 확인해보자. member 테이블이 존재하는데, 그 중에서 원하는 column만 뽑아와서 뷰를 만든 것이다. CREATE VIEW v_member AS SELECT m..

CS/DB 2024.01.29

[혼공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] 두 테이블을 묶는 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