본문 바로가기
Study/Database

MySQL 총정리

by 겸 2020. 12. 30.

테이블의 모든 내용 조회 (SELECT)

SELECT * FROM [테이블이름]

/// *은 모든 열을 조회한다는 것을 의미

 

조건에 따른 테이블 조회 (WHERE)

SELECT * FROM [테이블이름] WHERE [조건문] ;

/// 조건문에서 같은 것을 찾을 때는 ==가 아닌 = 사용

/// 다른 것을 찾을 때는 not [열이름] = [내용] 

/// 숫자는 그냥 입력하되 문자열은 ' ' 로 감싸서 표기

/// 문자열은 웬만하면 LIKE '%[문자열]%'로 찾자

 

테이블 여러개 사용

테이블이름을 그대로 사용

SELECT [테이블1].[열이름] [테이블2].[열이름] FROM [테이블1], [테이블2];

 

테이블에 별칭 붙여서 사용

SELECT [테이블별칭1].[열이름] [테이블별칭2].[열이름] FROM [테이블1] AS [테이블별칭1], [테이블2] AS [테이블별칭2];

SELECT [테이블별칭1].[열이름] [테이블별칭2].[열이름] FROM [테이블1] [테이블별칭1], [테이블2] [테이블별칭2];

/// AS 붙여도 되고 안붙여도 됨

특정 개수의 행 출력 (LIMIT)

상위 n개 출력

SELECT * FROM [테이블이름] WHERE [조건문] LIMIT [n];

 

n~m번째 출력

SELECT * FROM [테이블이름] WHERE [조건문] LIMIT [n, m];

NULL값 처리 (IS NULL, IFNULL)

NULL값 출력

SELECT * FROM [테이블이름] WHERE [열이름] is NULL;

 

NULL값을 제외하고 출력

SELECT * FROM [테이블이름] WHERE NOT [열이름] is NULL;

 

NULL값 대체

SELECT IFNULL([열이름], '[대체값]') FROM [테이블이름];

정렬 (ORDER BY)

오름차순(default)

SELECT [열이름] FROM [테이블이름] ORDER BY [정렬기준이 될 열이름] ASC;

 

내림차순

SELECT [열이름] FROM [테이블이름] ORDER BY [정렬기준이 될 열이름] DESC;

 

여러 기준으로 정렬

SELECT [열이름] FROM [테이블이름] ORDER BY [정렬기준이 될 열이름] ASC, [두번째 정렬 기준 열이름] DESC;

/// 왼쪽 열을 우선으로 정렬

/// 정렬 내용을 쉼표로 구분

최대/ 최소 (MAX, MIN)

SELECT MAX([열이름]) FROM [테이블이름];

SELECT MIN([열이름]) FROM [테이블이름];

 

열 개수 세기 (COUNT)

SELECT COUNT([열이름]) FROM [테이블이름];

 

중복을 제거한 열 개수 세기

SELECT COUNT(DISTINCT [열이름]) FROM [테이블이름];

 

DATETIME 처리 (DATE_FORMAT, DATEDIFF, TIMESTAMPDIFF)

DATETIME 출력형식 변경

SELECT DATE_FORMAT([열이름],'[출력형식]') FROM [테이블이름];

/// 출력형식 예) %Y-%m-%d

/// %Y(4자리 연도), %y(2자리 연도), %m(월), %d(일), %H(24시간), %h(12시간), %i(분), %s(초) 등 다양한 형식이 존재

 

DATETIME 기간 출력

SELECT DATEDIFF('[날짜1]','[날짜2]') FROM [테이블이름];

/// 날짜1 - 날짜2 결과를 출력 (일의 차이)

 

TIMESTAMPDIFF 출력

SELECT TIMESTAMPDIFF('[결과 형식]','[날짜1]','[날짜2]') FROM [테이블이름];

/// 날짜 형식에 YEAR, WEEK, MONTH, HOUR, DAY, ... 

 

특정 데이터 추출 함수

YEAR(열), MONTH(열), WEEK(열), HOUR(열), ...

 

특정 데이터 찾기 (WHERE IN, LIKE)

특정 조건과 일치하는 행 모두 출력

SELECT [출력할 열이름] FROM [테이블이름] WHERE [조건] IN(열1, 열2, 열3, ...);

/// 열에서 in 뒤의 데이터와 일치하는 행을 모두 출력(OR로 검색)

/// OR를 여러번 사용하는 것보다 단순화 할 수 있음

 

특정 조건을 제외하는 행 모두 출력

SELECT [출력할 열이름] FROM [테이블이름] WHERE [조건] NOT IN(열1, 열2, 열3, ...);

 

특정 문자열을 포함하는 데이터 출력

SELECT [열이름] FROM [테이블이름] WHERE [열이름] LIKE '%[문자열]%';

/// 디폴트는 대소문자 구분하지 않음

/// 특정문자로 시작하는 것 '%[문자열]'

/// 특정문자로 끝나는 것 '[문자열]%'

 

조건에 따라 값 지정 (CASE)

SELECT CASE WHEN [조건문1] THEN [출력1] WHEN [조건문2] THEN [출력2]

ELSE [출력3] END AS[해당열이름설정] FROM [테이블이름];

/// switch문과 같은 개념

/// if문으로 대체 가능

그룹으로 묶어서 출력 (GROUP BY)

그룹으로 묶어서 출력

SELECT [출력할 열이름] FROM [테이블이름] GROUP BY [묶을 열이름];

 

그룹으로 묶은 후 조건 처리

SELECT [출력할 열이름] FROM [테이블이름] GROUP BY [묶을 열이름] HAVING [조건문];

 

변수 선언 (SET)

SET @[변수명] := [초기값];

/// 값을 대입하기 위해 := 연산자 사용

 

테이블 합치기 (JOIN ON)

1) INNER JOIN (JOIN)

SELECT [테이블이름1].[열이름1], [테이블이름2].[열이름2] FROM [테이블이름1] JOIN [테이블이름2] ON [결합조건];

/// 두 테이블이 모두 가지고 있는 것만 결합

 

2) LEFT OUTER JOIN, RIGHT OUTER JOIN

SELECT [테이블이름1].[열이름1], [테이블이름2].[열이름2] FROM [테이블이름1]

LEFT JOIN [테이블이름2] ON [결합조건];

 

SELECT [테이블이름1].[열이름1], [테이블이름2].[열이름2] FROM [테이블이름1]

RIGHT JOIN [테이블이름2] ON [결합조건];

/// 두 테이블이 모두 가지고 있지 않아도 하나의 테이블을 기준으로 결합

/// 없는 값은 NULL 처리

자릿수 설정 (ROUND, TRUNCATE)

SELECT ROUND([열], [자릿수]) FROM [테이블이름] # 반올림
SELECT TRUNCATE([열], [자릿수]) FROM [테이블이름] # 버림

// 1, 2, 3, ... 은 소숫점자리를 나타냄

// -1, -2, -3은 10의 자리를 나타냄

문자열 합치기 (CONCAT)

SELECT CONCAT([열이름], '[문자열]') FROM [테이블이름]
SELECT CONCAT([열이름1], [열이름2]) FROM [테이블이름]

 

반응형

'Study > Database' 카테고리의 다른 글

3. mysql과 node.js를 연결한 로그인/회원가입 예제  (0) 2020.12.06
2. mysql 사용자 추가 및 DB 사용  (0) 2020.12.06
1. mysql 서버 구축  (0) 2020.12.05