일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 시각화
- pythone
- HeidiSQL
- 데이터베이스
- python
- 데이터 분석
- sklearn
- 딥러닝
- 머신러닝
- 선형회기모델
- tensorflow
- 알고리즘기초
- python기초
- 해석
- 데이터
- 정확도
- 회귀모델
- Deep Learning
- 파이썬
- 훈련
- 데이터 가공
- keras
- 크롤링(crawling)
- SQL예제
- 데이터전처리
- Database
- 예측
- 데이터 수집
- pandas
- MariaDB
- Today
- Total
코딩헤딩
MariaDB 데이터베이스[database, DB] 함수 본문
mariadb, mysql 종속함수 다른 db에서는 함수이름이 조금 다를 수 있다.
1. REPLACE() : 치환하기
SELECT REPLACE ('컬럼1에 찾을값이 있어요','찾을값','바꿀값') AS msg;
2. ROUND() : 반올림 함수 / [,] 뒤의 숫자는 소수점의 위치를 의미함
SELECT ROUND(123.567, 0) AS r1,
ROUND(123.567, 1) AS r2,
ROUND(123.567, 2) AS r3,
ROUND(123.567, 3) AS r4,
ROUND(123.567, 4) AS r5,
ROUND(123.567, -1) AS r6,
ROUND(123.567, -2) AS r7,
ROUND(123.567, -3) AS r8,
ROUND(123.567, -4) AS r9;
반올림 할 자릿수가 마이너스로 넘어가면 값은 "0"이 된다.
3. mod() : 나눈 나머지의 값 함수
SELECT MOD(10,4) AS mod_test;
4. if문 : mysql, mariadb에만 있음
SELECT if(10>100, '크다', if(10<10, '같다', '작다')) AS if_test;
if절 안에 if절 사용가능. / if (조건, 참일 때 결과, 거짓일 때결과)
5. case문
*작성방법
<비교연산자 사용 x>
- case기준값
- when 비교값 then 처리값
- when 비교값 then 처리값
- Else 처리할 값
- End
- else를 제외한 모든 요소가 있어야 오류가 안 난다
<비교연산자 사용>
- case
- when 기준값 비교연산자 then 처리값
- when 기준값 비교연산자 then 처리값
- Else 처리할 값
- End
- else를 제외한 모든 요소가 있어야 오류가 안 난다
SELECT case 1
when 1 then '1입니다'
when 0 then '0입니다'
ELSE '음수'
END AS case_data;
SELECT case
when 1<0 then '1입니다'
when 1>0 then '0입니다'
ELSE '음수'
END AS case_data;
비교연산자 사용 시 결괏값이 TRUE인 것 출력.
4. nvl(컬럼명, null인 경우 대체할 값) : null, NaN, None => null체크
null인 경우 : 메모리가 존재하지 않는 값
'공백'인 경우 : 1. 메모리는 존재하지만 값은 없는 것(비어있는 것)
2. white space
SELECT nvl(NULL, 'null임'),
nvl(1, 'null아님');
테이블 내에 null값이 있다면 연산을 할 때 오류가 뜬다. 따라서 null값을 미리 찾아서 다른 값으로 대체해야 한다.
5. is null(***where절 내에서만 사용가능) : null값 찾기
SELECT*
FROM prod
WHERE prod_mileage IS NULL;
맞는 표현
SELECT*
FROM prod
WHERE prod_mileage = NULL;
틀린 표현
비교연산자는 왼쪽값과 오른쪽 값을 비교한다. 비교한다라는 것은 메모리공간에 있는 값을 비교 따라서 성립 불가
6. 날짜 함수
SELECT NOW() AS '오늘날짜', CURDATE() AS '오늘 년월일', CURTIME() AS '오늘 시분초';
*날짜 포맷 이용하기
SELECT DATE_FORMAT('20231122144059', '%Y-%m-%d %H%i%s') AS dt1,
DATE_FORMAT(NOW(),'%Y-%m-%d %H%i%s') AS dt2;
7. cast() or convert() : 형 변환 함수
형변환을 주로 사용하는 경우 : 문자타입의 날짜값을 날짜타입으로 바꾸고자 할 때 주로 사용됨
SELECT CAST('20231122' AS DATE), CONVERT('20231122', DATE);
예제)
1. [ replace() 함수 사용 ]
회원의 성씨 중에 이 씨를 리 씨로 바꾸기
SELECT mem_name,
REPLACE(mem_name,'이','리') AS lee,
REPLACE(SUBSTRING(mem_name,1,1), '이','리') AS lee1,
SUBSTRING(mem_name,2,2) AS nm,
CONCAT(REPLACE(SUBSTRING(mem_name,1,1), '이','리'),
SUBSTRING(mem_name,2,2)) AS rep_name
FROM member
WHERE SUBSTRING(mem_name,1,1) = '이';
성씨만 바꾸어주어야 하기 때문에 성씨와 이름을 분리하여 바꿔준 뒤 다시 합쳐주어야 한다.
2. [ round() 함수사용]
회원 중에 취미가 수영인 회원이 구매한 상품들 조회하기
회원 지역이 서울, 대전, 광주에 거주하는 회원들
상품분류명 중에 피혁이라는 분류에 속해있는 상품을 구매한 회원
조회컬럼 : 상품명, 상품분류명, 원가(소수점 2자리까지)
SELECT prod_name,
(SELECT lprod_nm
FROM lprod
WHERE lprod_gu = prod_lgu) AS prod_name,
ROUND((prod_cost/prod_sale)*100,2) AS price
FROM prod
WHERE prod_id IN (SELECT cart_prod
FROM cart
WHERE cart_member IN(SELECT mem_id
FROM member
WHERE mem_like LIKE '%수영%'
AND SUBSTRING(mem_add1,1,2) IN ('서울','대전','광주')))
AND prod_lgu IN (SELECT lprod_gu
FROM lprod
WHERE lprod_nm LIKE '%피혁%');
3. [if / case문 사용]
회원이름, 회원성별, 마일리지, 고객구분
고객구분은 마일리지의 값이 5000 이상이면 '우수고객', 5000 미만이면 '일반고객'
SELECT mem_name, mem_mileage,
(case SUBSTRING(mem_regno2,1,1)
when 1 then '남'
when 3 then '남'
ELSE '여'
END) AS mem_gen,
if(mem_mileage<5000, '일반고객', '우수고객') AS mem_grade
FROM member;
4. [날짜 함수 사용]
회원아이디, 회원이름, 회원생일 조회하기
생일은 '년-월-일' 형태로 출력
SELECT mem_id, mem_name,
DATE_FORMAT(mem_bir, '%Y년%m월%d일') AS mem_bir,
DATE_FORMAT(mem_regno1, '%Y년%m월%d일') AS mem_regno
FROM member;
'데이터베이스' 카테고리의 다른 글
MariaDB 데이터베이스[database, DB] 조인(Join) (1) | 2023.11.23 |
---|---|
MariaDB 데이터베이스[database, DB] 그룹함수 (3) | 2023.11.22 |
MariaDB 데이터베이스[database, DB] 서브쿼리(subquery) (0) | 2023.11.21 |
MariaDB 데이터베이스[database, DB] 문자열 함수 (0) | 2023.11.21 |
MariaDB 데이터베이스[database, DB] 데이터 입력 조회 수정 삭제(CRUD) (1) | 2023.11.20 |