본문 바로가기
코딩일기

[MariaDB] MariaDB 사용2

by 증즌주 2024. 5. 17.

 

GROUP BY절을 활용해보자.

보통 그룹으로 묶고 싶을때 활용한다.

addr별로 개수를 세고 싶을 땐,

addr로 그룹별로 묶고 select절에 addr과 개수를 세주는 count를 쓰면 된다.

 

 

평균은 AVG를 활용해주면 된다.

 

 

소수점 자리를 없애고 싶을 때 ROUND나 FLOOR을 사용해줄 수 있다.

ROUND는 반올림해준다.

 

 

SUM은 합계를 나타내준다.

 

 

COUNT는 개수를 세준다.

 

 

다음은 가장 큰 키와 가장 작은 키의 회원 이름과 키를 출력해주는 쿼리이다.

서브쿼리를 넣어주면서 결과를 출력하였다.

 

 

 

함수들을 모두 실행해 보았다.

 

 

where절이 아닌 having을 사용하는 경우가 있다.

group by와 함께 쓴다.

그룹별로 묶은 그룹별 결과를 통해 원하는 조건을 만족하는 결과를 출력해준다.

 

 

다음은 SQLD시험에도 나오고 정보처리기사에도 나오는

중요한 걸 외워보자.

select문이 실행되는 순서이다.

순서만 잘 알아도 문제를 풀 수 있고, 쿼리를 작성해나갈 수 있다.

 

 

INSERT 를 사용해보았다.

원하는 내용을 삽입할 때 쓴다.

대신 INSERT() 안에 들어가있는 내용과 타입이 맞아야한다.

그 다음에 값을 넣어줄땐 VALUES를 사용해 값을 넣어준다.

 

대량의 데이터를 가져와보자.

employee의 테이블을 copy하여 emp_copy라는 테이블을 만들었다.

테이블을 만들땐 DML인 CREATE를 통해 만들자.

 

 

 

그렇게 만들고나면 값을 넣어주지 않았기 때문에 구조만 복사해온것을 볼 수 있다.

-- employee 테이블 copy
CREATE TABLE emp_copy (
SELECT *
FROM employee
WHERE 1 = 0  
-- 1과 0은 다르기 때문에 거짓이라 조회되는 행이 하나도 없음. (구조만 복사)
-- 1=0을 빼면 데이터도 동일하게 카피가 됨.
);

 

 

 

 

다음은 INSERT를 사용할 때 주의할 점이다.

기본키와 똑같은 내용을 넣어줄 때 조심하자.

 

 

이미 BBK라는 userID로 바비킴이라는 name이 있지만,

똑같은 BBK와 바보킴이라는 name을 넣어줄 수 있다.

IGNORE를 써주는 방법이다.

주석을 참고하자.

 

 

 

다음은 데이터 형식에 대해서 알아보자.

 

=> 데이터 형식
1. 숫자 데이터 형식
- 정수 (메모리 공간을 효율적으로 사용하기 위해 공간을 나눠놓음)
TINYINT / SMALLINT / MEDIUMINT / INT INTGER/ BIGINT
- 실수
FLOAT : 소수점 아래 7자리까지 표현
DOUBLE REAL : 소수점 아래 15자리까지 표현

2. 문자 데이터 형식
CHAR : 고정 길이 문자형.(Character의 약자.) / VARCHAR : 가변 길이 문자형.
ex) CHAR(10) -> Hello     하고 나머지는 빈 상태로 남겨놓음
ex) VARCHAR(10) -> Hello하고 나머지는 빈 상태로 두지 않음. 

3. 날짜와 시간 데이터 형식
DATE : yyyy-mm-dd 형식의 날짜 값(1001-01-01 ~9999-12-31)
TIME : hh:mm:ss 형식의 시간 값 (-838:59:59.000000 ~ 838:59:59.000000)
DATETIME : yyyy-mm-dd hh:mm:ss 형식의 날짜 및 시간 값
TIMESTAMP
YEAR
-- 숫자 데이터를 날짜 데이터로 변경
SELECT CAST(20240517 AS DATE );
-- DATETIME은 년월일 시분초 다 있어서 가능
SELECT CAST(20240517154238 AS DATETIME);
-- TIME 써서 시분호 나타내기
SELECT CAST(223948 AS TIME);

 

 

 

 

 

 

이번엔 함수에 대해서 알아보자.

 

 

=> 함수
1. 형 변환 함수 ( 명시적 형 변환 ) 반대로는 암시적 형 변환이 있음.
CAST : expression에 데이터 형식을 AS 이후의 데이터 형식으로 변환한다.
CONVERT : expression에 데이터 형식을 두번째 매개값으로 전달하는 데이터 형식으로 변환한다.

 


-- 형 변환 함수 실습
-- 숫자 데이터를 문자 데이터로 형 변환
-- from절 없이도 불러올수 있음.
-- 숫자형태로 출력됨.
SELECT 123456;
-- 다른 데베는  SELECT * FROM DUAL;


SELECT CONVERT(123456789, CHAR);
-- as뒤에 내가 변환하고 싶은 형식을 지정해주면 됨.
SELECT CAST(123456 AS CHAR);
-- 3자리마다 구분자를 넣어주는 FORMAT함수
SELECT FORMAT(123456789,0);
SELECT FORMAT(12345.6789,2);

 

 


-- birthYear 열의 데이터를 문자 데이터로 형 변환
SELECT NAME,
 CAST(birthYear AS CHAR)
FROM usertbl;

 


-- buytbl에서 평균 구매 개수를 조회
-- 2.9999->3
SELECT CAST(AVG(amount) AS INT )
FROM buytbl;

 

-- 문자 데이터를 숫자 데이터로 형 변환
SELECT CONVERT('1000000', INT );
SELECT CAST('1000000' AS INT );

 

 



2. 제어 흐름 함수
IF(수식, 참, 거짓) : 수식이 참 또는 거짓인지 결과에 따라서 분기하는 함수이다.

IFNULL(수식1, 수식2) : 수식1이 NULL이 아니면 수식1이 반환되고, 수식1이 NULL이면 수식2가 반환된다. -> NVL과 같음.

NULLIF(수식1, 수식2) : 수식1과 수식2가 같으면 NULL을 반환하고, 다르면 수식1을 반환한다.

NVL2(1,2,3) : 1이 NULL이 아니면 2를 반환 NULL이면 3을 반환

 


ASCII코드 [처음 유니코드로 지정했기 때문에 한글도 출력됨, 10진법으로 나타남]
A : 65 (10진법) /41(16진법)/1000001(2진법)
B : 66
C : 67
a : 97
b : 98
ㄱ : 227
ㄴ : 227
ㄷ : 227

 


-- BIT_LENGTH(), CHAR_SENGTH(), LENGTH() 함수
-- MariaDB는 기본적으로 UTF-8 코드를 사용하기 때문에
-- 영문은 1Byte를, 한글은 3Byte를 할당한다.
SELECT BIT_LENGTH('abc'), CHAR_LENGTH('abc'), LENGTH('abc');

BIT_LENGTH()-> 421 4*2*1=8
CHAR_SENGTH()-> 1+1+1=3
LENGTH()-> 3
LENGTH('가나다')-> 3+3+3=9

 

 

 

 

이건 내가 원래 있던 문제에서 조건을 추가하였다.

원래 문제 : employee 테이블에서 직원명, 급여, 등급을 구해준다.

등급은 case를 이용하여 500만원 초과는 1등급, 500만원 이하와 350만원 초과는 2등급,

350만원 이하와 200만원 초과는 3등급,

나머지는 4등급을 부여해준다.

 

나는 여기서 등급별 개수를 추가하고싶었다.

추가를 하기 위해선 서브쿼리가 필요했다.

 

서브쿼리를 활용하여 count를 통해 등급의 개수를 구할 수 있었다.

 

 

 

 

 

 

 

 

여기서 끝--!

'코딩일기' 카테고리의 다른 글

[MariaDB] 서브 쿼리  (2) 2024.05.23
[MariaDB] 윈도우 함수 및 JOIN  (4) 2024.05.23
[MariaDB] MariaDB 사용  (3) 2024.05.17
[MariaDB] MariaDB 설치  (4) 2024.05.17
DATEBASE 기초  (4) 2024.05.17