Database 18

[MySQL]SQL INNER JOIN의 차이점: ON 절 vs WHERE 절

SQL에서 데이터베이스의 테이블을 조인하는 방법은 다양합니다. 그 중에서도 INNER JOIN은 매우 흔히 사용됩니다. 하지만 INNER JOIN을 사용할 때 ON 절과 WHERE 절을 혼용할 수 있는데, 이 두 가지 방법이 어떻게 다른지에 대해 자세히 알아보겠습니다.     INNER JOIN 개요INNER JOIN은 두 테이블 간의 공통된 열 값을 기준으로 행을 결합하는 데 사용됩니다. 주로 두 테이블의 관련 데이터를 결합하여 하나의 결과 집합을 만드는 데 사용됩니다.     두 가지 구문 비교첫번째 구문SELECT * FROM TABLE_A a INNER JOIN TABLE_B b ON a.temp = b.temp AND a.temp2 = b.temp2 이 구문은 두 테이블의 temp와 temp2 ..

Database/MySQL 2024.07.24

[MySQL]UNION과 UNION ALL의 공통점과 차이점

공통점 결과 행의 형식 두 연산자 모두 여러 SELECT 문의 결과를 단일 결과 집합으로 결합함 결과 집합 모든 SELECT 문의 결과를 하나의 결과 집합으로 반환함 컬럼 형식 각 SELECT 문에서 반환되는 열의 수와 데이터 형식이 동일해야 합니다. 차이점 중복 행의 처리 UNION 중복된 행을 제거함 즉, 중복된 결과 행은 하나의 행으로만 반환됨 UNION ALL 중복된 행을 제거하지 않고 모든 결과를 포함함 성능 UNION 중복 행을 제거하기 위해 추가적인 처리가 필요하므로 일반적으로 UNION ALL보다 더 많은 시간이 소요됨 UNION ALL 중복을 제거하지 않기 때문에 UNION보다 더 빠른 결과를 반환함 예시 - EMPLOYEES_1 테이블 id | name ----|------ 1 | Jo..

Database/MySQL 2024.01.31

[MySQL]MySQL 5.7과 MySQL 8.0의 차이 (1)

MySQL 5.7에서 MySQL 8.0로 업그레이드 최근에 내가 다니는 곳에서 MySQL 5.7 버전에서 8.0 대로 업그레이드 했다. 그냥 그러려니하고 나랑은 별 상관 없는 일이라고 생각하고 있었음 ㅋㅋ 근데 이번 개발건에서 쿼리가 조회가 되지 않았음 SELECT A.* FROM ( SELECT @ROW_NUMBER := @ROW_NUMBER + 1 AS ROW_NUM ... ) A WHERE 1 = 1 AND A.PK_NO = #{...} AND A.ROW_NUM = #{...} LIMIT 0, 1 뭐 대충 이런 쿼리였는데 암튼, PK_NO와 ROW_NUM에 해당하는 로우가 없다고 나왔음. 분명히 저 A만 따로 실행시키면 걍 데이터로 나온 애들 중에 해당 PK_NO와 ROW_NUM에 부합하는 데이터가..

Database/MySQL 2024.01.24

[MySQL]쿼리(DML 중 SELECT문) 실행 순서

DML 중 SELECT 쿼리의 실행 순서에 대해 알아볼거임. 순서만 띡 써놓으면 정 없으니까 간단한 설명도 같이 써볼 예정 ! SELECT 쿼리의 실행 순서 SELECT - FROM - WHERE - GROUP BY - HAVING - ORDER BY - LIMIT, OFFSET 얘네들이 다 필수로 SELECT 쿼리에 포함되어 있어야하는 것은 아님 ! SELECT이랑 FROM 말고는 다 옵셔널함 ! SELECT SELECT 절에서 원하는 열(컬럼)을 지정함. 이 단계에서는 데이터베이스에서 어떤 열을 반환할지 결정. SELECT column1, column2 FROM my_table; FROM FROM 절에서 데이터를 조회할 테이블을 지정. SELECT column1, column2 FROM my_tabl..

Database/MySQL 2023.09.04

[MySQL]날짜 포맷 변환하기 - DATE_FORMAT()

DATE_FORMAT() MySQL에서는 날짜나 시간을 다룰 때 이 DATE_FORMAT()이라는 함수를 사용해서 날짜나 시간을 다룸 ! 사용법 사용법은 이렇다 DATE_FORMAT(날짜관련컬럼명, '%Y-%m-%d') 시간이나 날짜와 관련된 컬럼명을 첫번째 인자에 넣어주고, 어떤 형식으로 변환하고 싶은지를 두번째 인자에 넣어주면 된다 ! DATE_FORMAT("날짜값", '%Y-%m-%d') 이렇게 시간이나 날짜 관련 컬럼이 아니라 바로 시간을 넣어줘도 가능 ! 사용 가능한 표현식 모음 MySQL 8.0 공식 문서에서 참고한 표현식의 종류임 !!! https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html MySQL :: MySQL 8.0..

Database/MySQL 2023.02.09

[MySQL]GROUP BY절과 HAVING절

GROUP BY절이란 https://seokmimmmmmmmm.tistory.com/225 [MySQL]GROUP BY절과 집계 함수 집계 함수란? https://seokmimmmmmmmm.tistory.com/224 [MySQL]집계 함수에 관하여 집계 함수란? 집계 함수는 결과 레코드들에 대한 레코드의 개수, 값들의 합, 최대값, 최소값, 평균 등 산술적인 연산의 결과 seokmimmmmmmmm.tistory.com 해당 글 참고 요약하자면 특정 그룹마다 집계 함수를 구하기 위한 방법으로 GROUP BY절을 사용하는 것이다 !!! GROUP BY절에 집계 함수를 사용하지 않기도 하니까... 특정 그룹마다 집계 함수를 사용하려면 GROUP BY절을 사용한다고 하는 것이 더 알맞는 것 같네...? 같은 ..

Database/MySQL 2023.02.07

[MySQL]GROUP BY절과 집계 함수

집계 함수란? https://seokmimmmmmmmm.tistory.com/224 [MySQL]집계 함수에 관하여 집계 함수란? 집계 함수는 결과 레코드들에 대한 레코드의 개수, 값들의 합, 최대값, 최소값, 평균 등 산술적인 연산의 결과를 얻을 수 있게 해줌 !!! 또한, 여러 행으로부터 하나의 결과값을 반환 seokmimmmmmmmm.tistory.com 위 글에서 알 수 있다시피 집계 함수란 여러 행으로부터 하나의 결과값을 반환하는 함수이다. 💡 그러므로 SELECT 절에서 다른 컬럼과 같이 조회하는 경우에는 문제가 발생할 수도 있다! (단일 컬럼 조회면 집계 함수가 사용되어도 상관 없음) 그렇기 때문에 GROUP BY절과 함께 사용되는 경우가 많다 !!! 이게 뭔말이냐 하면 SELECT절에서의 ..

Database/MySQL 2023.02.07

[MySQL]집계 함수에 관하여

집계 함수란? 집계 함수는 결과 레코드들에 대한 레코드의 개수, 값들의 합, 최대값, 최소값, 평균 등 산술적인 연산의 결과를 얻을 수 있게 해줌 !!! 또한, 여러 행으로부터 하나의 결과값을 반환하는 함수임. 집계 함수에는 COUNT(), SUM(), MAX(), MIN(), AVG()이 있다 ! COUNT(컬럼명) NULL 값을 제외한 레코드의 수 SUM(컬럼명) 컬럼명의 값들의 합 MAX(컬럼명) 컬럼명의 값들 중 가장 큰 값 MIN(컬럼명) 컬럼명의 값들 중 가장 작은 값 AVG(컬럼명) 컬럼명의 값들의 평균 COUNT(*) NULL을 포함한 모든 레코드의 수 -> 어떤 컬럼 A의 NULL값의 개수를 알고 싶으면 COUNT(*) - COUNT(A)라고 하면 되겠지 ? 중요 포인트 SELECT, H..

Database/MySQL 2023.02.07

[RDB 공통]SQL 쿼리 문법 작성 순서, 실행 순서 처리 과정

SQLD 공부 빠짝할 때만 해도 외우고 있었는데 오랜만에 쿼리 짜보려니까 까먹어서 글을 올려본다 !! SQL 쿼리 문법 작성 순서 SELECT - FROM - WHERE - GROUP BY - HAVING - ORDER BY SQL 쿼리 실행 순서 문법에서는 SELECT가 제일 먼저 와서 보통 SELECT가 제일 먼저 실행될 것이라고 많이들 생각하지만 그렇지 않음. 상세한 순서는 이렇다 ! FROM - ON - JOIN - WHERE - GROUP BY - CUBE | ROLLUP - HAVING - SELECT - DISTINCT - ORDER BY - TOP 하지만 보통 이것보다는 이렇게만 알고 있어도 될 듯 ??? FROM - WHERE - GROUP BY - HAVING - SELECT - ORD..

[MySQL]MySQL에서의 INDEX

INDEX 레코드 검색 기준: 책 목차 개념 PK 컬럼에는 자동으로 인덱스 객체 생성 검색 속도 빠름 CUD: 레코드 추가, 변경, 삭제 속도 저하 where 조건절에 많이 사용하는 컬럼에 인덱스 추가 인덱스 선정 기준 분포도가 좋은 컬럼 자주 조합되어 사용되는 컬럼들 수정이 빈번하지 않은 컬럼 Foreign Key로 사용되는 컬럼 MIN 또는 MAX 값을 자주 구하는 컬럼 정렬 기준으로 자주 사용되는 컬럼 예제 예제와 함께 SQL 쿼리들을 쭉 실행해보는 느낌으로다가 ㄱㄱ -- 테이블 생성된 인덱스 조회 show index from employees; -- 테이블 생성된 인덱스 조회 show index from departments; -- 인덱스 타는지 확인: 안탐 -> type은 all(full sca..

Database/MySQL 2022.03.19

[MySQL]MySQL에서의 VIEW

VIEW 가상 테이블 보안: 일부 칼럼에 대해서만 접근, 조회 전용 편리성 view 생성 create view 뷰이름 as select구문; view 삭제 drop view 뷰이름; 30번 부서원들의 부서번호, 사번, 이름, 급여정보를 갖는 view 생성 view 이름: view_emp30 예제 예제와 함께 SQL 쿼리들을 쭉 실행해보는 느낌으로다가 ㄱㄱ use ssafydb; -- 30번 6명 -- 조회 select department_id, employee_id, first_name, salary from employees where department_id=30; -- view 생성 create view view_emp30 as select department_id, employee_id, firs..

Database/MySQL 2022.03.19

[MYSQL]MYSQL 기본 문법: TCL

TCL이란??? TCL은 Transaction Control Language로 트랜잭션 제어 언어의 약자이다. 말 그대로 트랜잭션을 제어하는 언어인데, 이때 트랜잭션이란, 트랜잭션은 데이터베이스의 논리적 연산단위이다! 하나의 트랜잭션에는 하나 이상의 SQL 문장이 포함되며 분할할 수 없는 최소의 단위이다. 즉 ALL OR NOTHING. 트랜잭션의 특성도 몇가지가 있다. 특성 설명 원자성 (Atomicity) 트랜잭션에서 정의된 연산들은 모두 성공적으로 실행되던지 아니면 전혀 실행되지 않은 상태로 남아있어야 한다. ( All Or Nothing ) 일관성 (Consistency) 트랜잭션이 실행되기 전의 데이터베이스 내용이 잘못 되어 있지 않다면 트랜잭션이 실행된 이후에도 데이터베이스의 내용에 잘못이 있..

Database/MySQL 2022.03.18

[MySQL]MYSQL 기본 문법: SELECT절 - NULL과 ORDER BY, GROUP BY, HAVING

NULL null 의미는 어떠한 값인지 알 수 없음 연산 수행 불가 true and null ⇒ null false and null ⇒ false 오름차순정렬: null → 작은값 → 큰값 ifnull(값1, 값2) → 값1이 null이면 값2로 대체 nullif(값1, 값2) 값1 = 값2 null 반환 값1 ≠ 값2 면 값1 반환 ORDER BY 정렬 방법 오름차순: asc(생략 기본) 내림차순: desc(명시적 표기) 정렬데이터 순서 abc, 가나다 숫자, 날짜: 작은것 ~ 큰것 정렬대상 컬럼명 컬럼에 대한 별명 select 항목에 대한 index번호: index 시작 1번 수식 실습: -- 직원 부서번호, 사번, 직무, 입사일 정보 조회 select department_id, employee_id..

Database/MySQL 2022.03.16

[MySQL]MYSQL 기본 문법: SELECT절 - 여러가지 함수 사용해서 조회하기

함수 작성자 기준 ANSI 표준 함수 특정 DBMS 벤더 전용 함수: MYSQL 전용, ORACLE 전용 사용자 정의 함수 PL/SQL Stored Function, Stored Procedure 수행결과 반환 기준 단일행 함수 하나의 레코드에 대해서 하나의 결과를 반환하는 함수 length(), trim() 그룹(복수행 함수) 여러개의 레코드에 대해서 연산 후 하나의 결과를 반환하는 함수 count(*), max() 문자 관련 함수 length() 문자길이 반환 영문, 숫자는 한자리는 1byte 한글 한자리는 2byte, 3byte 반환: db설정에 따라 다름 테이블 설계 시에 한글데이터 컬럼의 경우는 길이 * db설정byte길이 -- 문자 관련 함수 select length('abc12'), leng..

Database/MySQL 2022.03.16

[MySQL]MYSQL 기본 문법: DML - INSERT, UPDATE, DELETE

DML이란??? DML은 Data Manipulation Language로 데이터 조작어의 약자이다. 말 그대로 데이터를 조작할 때 사용되는 언어로 좀만 생각해봐도 당연히 CRUD가 되겠지? 라는 생각이 든다. DML에는 INSERT(C), SELECT(R), UPDATE(U), DELETE(D)가 있다. INSERT INSERT 형식 1. 테이블 구조에 맞는 모든 컬럼에 매핑되는 값을 지정, 데이터가 없는 컬럼인 경우에도 값을 지정(누락되면 안됨, 기본값을 임의 지정하거나, null 사용 가능) 주의: 테이블 구조의 모든 칼럼에서 누락된 칼럼이 있어서는 안됨 insert into 테이블명 values (컬럼값1, 컬럼값2, 컬럼값X); 2. 사용자가 지정한 컬럼명에 매핑되는 값을 지정 생략 가능한 컬럼..

Database/MySQL 2022.03.16

[MySQL]MYSQL 기본 문법: DML - SELECT

DML이란??? DML은 Data Manipulation Language로 데이터 조작어의 약자이다. 말 그대로 데이터를 조작할 때 사용되는 언어로 좀만 생각해봐도 당연히 CRUD가 되겠지? 라는 생각이 든다. DML에는 INSERT(C), SELECT(R), UPDATE(U), DELETE(D)가 있다. SELECT select 구문 기본 형식 select * | 컬럼명 | 수식 | ... [from] 테이블명 (mysql은 from절이 선택) ; DUAL 테이블 테이블이 없는 경우 select 구문에 대한 dummy 테이블명 뭐 테스트할 때 select 구문 전체 형식 select * | 컬럼명 | 수식 | ... from 테이블명 where 검색조건 group bt 그룹핑컬럼명1, 그룹핑컬럼명x h..

Database/MySQL 2022.03.16

[Database]데이터베이스 관련 자격증 추천!

데이터베이스 관련 자격 ORACLE OCP, OCM 돈이 좀 많이 들고(오라클에서 무슨 강의같은걸 들어야하는데 싸야 100만원이라고 함) 실무 경력이 좀 있어야 함 한국데이터산업진흥원 개발: SQLD/SQLP 설계: DASP/DAP 분석: ADSP/ADP SQLD, DASP, ADSP 얘네는 난이도가 막 어렵지 않아서 데이터베이스에 관심이 있는 사람이면 찾아보고 도전해봤으면 좋을 것이라고 한다~ 한국산업인력공단(큐넷) 정보처리기사 정보처리기술사(정처기때고 4년이나 뭐 이따가 가능??) 정보처리감리사 정보처리기사는 많이들 알려져 있고, 난이도도 어렵지 않지만 그 밑에 두개는 진짜 어렵고 만약에 따면 그만큼 성취감이 있을거라고 하더라~