http://www.tcpschool.com/mysql/mysql_php_select

 

코딩교육 티씨피스쿨

4차산업혁명, 코딩교육, 소프트웨어교육, 코딩기초, SW코딩, 기초코딩부터 자바 파이썬 등

tcpschool.com

 

https://ko.wikipedia.org/wiki/SQL

 

SQL - 위키백과, 우리 모두의 백과사전

이 도표는 단문을 구성하는 SQL 언어 요소 몇 가지를 보여준다. SQL(,[1] 또는 , Structured Query Language[2][3][4][5], 구조화 질의어, S-Q-L[6])는 관계형 데이터베이스 관리 시스템(RDBMS)의 데이터를 관리하기

ko.wikipedia.org

 

다중 정렬 / 여러 기준으로 정렬 (order by)

SELECT ID_, NAME_, DATETIME FROM TABLE_NAME
ORDER BY NAME_ ASC, DATETIME DESC;

 

상위 N개 레코드

//mySQL
SELECT NAME_ 
FROM TABLE_NAME
ORDER BY DATETIME 
LIMIT 1;

//Oracle
SELECT NAME_
FROM (SELECT * FROM TABLE_NAME ORDER BY DATETIME)
WHERE rownum = 1;

 

최대값(MAX), 최소값(MIN), 총 개수(COUNT)

SELECT MAX(*) FROM TABLE_NAME; 
SELECT MIN(*) FROM TABLE_NAME; 
SELECT COUNT(*) FROM TABLE_NAME;

 

중복 제거(DISTINCT),  NULL 제외

SELECT COUNT(DISTINCT NAME_)FROM TABLE_NAME
WHERE NAME_ IS NOT NULL

 

각 각의 개수, 정렬

SELECT _TYPE, COUNT(_TYPE)
FROM TABLE_NAME
GROUP BY _TYPE
ORDER BY _TYPE;

 

두번 이상 쓰인 이름, 이름 없으면 집계에서 제외

SELECT _NAME, COUNT(_NAME) FROM TABLE_NAME
WHERE _NAME IS NOT NULL
GROUP BY _NAME
HAVING COUNT(_NAME) >= 2 
ORDER BY _NAME;

//GROUP으로 묶은 후, GROUP에 조건을 줄때는 WHERE절이 아니라 HAVING절 사용

 

시간대별 건 수 조회

//MYSQL
SELECT 
    HOUR(DATETIME) AS HOUR,
    COUNT(DATETIME) COUNT
FROM TABLE_NAME
GROUP BY HOUR
HAVING HOUR >= 9 AND HOUR <= 19	
ORDER BY HOUR


//ORACLE
SELECT TO_CHAR(DATETIME,'HH24') AS HOUR, COUNT(*) AS COUNT 
FROM TABLE_NAME WHERE TO_CHAR(DATETIME,'HH24') 
BETWEEN 09 AND 19 
GROUP BY TO_CHAR(DATETIME,'HH24') 
ORDER BY TO_CHAR(DATETIME,'HH24');


//09:00 ~ 19:00 시간 대별 건수 조회

(MYSQL) - 날짜 데이터에서 일부만 추출

 

  • YEAR : 연도 추출
  • MONTH : 월 추출
  • DAY : 일 추출 (DAYOFMONTH와 같은 함수)
  • HOUR : 시 추출
  • MINUTE : 분 추출
  • SECOND : 초 추출

(ORACLE) 

  • TO_CHAR('컬럼명, '포맷형식') : 날짜, 숫자 등의 값을 문자열로 변환 

포맷형식

  • 'YYYY'  : 연도
  • 'MM'     : 월
  • 'DD'      : 날짜
  • 'HH24' : 24시간
  • 'HH'.     : 12시간
  • 'YYYY-MM-DD' 
  • 'MI'   : 분
  • 'SS'   : 초

변수(SET), 프로시져 종류 후에도 유지(@) 대입연산자(:=)

//MySQL
SET @HOUR = -1; 
SELECT (@HOUR := @HOUR +1) AS HOUR, 
(SELECT COUNT(*) FROM TABLE WHERE HOUR(DATETIME) = @HOUR) AS COUNT 
FROM TABLE
WHERE @HOUR < 23;



IS NULL

//MYSQL
SELECT _ID FROM TABLE_NAME
WHERE ISNULL(_NAME)
ORDER BY _ID ASC;

SELECT _ID FROM TABLE_NAME
WHERE NAME IS NULL
ORDER BY _ID ASC;

//ORACLE
SELECT _ID FROM TABLE_NAME
WHERE _NAME is null
ORDER BY _ID ASC;

 

IS NOT NULL

//MYSQL, ORACLE
SELECT _ID
FROM TABLE_NAME
WHERE _NAME IS NOT NULL;

 

IFNULL, NVL

//MYSQL
SELECT _ID, IFNULL(NAME,'No name') 
FROM TABLE_NAME;

//ORACLE
SELECT _ID, NVL(NAME,'No name') 
FROM TABLE_NAME;

 

문자열 찾기

//MYSQL
SELECT * FROM TABLE_NAME
WHERE _NAME='aa' || _NAME='bb'; 

//ORACLE
SELECT * FROM TABLE_NAME
WHERE _NAME IN ('aa','bb');

 

문자열 패턴이 일치하는지 검색(LIKE) , 대문자로 변환(UPPER), 소문자로 변환(LOWER)

//MYSQL
SELECT _NAME FROM TABLE_NAME
WHERE _NAME LIKE("%EL%");

//ORACLE
SELECT _NAME FROM TABLE_NAME
WHERE LOWER(_NAME) LIKE '%el%'

 

SELECT IF문

//MYSQL
SELECT IF(조건, '참', '거짓') FROM TABLE_NAME;

 

view

SELECT한 결과를 가상 테이블에 저장한 것, 물리적으로 존재하지는 않지만 사용자에게는 있는 것처럼 보인다

CREATE VIEW v1
AS
SELECT id, name, age
FROM TableA AS a
JOIN TableB AS b
USING(id)
WHERE address ='korea';

 

 

'DB > 1' 카테고리의 다른 글

[MySQL] MySQL 정리  (0) 2022.03.18
[h2] h2 database 설치 설정  (0) 2022.02.11
[MySQL] 랭킹 순서 매기기 RANK, GROUP BY, ORDER BY  (0) 2020.06.01
개념적 데이터베이스 모델링 연습  (3) 2020.03.10
[SQLD] 정규화 및 반정규화  (0) 2020.03.10

+ Recent posts