테이블의 모든 내용 조회 (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 |