[MySQL] 실무에서 많이 쓰는 SQL 기초 쿼리 정리_1, 2, 3(주석 처리, 시간 함수, 테이블 생성, 삭제, JOIN)

728x90

DB별 주석 처리

종류
MySQL
Oracle
MSSQL
MariaDB
한 줄 주석
#, --, CTRL + /
--
--
--, #
여러 줄 주석
/* 내용 */
/* 내용 */
/* 내용 */
/* 내용 */

 

CASE WHEN THEN

SELECT CASE WHEN [조건식1] THEN [결과식1]
            WHEN [조건식2] THEN [결과식2]
            ...
            ELSE [조건식N] 
       END
CASE WHEN THEN 실습

 

SUBSTR()

  • SUBSTR("문자열", "시작위치", "길이")

CONCAT() 

  • 하나 이상의 문자열을 결합하여 새로운 문자열을 생성하는 SQL 함수이다.
  • 주어진 문자열을 연결할 때 사용된다
SUBSTR, CONCAT 실습

 

시간함수

EXTRACT, DATE_FORMAT

  • 날짜와 시간 데이터 추출 및 변환

 

EXTRACT(UNIT FROM DATE)

SELECT EXTRACT(YEAR FROM 입력일자) AS 년도,
       EXTRACT(MONTH FROM 입력일자) AS 월,
       EXTRACT(DAY FROM 입력일자) AS 일,
       EXTRACT(HOUR FROM 입력일자) AS 시간,
       EXTRACT(MINUTE FROM 입력일자) AS 분,
       EXTRACT(SECOND FROM 입력일자) AS 초,

 

DATE_FORMAT(날짜 , 형식)

SELECT DATE_FORMAT(입력일자, '%Y') AS 년도,
	DATE_FORMAT(입력일자, '%m') AS 월,
        DATE_FORMAT(입력일자, '%d') AS 일,
        DATE_FORMAT(입력일자, '%H') AS 시간,
       	DATE_FORMAT(입력일자, '%i') AS 분,
      	DATE_FORMAT(입력일자, '%s') AS 초,
       	DATE_FORMAT(입력일자, '%Y%m%d') AS 년월일1,
       	DATE_FORMAT(입력일자, '%Y/%m/%d') AS 년월일2,
       	DATE_FORMAT(입력일자, '%y%m%d') AS 년월일3
       	DATE_FORMAT(입력일자, '%Y-%m-%d %H%m%s') AS 년월일4

 

테이블 생성, 삭제, JOIN

테이블 생성(CREATE TABLE) 및 데이터 입력(INSERT)

CREATE TABLE `MYSQL_STUDY`.`CUST_INFO` (
    CUST_NAME VARCHAR(10) NOT NULL COMMENT '고객명',
    AGE TINYINT COMMENT '연령',
    SEX VARCHAR(3) COMMENT '성별'
) COMMENT '고객정보';

INSERT INTO `MYSQL_STUDY`.`CUST_INFO` VALUES('김서연', 36, '여');
INSERT INTO `MYSQL_STUDY`.`CUST_INFO` VALUES('박수빈', 26, '여');
INSERT INTO `MYSQL_STUDY`.`CUST_INFO` VALUES('최민준', 32, '남');
INSERT INTO `MYSQL_STUDY`.`CUST_INFO` VALUES('김지민', 41, '남');
INSERT INTO `MYSQL_STUDY`.`CUST_INFO` VALUES('이하은', 23, '여');

CREATE TABLE `MYSQL_STUDY`.`CUST_BUY_INFO` (
    CUST_NAME VARCHAR(10) NOT NULL,
    BUY_DATE DATE,
    BUY_NM VARCHAR(30),
    PAY INT
) COMMENT '고객 구매 정보';

INSERT INTO `MYSQL_STUDY`.`CUST_BUY_INFO` (CUST_NAME, BUY_DATE, BUY_NM, PAY) VALUES('김서연', STR_TO_DATE('2022.08.05', '%Y.%m.%d'), '샴푸, 린스', 23000);
INSERT INTO `MYSQL_STUDY`.`CUST_BUY_INFO` (CUST_NAME, BUY_DATE, BUY_NM, PAY) VALUES('이예준', STR_TO_DATE('2022.08.15', '%Y.%m.%d'), '초콜렛', 700);
INSERT INTO `MYSQL_STUDY`.`CUST_BUY_INFO` (CUST_NAME, BUY_DATE, BUY_NM, PAY) VALUES('김지민', STR_TO_DATE('2022.08.31', '%Y.%m.%d'), '주스', 3800);
INSERT INTO `MYSQL_STUDY`.`CUST_BUY_INFO` (CUST_NAME, BUY_DATE, BUY_NM, PAY) VALUES('신우진', STR_TO_DATE('2022.08.18', '%Y.%m.%d'), '아이스크림', 1500);
INSERT INTO `MYSQL_STUDY`.`CUST_BUY_INFO` (CUST_NAME, BUY_DATE, BUY_NM, PAY) VALUES('이하은', STR_TO_DATE('2022.08.26', '%Y.%m.%d'), '반찬', 5000);
  • MySQL에서는 '2022-08-05' 형식으로 지정하면 자동으로 날짜 형식 지정되지만 '2022.08.05'과 같은 형식은 문자열이기 때문에 'STR_TO_DATE' 사용

JOIN

 

SELECT A.CUST_NAME
     , A.AGE
     , A.SEX
     , B.BUY_DATE
     , B.BUY_NM
     , B.PAY
FROM `MYSQL_STUDY`.`CUST_INFO` AS A
LEFT JOIN `MYSQL_STUDY`.`CUST_BUY_INFO` AS B
ON A.CUST_NAME = B.CUST_NAME
UNION
SELECT A.CUST_NAME
     , A.AGE
     , A.SEX
     , B.BUY_DATE
     , B.BUY_NM
     , B.PAY
FROM `MYSQL_STUDY`.`CUST_INFO` AS A
RIGHT JOIN `MYSQL_STUDY`.`CUST_BUY_INFO` AS B
ON A.CUST_NAME = B.CUST_NAME
WHERE A.CUST_NAME IS NULL;
  • MySQL에서는 FULL OUTER JOIN을 직접 지원 X
  • UNION을 통해 LEFT, RIGHT JOIN을 결합해야함   
  • UNION ALL은 중복 포함
 

SQL JOIN 정리(LEFT RIGHT OUTER JOIN, INNER JOIN, FULL OUTER JOIN, CROSS JOIN, SELF JOIN)

SQL 코테 풀다가 JOIN문 이해가 부족한 거 같아 다시 학습하고 정리해 보았다! 강의: 유튜브 생활코딩, 참고 자료 및 사이트 https://www.youtube.com/watch?v=2Xa54XBXbk0&list=PLuHgQVnccGMAG1O1BRZCT3wkD_aPmPylq https://git

jyeong0814.tistory.com

 

참고 자료
https://www.youtube.com/watch?v=XN4iXklAnQw&list=PLyDRGvq2JNKxQu0sVFrX01Fmz3PwHPRJi&index=1

https://www.youtube.com/watch?v=u8G5WAS8_hU&list=PLyDRGvq2JNKxQu0sVFrX01Fmz3PwHPRJi&index=2

https://www.youtube.com/watch?v=E-8kpSSLulU&list=PLyDRGvq2JNKxQu0sVFrX01Fmz3PwHPRJi&index=3

 
데이터:
https://www.data.go.kr/data/15121497/fileData.do

신용보증기금_경영지원_CRM 컨설팅 접수 정보_20230830

해당 파일은 신용보증기금이 운용하는 CRM 컨설팅에 대한 접수 데이터로, 고객별 입력일자, 구매처수, 발급일자 등의 항목을 제공합니다.<br/>

www.data.go.kr

https://www.data.go.kr/data/15093055/fileData.do

신용보증기금_고객기본정보고객정보_20220928

해당 파일 데이터는 신용보증기금의 고객기본정보고객정보에 대해 확인하실 수 있는 자료이니 데이터 활용에 참고하여 주시기 바랍니다.<br/>

www.data.go.kr

 
 

728x90