SQL의 활용2
※ 샘플은 다음과 같은 사이트를 사용하였음
https://www.w3schools.com/mysql/trymysql.asp?filename=trysql_select_all
1. LIKE, NOT LIKE
- 특정 문자로 시작여부, 끝나는지 여부, 포함하는지 여부를 확인
- 찾고자하는 문자열을 %기호와 조합해서 사용
- 'a%' : a로 시작하는 문자열
- '%a' : a로 끝나는 문자열
- '%a%' : a를 포함하는 문자열
※ 패턴을 위한 와일드카드
- % : 0개이상의 문자열과 일치
- [ ] : 1개의 문자와 일치
- [^] : 1개의 문자와 불일치
- _ : 특정 위치의 1개의 문자와 일치
# LastName이 D로 시작하는 행만 조회
SELECT *
FROM Employees
where LastName like 'D%';
# LastName이 D로 시작하지 않는 행만 조회
SELECT *
FROM Employees
where LastName not like 'D%';
2. CEIL, ROUND, FLOOR
- 소수점을 올림, 반올림, 내림
- CEIL( ) : 올림
- ROUND( ) : 반올림
- FLOOR( ) : 내림
# 1.2 반올림
SELECT ROUND(1.2);
# 1이 출력
# Price 컬럼 값들을 반올림
SELECT ROUND(Price)
FROM Products;
3. AVG, MAX, MIN, SUM, COUNT
- AVG(컬럼) : 컬럼의 모든 행의 평균값
- MAX(컬럼) : 컬럼의 모든 행중 최대값
- MIN(컬럼) : 컬럼의 모든 행중 최소값
- SUM(컬럼) : 컬럼의 모든 행의 평균값
- COUNT(컬럼) : 컬럼의 모든 행의 개수 (NULL 값은 제외)
# CategoryName 컬럼의 모든 행의 개수
SELECT count(CategoryName)
FROM Categories;
4. CONCAT(문자1, 문자2, 문자3, ...)
- 문자열을 이어 붙임
# 문자열을 이어 붙이기
select concat('Hong', ' ','gildong') as name;
# Hong gildong 이 출력됨
# LastName과 FirstName을 이어 붙여 FullName이라는 새로운 컬럼으로 생성
SELECT EmployeeId, BirthDate, Photo, Notes, concat(LastName, ' ', FirstName) as FullName
FROM Employees;
5. SUBSTR(대상문자, 시작위치, 자르는 길이)
- 문자열을 자름
# HongGilDong 을 앞에서 7번째 까지 자름
SELECT SUBSTR('HongGilDong', 1, 7);
# HongGil 까지 출력
# BirthDate를 앞에서 4번째 까지 자름 (year로 별명 생성)
SELECT SUBSTR(BirthDate, 1, 4) as `year`
FROM Employees;
6. REPLACE(대상문자(컬럼), 문자열1, 문자열2)
- 대상 문자(컬럼)에 문자열1인 부분을 찾아 문자열2로 치환
# City 컬럼의 값에서 B문자를 찾아 b로 변경
SELECT replace(city, 'B', 'b')
FROM Customers;
7. CURDATE( ), NOW( )
- 오늘 날짜 구하기
- CURDATE : 연월일
- NOW : 연월일 시분초
8. ADDDATE(기준날짜, n), SUBDATE( )
- 기준날짜로부터 n간격 만큼의 날짜
# 현재 날짜로부터 10일 뒤의 날짜
SELECT ADDDATE('2022-08-24', 10)
# 2022-09-03 출력
9. DATEDIFF(날짜1, 날짜2)
- 날짜1과 날짜2의 차이를 구함
SELECT DATEDIFF('2022-03-21', '2021-03-21');
# 365 가 출력
10. DISTINCT
- 조회 결과에서 중복되는 행을 제거
# Country 컬럼 중 중복된 값을 제거
SELECT DISTINCT Country
FROM Suppliers;