목록MySQL (8)
개발지식 먹는 하마 님의 블로그
[ 날짜 형식 ]DATE_FORMAT(date, format) : 주어진 날짜를 format에 맞춰 문자열로 반환한다.DATE_FORMAT(컬럼명, '%Y-%m-%d') 날짜형식설명예시년도%Y년도 네 자리1999, 2024%y년도 끝 두 자리99, 24월%M월을 문자열로January ~December%b월을 축약형으로Jan ~ Dec%c월을 숫자로0 ~12일%D영어 서수로 표기한 날짜0th, 1st, 2nd%d날짜를 두 자리 숫자로00 ~31%e날짜를 숫자로0 ~ 31요일%a요일을 축약형으로Mon ~ Sun%W요일을 문자열로Monday ~ Sunday시간%Thh:mm:ss 형식10:04:22%H시간을 24시간으로 표현00 ~ 23%h시간을 12시간으로 표현01 ~ 12%i분을 두 자리 숫자로 표현00 ~..
[ Window Function ]윈도우 함수는 각 행의 세부 데이터를 유지하면서 결과를 반환하는 함수이다.GROUP BY와 윈도우 함수 모두 어떤 데이터를 그룹화한다는 공통점이 있지만그룹화해서 집계한 결과를 보여주는 부분에서 차이가 있다.예를 들어 어떤 회사의 부서별 평균 연봉을 구하고자 했을 때, employee_iddepartmentsalary1IT500002IT600003Sales550004Sales520005HR48000GROUP BY를 사용하면 부서와, 부서 별 평균 연봉에 대한 결과만 출력된다.departmentavg_salaryIT55000Sales53500HR48000윈도우 함수를 사용하면 각 직원의 세부 데이터와 함께 평균 연봉을 표시해서 비교할 수 있다. employee_iddepar..
[ 피벗 테이블 ]대량의 데이터 중 내가 원하는 데이터만을 집계해서 보여주는 테이블, 행 데이터를 열 데이터로 전환, 세로형 데이터를 가로형 데이터로 보여주는 형식이다.[ 피벗 테이블 작성 방법 ]PIVOT 연산자 사용 (SQL에서만 사용가능하고 MYSQL에서는 사용이 불가하다)주어진 행 데이터를 열로 변환한다.피벗 대상 값에 대괄호를 해주어야 한다.PIVOT ( 집계 함수(컬럼명) FOR 피벗대상컬럼 IN ([피벗대상값]) ) AS 피벗테이블명;조건문CASE문과 IF문을 집계 함수 내에 사용하여 피벗테이블을 구성할 수 있다.SELECT name, SUM(IF(exam = 1, score, NULL)) AS exam1, SUM(IF(exam = 2, score, NULL)) AS exa..
[ Sub-Query ]메인 SQL 문 안에 포함된 또 다른 하위 SQL 문이다.서브쿼리가 먼저 실행되고 그 결과를 메인쿼리가 사용한다.데이터 필터링 : ex) 동적으로 조건값을 생성할 때복잡한 집계 JOIN : ex) 다중 테이블 간의 데이터를 비교할 때MySQL은 서브쿼리 내에서 LIMIT를 사용할 수 없다.LIMIT를 사용하기 위해서는 임시 테이블 생성해서 해결해야 한다.상황에 따라 JOIN이 더 효율적일 때도 있다.SELECTFROMWHERE더보기메인 쿼리의 WHERE 절에 사용한 서브 쿼리가 여러 행의 결과값을 반환하는 경우IN : WHERE 절 IN과 같은 역할, 서브쿼리 결과에 존재하는 값들 중 동일한 값이 있는가ALL : 서브쿼리 결과에 존재하는 모든 값을 만족하는 조건인가 ..

[ JOIN ]여러 개의 테이블을 연결하여 데이터를 검색하는 방법이다.필요한 데이터가 서로 다른 테이블에 있을 때 불러오기 위해서 사용한다.조인에는 대표적으로 6개의 유형이 있다.유형이미지설명INNER공통 컬럼의 값이 같은 경우를 추출한다.LEFT (OUTER) JOIN왼쪽 테이블의 모든 데이터와 오른쪽 테이블의 동일 데이터를 추출한다.WHERE 검색조건을 추가할 경우,조인된 값에서 해당 조건에 맞는 결과만 출력된다.* WHERE B.key IS NULL을 했을 때, 차집합 형태의 결과가 나오는 이유왼쪽 테이블의 모든 데이터가 들어가있기 때문에A.key = B.key를 했을 때, B.key가 비어있는 데이터가 존재할 수 있다.ex) A.key : 1, 2, 5 / B.key : 1, 2, 3 일 때, ..
[ WHERE절 ]가장 기본적인 조건문이라고 할 수 있다.구분연산자설명비교=, , !=, , >=데이터 값을 비교한다.* 와 != 의 차이는 무엇일까?둘의 차이는 없다! ANSI SQL 표준에 따르면 사용을 권장하지만다른 언어에서는 != 를 주로 사용하기 때문에 GitLab에서는 != 사용을 더 선호한다.범위BETWEEN값1 이상, 값2 이하의 데이터를 조회한다.집합IN컬럼이 IN 안에 포함된 경우NOT IN컬럼이 IN 안에 포함되어 있지 않은 경우패턴 https://devhippo.tistory.com/5NULLIS NULL컬럼이 NULL인 데이터를 조회한다.IS NOT NULL컬럼이 NULL이 아닌 데이터 조회한다.복합조건AND조건을 모두 만족하는 데이터 조회한다.OR두 조건 중 하나를 만족하는 ..
우리가 C++이나 Java에서 문자열을 자르고 붙이고 별 짓을 다하는 것처럼 SQL에서도 이와 같은 역할을 하는 문자열 함수가 존재한다.[WHERE 패턴 조건, LIKE]LIKE는 문자열 함수는 아니지만 문자열을 다루는 절이기 때문에 편의상 이곳에 정리하였다.LIKE 구문기능응용'A%'A로 시작하는 문자 '%A'A로 끝나는 문자 '%A%'A를 포함하는 문자'%A%A%A%' : 문자열 내에 A가 3번 이상 들어가는 문자열'A_'A로 시작하는 두글자의문자열'%A _ _ A%' : A와 A사이에 두 글자가 있는 문자열'[ ^A ]'첫번째 문자가 A가 아닌 모든 문자열 찾기 '[ A, B, C]'첫번째 문자가 A 또는 B 또는 C인 문자열 찾기 '[ A - C ]' LIKE는 대소문자를 구분하기 때문에 정확하게..
* Simon Holywell의 스타일 가이드 기반, GitLab과 Mozilla를 참조함[요약]- 예약어는 대문자, 변수들은 소문자(문자, 숫자, _만 사용함)- Table은 집합명사, Columns는 단수명사를 사용하고 서로 중복되면 안된다. SELECT 문 내에서 별칭을 정한다.- AS 키워드를 꼭 사용한다. 각 단어의 첫 글자 또는 20글자 미만의 테이블 명, 그 외 경우 테이블명의 별칭(최소 4자 이상)을 사용한다. - boolean에는 has_, is_, does_ 접두사를, 모호한 접미사 앞에는 식별 대상을 붙여주어야 한다. ex) account_id, account_name : 식별 대상 account, 접미사 _id, _name- 줄 바꿈은 변수는 Mozilla, 그 외는 Si..