언빌리버블티

[MySQL] SQL 비교 연산자 및 함수 (LIKE, BETWEEN, IS NULL, DISTINCT, SUBSTRING, ROUND) 본문

Language/MySQL

[MySQL] SQL 비교 연산자 및 함수 (LIKE, BETWEEN, IS NULL, DISTINCT, SUBSTRING, ROUND)

나는 정은 2022. 10. 13. 02:08

멋쟁이 사자처럼 AI스쿨

데이터리안 Special Lecture : 일단 해보는 SQL - 2

 

[백문이불여일타] 데이터 분석을 위한 기초 SQL - 인프런 | 강의

인프런 누적 수강생 10,000명 이상, 풍부한 온/오프라인 강의 경험을 가진 데이터리안의 SQL 기초 강의. SQL 기초 이론을 배우고, 해커랭크 문제 10개를 함께 풀어봅니다., - 강의 소개 | 인프런...

www.inflearn.com

 
 

SQL 이란?

데이터와 통신하는 언어

SELECT

  • Data Query Language 질의어 - DQL
    • 데이터를 꺼내옴

INSERT, UPDATE, DELETE

  • Data Manipulation Language 조작어 - DML
    • DB에 데이터를 쌓고
    • 데이터를 업데이트하고
    • 데이터를 삭제
 

 

SQL을 더 공부하고 싶다면 ?

해커랭크

  • SQL 코딩테스트 대비 연습문제 사이트

w3school SQL

  • SQL 코드 실습해볼 수 있는 사이트
 

SQL 비교 연산자

LIKE : 데이터베이스 검색 쿼리

데이터베이스의 수많은 형태의 데이터들 중 원하는 형태의 데이터 값만 찾고 싶을때,

특정 패턴을 정해두고, 내가 정한 패턴을 포함하고 있는 데이터를 찾는 과정에서 사용된다.

 

와일드카드 이스케이프

와일드카드
Description
%
0개 이상의 문자를 가진 문자열
모든 문자를 의미
% 문자 % - 문자가 포함된 모든 데이터를 가져옴
% 문자 - 문자 앞에 무슨 글자가 오던지 문자로 끝나면 된다.
문자 % - 문자 뒤에 무슨 글자가 오던지 문자로 시작하면 된다.
_ (밑줄)
한 개 (단일)문자
문자 ____ -> 어떤 문자라고 특정하지 않았지만 문자 시작 후 어떤 문자던지 밑줄 개수 만큼의 문자가 온다.

 

 


SQL 조건에 맞는 데이터 검색하기

BETWEEN a AND b

a(시작값) 보다 크거나 같고 b(끝값)보다 작거나 같다. 라는 의미

특정 수 사이 값을 필터링한다.

-- WHERE studentID BETWEEN 3 AND 5 

# int 
SELECT *
FROM Products 
WHERE CustomerID BETWEEN 10 AND 20 

# str 
SELECT *
FROM Products 
WHERE CustomerName BETWEEN 'C' AND 'M' 

# datetime 
SELECT *
FROM Orders 
WHERE CustomerOrders BETWEEN 2019-01-01' AND '2020-01-01'

IS NULL / IS NOT NULL

숫자도 아니고 문자도 아닌 아무런 값이 존재하지 않는 데이터

  • NULL 값을 검색할 때는 = 연산자가 아닌 ' IS NULL ' 사용
  • 반대로 NULL이 아닌 행을 검색할 땐 IS NOT NULL 사용
WHERE customerID IS NULL
-> NULL, NaN (Not a Number)
  • 집계함수에서는 NULL까지 포함시킨 아스타(*) 로 계산하는 것이 좋다고한다.

EX )

-- IS NULL 
SELECT *
FROM SAMPLE
WHERE NAME IS NULL 
-- IS NOT NULL
SELECT *
FROM SAMPLE
WHERE NAME IS NOT NULL 

 

IN

결과에 포함시키고자 하는 값 목록을 지정할 수 있는 SQL 논리 연산자

데이터 유형에 관계없이 쉼표로 구분

SELECT *
FROM TABLE_NAME
WHERE COL_NAME IN ('VALUE1','VALUE2'....)
 

DISTINCT : 중복 제거

  • 특정 열의 중복되는 부분을 제거하여 unique한 값들만 볼 수 있게 해준다.
SELECT DISTINCT col_name 
FROM TABLE_NAME

ORDER BY : 정렬

  • DESC 내림차순
  • ASC 오름차순
SELECT *
FROM TABLE_NAME
WHERE A > 10
ORDER BY A DESC or (ASC and 아무런 값도 입력x)

 


MySQL 문자열 자르기

LEFT(컬럼명 or 문자열, 문자열의 길이)

SELECT LEFT("20140323", 4)
=> 2014

RIGHT(컬럼명 or 문자열, 문자열의 길이)

SELECT RIGHT("20140323", 4)
=> 0323

SUBSTR(컬럼명 or 문자열, 시작위치 , 길이 ) : substring

SUBSTR("20130323",1,4)
=> 2014
SUBSTR("20130323",5)
=> 0323  
 

MySQL 소수점 처리

CEIL() : 숫자 올림

SELECT CEIL(5.5)
=> 6 

FLOOR() : 숫자 내림

SELECT FLOOR(5.5)
=> 5 

ROUND() : 숫자 반올림

ROUND(5.556901,4)
5.5569
 

 

 

Comments