데이터분석 study/SQL 13

TIL_24.09.10_COALESCE함수

SQL 코딩테스트 문제를 풀다가 다른 분들 풀이를 보고 몰랐던 함수에 대해서찾아보았다. ▶ COALESCE함수로 NULL 값 처리하기SELECT COALESCE(컬럼1, 컬럼2, 컬럼3, ... , 컬럼 N, ...) FROM table;     만약, 컬럼1이 null이 아니면 컬럼1을 반환되고, null이면 컬럼2를 반환    컬럼2가 null이 아니면 컬럼2를 반환하고, 컬럼1과 컬럼2 모두 null이면 컬럼3을 반환    컬럼1 ~ 컬럼5까지 null 이면 컬럼 6을 반환하는 형식  예시)SELECT COALESCE(컬럼1, 컬럼2, '공백') FROM member;결과값: 컬럼1의 null값 대신 컬럼2가 반환되고, 컬럼2의 null값 대신'공백'으로 반환  ▶ IFNULL과 COALESCE의 ..

TIL_24.08.02_MySQL 자료형

1. 자료형 선언2. 논리 구조화(with Pesudo 코드)3. 코드 구현 ▶숫자 자료형    - 컴퓨터는 이진(1,2)으로 데이터를 저장        - Boolean 자료형 (True, False)가 존재하는 이유          ○ 비트(binary digit, bit)              - 0과 1, 두 가지 값만 가질 수 있는 측정 단위           ○ 바이트 (Byte)               - 여덟개의 비트로 구성된 데이터의 양을 나타내는 단위     ● 정수형         - 정수형 자료형은 기본적으로 SIGNED(기본)과 UNSIGNED            옵션을 가질 수 있음.         - 전자는 양수/음수를 후자는 양수를 저장함         - 또한 정수형 자..

TIL_24.08.01_DDL, DML

▶key의 개념 알기이름설명특징기본 키(Primary Key)각 행을 고유하게 식별하게 사용되는 하나 이상의 컬럼- 한 테이블에는 하나의 키만 존재- NULL 값을 가질 수 없음- 각 행에 고유한 값외래 키(Foreign Key)한 테이블의 컬럼이 다른 키의 기본키를 참조하는데 사용되는 컬럼- 부모 테이블의 기본키와 동일- 제약조건을 통해 참조 무결성을 유지할 수 있음 ● 식별자 vs 기본키    ○ 식별자는 데이터베이스 설계 단계에서 사용하는 용어이며         각 행을 고유하게 식별할 수 있는 모든 속성 혹은 속성 조합을 나타냄     ○ 기본키는 각 각행을 고유하게 식별하는데 사용되는 선택된 식별자이며         테이블간의 관계(JOIN 등)을 기술하기 위해 사용 ● 참조무결성이란 두 테이블..

TIL_24.07.30_데이터 모델링

▶데이터 모델링     - 데이터의 구조와 관계를 정의하고 문서화하는 과정     - 개체(Entity), 속성(Attribute), 관계(Relationship)로 구성      1. 개념적 데이터 모델링:         - 핵심 엔터티와 그들간의 관계를 발견하고 ER Diagram을 생성      2. 논리적 데이터 모델링 : 비즈니스 정보의 구조와 규칙을 표현      3. 물리적 데이터 모델링 :           - 실질적으로 컴퓨터에 어떻게 저장될 것인가에 대한 정의             (저장구조, 저장 장치 등)       ● 행/열 표현법           - 분야에 따른 행/열에 대한 데이터를 부르는 명칭이 다르다.       방향엑셀/사무데이터베이스통계가로행(row)레코드(record..

TIL_24.07.29_데이터베이스와 MySQL

▶데이터베이스 서비스와 개념 설명    ● 왜 MySQL 부터 배울까?         - 관계형 데이터 베이스가 1970년에 개발된 이후로 기존의 레거시 기업들은            Oracle 데이터 베이스를 많이 사용하고 있다. 여전히 대기업들은 많이             사용함(금융회사 등)     ● 최근 RDB 현황             - 이를 이용한 오픈소스를 기반으로 한 RDB가 등장                (MySQL, Postgresql, SQLite) 하면서 대체되고 있는 상황              - 특히, 1995년 개발된 MySQL은 개인프로젝트에서는 무료로, 현재 점유율이                46.83%로 대중성이 높아 많이 사용되며, Trouble shooting..

TIL_24.07.24_MySQL 날짜형/날짜 변환, 가공함수

▶날짜 자료형함수예시기능CURDATECURDATE()현재 서버 날짜CURTIMECURTIME()현재 서버 시간NOWNOW()현재 서버 날짜 및 시간    ● MySQL 자료형 자료형형식설명DATETIMEYYYY-MM-DD HH:MMex. 기본날짜, 시간TIMEHH:MM:SSex. 하루 근무시간DATEYYYY-MM-DDex. 생일, 이벤트 날짜YEARYYYY or yyex. 4자리 or 2자리 년도TIMESTAMPYYYY-MM_DD HH:MMex. 로그 기록세계협정시(UTC기반)  ▶날짜 변환 & 가공 함수함수예시기능YEARYEAR('2024-07-24')년도 추출MONTHMONTH('2024-07-24')월 추출DAYDAY('2024-07-24')날짜 추출DAYNAMEDAYNAME('2024-07-24'..

TIL_24.07.16_ <union all, null 치환>

오늘도 똑같이 아침 코드카타 연습문제를 풀다가sql에서 헷갈렸던 부분을 확실하게 하고 넘어가고자 TIL을 작성한다. ▶ union과 union all    - union 과 union all은 두 개 이상의 조회 결과를 병합하는 경우에 사용   ● union 과 union all의 차이점     - 중복된 데이터를 포함하는 지의 여부       * union을 사용할 때 규칙          1) 각 쿼리의 select 절 칼럼의 개수 및 데이터 타입이 일치해야 한다.          2) 대응하는 컬럼명이 같아야 한다.(단, 별칭 사용 가능)          3) order by 절은 마지막에 한 번 사용 가능하다.         * union은 병합하는 과정에서 중복 데이터가 사라진다.        ..

TIL_24.07.12_다중 테이블 left join

오늘 아침에도 sql, 알고리즘 문제를 풀다가sql 문제에서 3개 테이블을 left join을 사용해서 문제를 풀어야 하는상황이었는데 with 문과 두 개 테이블 join하는 방법을 사용해서 풀었더니역시나 오답이었다.🤦‍♀️그래서 다른 분들 풀이를 찾아보았는데 3개 테이블을 join하는 방법이 있다는 것을알고, 구글링을 해보았다. 그랬더니 left join과 다중테이블을 left join하는 것에 대해서 이해가 아주 잘되게 글을 써주신 분의 블로그가 있었다.https://kimsyoung.tistory.com/entry/3%EA%B0%9C-%EC%9D%B4%EC%83%81%EC%9D%98-%ED%85%8C%EC%9D%B4%EB%B8%94-LEFT-JOIN-%ED%95%98%EA%B8%B0 3개 이상의 ..

TIL_24.07.11_join 과 using

오늘 아침에 SQL 과 알고리즘 문제를 푸는데 self join과 using에 대해서 모르는 부분들이 있어서 구글링을 해보았다. self join 은 서로 같은 테이블끼리 join 하여 사용하는 것인데join을 반드시 테이블을 결합할 때만 사용하는 것이 아니다.같은 테이블의 레코드 사이에서 관련성이 존재할 수 있기 때문이다. 그리고 join을 사용할 때 on 절을 사용하는 경우도 있지만 using 문법을 써서 사용하는 경우도 있다. using을 사용할 때에는 연결하려는 테이블 간의 키 컬럼명이 일치해야 한다. on절과 using의 차이점은 뒤에 조건을 붙일 때 이다.on절 뒤에는 and 를 붙여서 조건을 추가할 수 있지만, using은 뒤에 추가적으로 and 조건을 붙일 수 없다. 예시 코드-- ON 사..

TIL(Today I Learned) 24.07.01

● DML (Data Mani pulation Language) - 데이터 조작어 - 정의된 DB에 입력된 레코드를 조회 , 추가, 수정, 삭제하는 기능select : 조회Insert : 삽입Update : 수정Delete: 삭제● INSERT - 테이블에 새로운 데이터를 입력할 때 사용-- 특정 컬럼에만 값을 넣을 경우INSERT INTO table_name (column1, column2, column3, ...)VALUES (value1, value2, value3, ...);-- 모든 컬럼에 값을 넣을 경우 column 생략 가능.-- 테이블에 있는 컬럼의 순서와 같은 순서로 값을 넣어주어야함. INSERT INTO table_nameVALUES (value1, value2, value3, .....