[mac] mariadb 접속하기
마리아디비 접속하기
mysql -u root -p
->비밀번호 입력 후 접속 완료
ip 확인하기
ifconfig
ip를 이용해서 원격 접속
mysql -h [아이피] -u [사용자아이디] -p
//비밀번호 입력
테이블의 데이터에 접근하기
show databases;
use 데이터베이스명;
show tables;
desc(ribe) 테이블명; //테이블 구조 접근하기
DML - 데이터를 다루는 문법
- select
- insert
- update
- delete
DDL - 데이터를 정의하는 문법
- create
- alter
- drop
[mariadb 연산자]
https://mariadb.com/kb/en/operators/
Operators
mariadb.com
Select
[AS 별칭] : 별칭(Alias)을 지정할 때 사용
select ename, sal as 급여 from emp;
//테이블에 별칭 지정하기
select e.ename, e.sal from emp as e;
select e.emane, e.sal from emp e; //as 키워드 생략하고 사용
[SQL 연산자(Operator)]
1. 비교 연산자(Comparison Operators)
비교 연산자는 두 값 또는 두 열의 값을 비교하는 데 사용됩니다.
- = : 두 값이 같은지 비교
- != 또는 <> : 두 값이 다른지 비교
- > : 값이 더 큰지 비교
- < : 값이 더 작은지 비교
- >= : 값이 크거나 같은지 비교
- <= : 값이 작거나 같은지 비교
2. 논리 연산자(Logical Operators)
논리 연산자는 여러 조건을 결합하거나 논리적 비교를 수행할 때 사용됩니다.
- AND : 두 조건이 모두 참일 때
예: SELECT * FROM EMP WHERE SAL > 3000 AND DEPTNO = 10; - OR : 두 조건 중 하나 이상이 참일 때
예: SELECT * FROM EMP WHERE SAL > 3000 OR DEPTNO = 10; - NOT : 조건이 참이 아니면
예: SELECT * FROM EMP WHERE NOT DEPTNO = 10;
3. 산술 연산자(Arithmetic Operators)
산술 연산자는 숫자 값을 계산하는 데 사용됩니다.
- + : 더하기
예: SELECT ENAME, SAL + 500 FROM EMP; (급여에 500을 더한 값) - - : 빼기
예: SELECT ENAME, SAL - 500 FROM EMP; - * : 곱하기
예: SELECT ENAME, SAL * 2 FROM EMP; - / : 나누기
예: SELECT ENAME, SAL / 2 FROM EMP;
4. 특수 연산자(Special Operators)
특수 연산자는 특정 상황에서 데이터를 더 유연하게 필터링하는 데 사용됩니다.
- BETWEEN : 범위 내에 있는지 확인
예: SELECT * FROM EMP WHERE SAL BETWEEN 2000 AND 5000; - IN : 여러 값 중 하나인지 확인
예: SELECT * FROM EMP WHERE DEPTNO IN (10, 20, 30); - LIKE : 특정 패턴과 일치하는지 확인
예: SELECT * FROM EMP WHERE ENAME LIKE 'H%'; (H로 시작하는 이름) - IS NULL : 값이 NULL인지 확인
예: SELECT * FROM EMP WHERE COMM IS NULL;
[컬럼명 like ‘문자열’]
slelect * from 테이블이름 where 컬럼명 like 패턴;
- 컬럼명 like ‘문_’ : 2글자,문으로 시작하는
- 컬럼명 like ‘_문’ : 2글자,문으로 끝나는
- 컬럼명 like ‘_문_’ :3글자, 문이 중간에 있는
- 컬럼명 like ‘문%’ :문자길이는 알 수 없으나 문으로 시작하는
- 컬럼명 like ‘%문’ : 문으로 끝나는
- 컬럼명 like ‘%문%’ : 문이 포함되어 있는
//H로 시작하는 모든 이름을 조회
select * from emp where ename like 'H%';
//두번째 글자가 A인 모든 이름을 조회
select * from emp where ename like '_A%';
//A글자가 포함된 이름을 조회
select * from emp where ename like '%A%';
//S로 끝나는 모든 이름을 조회
select * from emp where ename like '%S';
[NULL]
NULL은 SQL에서 값이 없음을 나타내는 특별한 마커입니다. NULL은 0이나 빈 문자열과는 다릅니다. 그 자체가 "아무 값도 없다"는 것을 의미합니다. 이를 사용하여 데이터가 존재하지 않거나 아직 입력되지 않은 상태를 나타낼 수 있습니다.
비교할 수 없다 : NULL은 어떤 값과도 비교할 수 없습니다. 예를 들어, SAL = NULL은 항상 거짓입니다. NULL을 비교할 때는 반드시 IS NULL 또는 IS NOT NULL을 사용해야 합니다.
- 잘못된 예: WHERE SAL = NULL
- 올바른 예: WHERE SAL IS NULL
NULL 연산
NULL과 관련된 연산은 결과가 NULL입니다. 즉, NULL 값이 포함된 연산은 항상 NULL을 반환합니다.
SELECT SAL + COMM FROM EMP;
이때, COMM이 NULL이면 결과도 NULL이 됩니다.
집계 함수와 NULL: COUNT(), SUM(), AVG() 등 집계 함수는 NULL을 제외하고 계산됩니다. 즉, NULL 값은 집계 연산에 포함되지 않습니다.
[DISTINCT] : 중복제거
중복된 값을 제거하고 고유한 값만 조회할 떄 사용됩니다.
Select distinct deptno from emp;
//중복된 부서를 제거하고 고유한 부서 번호 목록을 반환함.
[LIMIT] : 결과 행 수 제한
조회된 결과에서 몇개의 행만 가져올지 제한 할 때 사용됩니다.
select * from emp limit 5;
//emp 테이블에서 상위 5명의 직원 정보를 반환함.
//offset을 사용하여 특정 지점부터 데이터를 가져올 수도 있음.
//6번째부터 10번째까지의 데이터를 조회
select * from emp limit 5 offset 5;
[ORDER BY] : 정렬
select 컬럼 from 테이블 order by 컬럼 [ASC || DESC];
- asc : 오름차순
- desc : 내림차순
//급여를 기준으로 내림차순으로 직원 정보 정렬
select ename, sal from emp order by sal desc; //내림차순
//급여를 기준으로 오름차순으로 직원 정보 정렬
select ename, sal from emp order by sal asc; //오름차순
<내장함수>
https://mariadb.com/kb/ko/built-in-functions/
Built-in Functions
mariadb.com
★자주 사용되는 내장함수 정리★
1. 문자열 함수 (String Functions)
실무에서 문자열 데이터를 다루는 작업이 많으므로, 문자열 관련 함수는 자주 사용됩니다.
- CONCAT(): 여러 문자열을 결합할 때 사용. 실무에서 고객 정보, 보고서 생성 시 자주 사용.
- REPLACE(): 특정 문자열을 치환. 대량의 데이터를 처리하거나 데이터 수정 시 사용.
- LENGTH(): 문자열의 길이를 확인하는 데 자주 사용. 데이터 검증이나 필터링 시 유용.
- TRIM(): 문자열의 앞뒤 공백을 제거. 입력된 데이터를 정제할 때 자주 사용.
- SUBSTRING(): 문자열의 일부분을 추출할 때 사용. 고객 코드나 식별자에서 특정 부분을 추출할 때 유용.
2. 숫자 함수 (Numeric Functions)
숫자 계산이나 통계 자료 분석에서 자주 사용되는 함수들입니다.
- ROUND(): 계산된 값을 반올림할 때 사용. 재무 데이터, 통계 처리에 자주 사용.
- ABS(): 절대값을 계산할 때 사용. 차이를 계산하거나 값의 부호를 무시할 때 사용.
- CEIL() / FLOOR(): 숫자를 올림 또는 버림 처리. 금액이나 수량을 정리할 때 유용.
내장함수 목록 정리
1.Information Functions(정보함수)
: 데이터베이스 및 시스템 정보를 조회할 때 사용 되는 함수
- ABS()
숫자의 절대값을 반환합니다.
예시: SELECT ABS(-5);
결과: 5 - CEIL()
소수점을 올림하여 가장 가까운 정수를 반환합니다.
예시: SELECT CEIL(4.2);
결과: 5 - FLOOR()
소수점을 버림하여 가장 가까운 정수를 반환합니다.
예시: SELECT FLOOR(4.9);
결과: 4 - ROUND()
숫자를 반올림하여 지정된 자릿수까지 반환합니다.
예시: SELECT ROUND(4.567, 2);
결과: 4.57 - MOD()
두 숫자를 나눈 나머지를 반환합니다.
예시: SELECT MOD(10, 3);
결과: 1 - SIGN()
숫자의 부호를 반환합니다. 양수면 1, 음수면 -1, 0이면 0을 반환합니다.
예시: SELECT SIGN(-5);
결과: -1 - POWER()
주어진 숫자의 거듭제곱 값을 반환합니다.
예시: SELECT POWER(2, 3);
결과: 8 - SQRT()
숫자의 제곱근을 반환합니다.
예시: SELECT SQRT(16);
결과: 4 - EXP()
주어진 숫자의 자연 로그의 역함수(e의 거듭제곱)를 반환합니다.
예시: SELECT EXP(1);
결과: 2.718281828459045 - LN()
주어진 숫자의 자연 로그(밑이 e인 로그)를 반환합니다.
예시: SELECT LN(2.7183);
결과: 약 1 - LOG()
주어진 숫자의 로그 값을 반환합니다. 두 번째 인수를 넣으면 해당 밑을 사용한 로그 값을 반환합니다.
예시: SELECT LOG(10); 또는 SELECT LOG(2, 8);
결과: 2.302585 (첫 번째 예시), 3 (두 번째 예시) - GREATEST()
주어진 숫자 중에서 가장 큰 값을 반환합니다.
예시: SELECT GREATEST(1, 5, 10);
결과: 10 - LEAST()
주어진 숫자 중에서 가장 작은 값을 반환합니다.
예시: SELECT LEAST(1, 5, 10);
결과: 1 - TRUNCATE()
지정된 자릿수 이하를 잘라내고 숫자를 반환합니다.
예시: SELECT TRUNCATE(4.5678, 2);
결과: 4.56
3. String Functions (문자열 함수)
- CONCAT()
두 개 이상의 문자열을 결합합니다.
예시: SELECT CONCAT('Hello', ' ', 'World');
결과: 'Hello World' - LENGTH()
문자열의 길이를 반환합니다.
예시: SELECT LENGTH('MariaDB');
결과: 7 - LOWER()
문자열을 소문자로 변환합니다.
예시: SELECT LOWER('HELLO');
결과: 'hello' - UPPER()
문자열을 대문자로 변환합니다.
예시: SELECT UPPER('hello');
결과: 'HELLO' - SUBSTRING()
문자열의 일부를 추출합니다. 시작 위치와 추출할 길이를 지정할 수 있습니다.
예시: SELECT SUBSTRING('MariaDB', 2, 3);
결과: 'ari' - TRIM()
문자열의 앞뒤 공백을 제거합니다.
예시: SELECT TRIM(' MariaDB ');
결과: 'MariaDB' - LTRIM()
문자열의 왼쪽 공백을 제거합니다.
예시: SELECT LTRIM(' MariaDB');
결과: 'MariaDB' - RTRIM()
문자열의 오른쪽 공백을 제거합니다.
예시: SELECT RTRIM('MariaDB ');
결과: 'MariaDB' - REPLACE()
특정 문자열을 다른 문자열로 치환합니다.
예시: SELECT REPLACE('Hello World', 'World', 'MariaDB');
결과: 'Hello MariaDB' - INSTR()
특정 문자열이 다른 문자열 내에 처음 등장하는 위치를 반환합니다.
예시: SELECT INSTR('Hello World', 'World');
결과: 7 - LEFT()
문자열의 왼쪽에서부터 지정한 길이만큼의 문자를 반환합니다.
예시: SELECT LEFT('MariaDB', 4);
결과: 'Mari' - RIGHT()
문자열의 오른쪽에서부터 지정한 길이만큼의 문자를 반환합니다.
예시: SELECT RIGHT('MariaDB', 3);
결과: 'DB' - LPAD()
문자열의 왼쪽에 지정된 길이만큼 특정 문자를 채워 넣습니다.
예시: SELECT LPAD('MariaDB', 10, '*');
결과: '***MariaDB' - RPAD()
문자열의 오른쪽에 지정된 길이만큼 특정 문자를 채워 넣습니다.
예시: SELECT RPAD('MariaDB', 10, '*');
[Date and Time Functions]
Time Functions(날짜 및 시간 함수)는 MariaDB에서 날짜와 시간을 처리하는 데 사용됩니다. 날짜 계산, 시간 간격 계산, 현재 시간 조회 등 다양한 작업에서 매우 유용합니다.
- NOW()
- SELECT NOW();
- 결과: 현재 날짜 및 시간이 반환됩니다. (예: 2024-10-24 14:30:00)
- SELECT NOW();
- CURDATE()
- SELECT CURDATE();
- 결과: 오늘의 날짜가 반환됩니다. (예: 2024-10-24)
- SELECT CURDATE();
- CURTIME()
- SELECT CURTIME();
- 결과: 현재 시간이 반환됩니다. (예: 14:30:00)
- SELECT CURTIME();
- DATE()
- SELECT DATE(NOW());
- 결과: 현재 날짜만 반환됩니다. (예: 2024-10-24)
- SELECT DATE(NOW());
- YEAR(), MONTH(), DAY()
- SELECT YEAR(NOW());
- 결과: 현재 연도가 반환됩니다. (예: 2024)
- SELECT MONTH(NOW());
- 결과: 현재 월이 반환됩니다. (예: 10)
- SELECT DAY(NOW());
- 결과: 현재 일이 반환됩니다. (예: 24)
- SELECT YEAR(NOW());
- TIME()
- SELECT TIME(NOW());
- 결과: 현재 시간이 반환됩니다. (예: 14:30:00)
- SELECT TIME(NOW());
- DAYNAME()
- UNIX_TIMESTAMP()
- DATE_FORMAT()
- DATE_ADD()
- SELECT DATE_ADD(NOW(), INTERVAL 7 DAY);
- 결과: 7일 후의 날짜가 반환됩니다.
- SELECT DATE_ADD(NOW(), INTERVAL 7 DAY);
- DATE_SUB()
- SELECT DATE_SUB(NOW(), INTERVAL 1 MONTH);
- 결과: 1개월 전의 날짜가 반환됩니다.
- SELECT DATE_SUB(NOW(), INTERVAL 1 MONTH);
- DATEDIFF()
- SELECT DATEDIFF('2024-12-31', '2024-01-01');
- 결과: 날짜 간의 차이가 일 단위로 반환됩니다. (예: 364)
- SELECT DATEDIFF('2024-12-31', '2024-01-01');
- STR_TO_DATE()
- SELECT STR_TO_DATE('24-10-2024', '%d-%m-%Y');
- 결과: 2024-10-24로 변환된 날짜가 반환됩니다.
[날짜 및 시간을 한글로 표시 :lc_time_names 변수]
lc_time_names 변수는 날짜와 시간에 대한 언어 설정을 관리하는 변수로, 이를 변경하면 날짜 형식이 해당 언어로 표시됩니다. 기본값은 en_US(영어)로 설정되어 있지만, 이를 한국어(ko_KR)로 변경할 수 있습니다.
SET lc_time_names = 'ko_KR';
SELECT DAYNAME('2024-10-25');
결과: 2024-10-25의 요일이 한글로 반환됩니다. ('금요일')
SET lc_time_names = 'ko_KR';
SELECT MONTHNAME('2024-10-24');
결과: 10월이라는 한글 월 이름이 반환됩니다.
SHOW VARIABLES LIKE 'lc_time_names';
[Control Flow Functions(제어 흐름 함수)]
- IF()
- IFNULL()
select sal, comm, sal*12 + ifnull(comm, 0) from emp;
| 결과 |
| +---------+---------+--------------------------+ | sal | comm | sal*12 + ifnull(comm, 0) | +---------+---------+--------------------------+ | 800.00 | NULL | 9600.00 | | 1600.00 | 300.00 | 19500.00 | | 1250.00 | 500.00 | 15500.00 | | 2975.00 | NULL | 35700.00 | | 1250.00 | 1400.00 | 16400.00 | | 2850.00 | NULL | 34200.00 | | 2450.00 | NULL | 29400.00 | | 3000.00 | NULL | 36000.00 | | 5000.00 | NULL | 60000.00 | | 1500.00 | 0.00 | 18000.00 | | 1100.00 | NULL | 13200.00 | | 950.00 | NULL | 11400.00 | | 3000.00 | NULL | 36000.00 | | 1300.00 | NULL | 15600.00 | +---------+---------+--------------------------+ 14 rows in set (0.000 sec) |
- CASE Operator
CASE
WHEN condition1 THEN result1
WHEN condition2 THEN result2
ELSE resultN
END;
수업예시
select
case
1
when 1 then 'one'
when 2 then 'two'
else 'more'
end test;
select
case
when 1 > 0 then 'true'
else 'false'
end test;
| 결과 |
| +------+ | test | +------+ | true | +------+ 1 row in set (0.000 sec) |
[SQL 스크립트]
SQL 스크립트는 데이터베이스에서 실행할 SQL 명령어들이 모여 있는 파일이나 코드 블록입니다. SQL 스크립트를 통해 여러 명령어를 순차적으로 실행하거나 반복적으로 사용해야 하는 작업을 자동화할 수 있습니다. 주로 .sql 확장자로 저장되며, 데이터베이스 구조 생성, 데이터 삽입, 변경, 삭제와 같은 작업을 포함할 수 있습니다.
SOURCE 명령어
SOURCE 명령어는 SQL 스크립트를 외부 파일에서 불러와 실행할 때 사용되는 MariaDB/MySQL의 명령어입니다. 이 명령어는 데이터베이스 관리 시스템 내에서 실행되며, 외부 파일에 저장된 SQL 명령어들을 한 번에 실행할 수 있게 해줍니다.
MySQL 클라이언트에서 아래 명령을 사용해요.
SOURCE /path/to/your_script.sql;
SOURCE c:/MariaDB/ex03.sql # Win
SOURCE /Users/your_name/MariaDB/ex03.sql # Mac
또는 터미널에서
mysql -u [username] -p < script.sql
SELECT
ename,
sal,
CASE
job
WHEN 'analyst' THEN '조사'
WHEN 'clerk' THEN '사원'
WHEN 'manager' THEN '관리'
WHEN 'president' THEN '대표'
ELSE '영업'
END '한글명 표시'
FROM
emp
WHERE
deptno = 30;
| 결과 |
| +--------+---------+------------------+ | ename | sal | 한글명 표시 | +--------+---------+------------------+ | ALLEN | 1600.00 | 영업 | | WARD | 1250.00 | 영업 | | MARTIN | 1250.00 | 영업 | | BLAKE | 2850.00 | 관리 | | TURNER | 1500.00 | 영업 | | JAMES | 950.00 | 사원 | +--------+---------+------------------+ 6 rows in set (0.001 sec) |
-- [실습] SQL 스크립트를 작성해보세요.
-- 직책별
-- analyst -> 10% 인상
-- clerk -> 50% 인상
-- manager -> 20% 인상
-- salesman -> 30% 인상
-- etc -> 인상 없음
USE SAMPLE;
SELECT
EMPNO,
ENAME,
JOB,
SAL '현재급여',
CASE
WHEN JOB = 'ANALYST' THEN SAL * 1.1
WHEN JOB = 'CLERK' THEN SAL * 1.5
WHEN JOB = 'MANAGER' THEN SAL * 1.2
WHEN JOB = 'SALESMAN' THEN SAL * 1.3
ELSE SAL
END AS 인상_급여
FROM
EMP;
| 결과 |
| +-------+--------+-----------+--------------+---------------+ | EMPNO | ENAME | JOB | 현재급여 | 인상_급여 | +-------+--------+-----------+--------------+---------------+ | 7369 | SMITH | CLERK | 800.00 | 1200.000 | | 7499 | ALLEN | SALESMAN | 1600.00 | 2080.000 | | 7521 | WARD | SALESMAN | 1250.00 | 1625.000 | | 7566 | JONES | MANAGER | 2975.00 | 3570.000 | | 7654 | MARTIN | SALESMAN | 1250.00 | 1625.000 | | 7698 | BLAKE | MANAGER | 2850.00 | 3420.000 | | 7782 | CLARK | MANAGER | 2450.00 | 2940.000 | | 7788 | SCOTT | ANALYST | 3000.00 | 3300.000 | | 7839 | KING | PRESIDENT | 5000.00 | 5000.000 | | 7844 | TURNER | SALESMAN | 1500.00 | 1950.000 | | 7876 | ADAMS | CLERK | 1100.00 | 1650.000 | | 7900 | JAMES | CLERK | 950.00 | 1425.000 | | 7902 | FORD | ANALYST | 3000.00 | 3300.000 | | 7934 | MILLER | CLERK | 1300.00 | 1950.000 | +-------+--------+-----------+--------------+---------------+ 14 rows in set (0.000 sec) |
[DECODE_ORACLE()]
Oracle의 DECODE() 함수와 유사하게 동작하는 함수로, 조건에 따라 특정 값을 반환하는 역할을 합니다. 이 함수는 특히 MariaDB에서 Oracle 호환성을 고려하여 사용할 수 있습니다.
DECODE_ORACLE(expression, search1, result1, [search2, result2, ...], default)
- expression: 비교할 값입니다.
- search: expression과 비교할 값입니다.
- result: search와 일치할 경우 반환할 값입니다.
- default: 모든 search 값과 일치하지 않을 때 반환할 기본값입니다. (생략 가능)
예시
SELECT empno,
ename,
DECODE_ORACLE(job,
'ANALYST', '분석가',
'CLERK', '서기',
'MANAGER', '매니저',
'SALESMAN', '영업사원',
'직책 미정') AS 직책명
FROM emp;
| 결과 |
| +-------+--------+---------------+ | empno | ename | 직책명 | +-------+--------+---------------+ | 7369 | SMITH | 서기 | | 7499 | ALLEN | 영업사원 | | 7521 | WARD | 영업사원 | | 7566 | JONES | 매니저 | | 7654 | MARTIN | 영업사원 | | 7698 | BLAKE | 매니저 | | 7782 | CLARK | 매니저 | | 7788 | SCOTT | 분석가 | | 7839 | KING | 직책 미정 | | 7844 | TURNER | 영업사원 | | 7876 | ADAMS | 서기 | | 7900 | JAMES | 서기 | | 7902 | FORD | 분석가 | | 7934 | MILLER | 서기 | +-------+--------+---------------+ 14 rows in set (0.002 sec) |
[Encryption, Hashing and Compression Functions]
1. 가역적 암호화 (Reversible Encryption)
- 정의: 암호화된 데이터를 다시 원래의 형태로 복원할 수 있는 암호화 방식입니다.
- 목적: 데이터의 기밀성을 보호하면서도, 필요할 때 복호화하여 원본 데이터를 확인할 수 있도록 합니다.
2. 비가역적 암호화 (Irreversible Encryption)
- 정의: 암호화된 데이터를 원래의 형태로 복원할 수 없는 방식입니다. 보통 해싱(Hashing)이라 불리며, 해시 함수로 데이터를 고정된 길이의 해시 값으로 변환합니다.
- 목적: 데이터의 무결성 확인과 비밀번호 보호를 위해 사용되며, 해시 값을 통해 원본 데이터가 변경되었는지 여부만 확인할 수 있습니다.
가역적 vs 비가역적 암호화 비교
| 구분 | 가역적 암호화 | 비가역적 암호화 |
| 복호화 가능 여부 | 복호화 가능 | 복호화 불가능 |
| 주요 알고리즘 | AES, RSA 등 대칭 및 비대칭 암호화 | SHA-256, MD5 등 해시 함수 |
| 사용 목적 | 기밀 데이터 보호, 통신 보호 | 데이터 무결성 확인, 비밀번호 보호 |
| 보안 요소 | 복호화 키 관리가 중요 | 솔트 추가를 통해 보안 강화 가능 |
PASSWORD() 함수
- 기능: 문자열을 MariaDB의 사용자 비밀번호 해시 형식으로 변환.
- 사용 목적: MariaDB의 사용자 비밀번호를 안전하게 저장하여 인증할 때 사용.
- 보안성: PASSWORD() 함수의 해시 값은 MariaDB에 의해 고유한 형식으로 변환되지만, 비밀번호 암호화용으로는 권장되지 않습니다.
PASSWORD('string');
MD5()
- 주요 용도: 파일 무결성 확인, 간단한 데이터 검증.
- 실무 사례: 데이터를 전송하거나 파일을 다운로드할 때 파일 무결성을 확인하기 위해 MD5() 해시를 비교.
-- MD5로 데이터 검증
SELECT MD5('Important Data') AS hash_value;
[Aggregate Functions(집계 함수)]
SQL에서 여러 행의 데이터를 하나의 결과 값으로 요약할 때 사용되는 함수입니다. 주로 데이터 분석이나 요약된 통계를 생성하는 데 유용합니다.
- COUNT()
- SUM()
- AVG()
- MIN()
- MAX()
- GROUP_CONCAT()
- VARIANCE()
- STDDEV()
-- comm 컬럼의 평균 값을 구하고, comm 컬럼의 합계와 전체 행 수로 나눈 값들을 출력
select avg(comm), sum(comm)/count(comm), sum(comm)/count(*)
from emp;
-- comm 컬럼에 null 값이 있을 경우 0으로 대체하여 평균 값을 구함
select avg(comm), sum(comm)/count(ifnull( comm, 0 )), sum(comm)/count(*)
from emp;
-- comm 컬럼의 null 값을 0으로 대체한 후 평균 값과 합계, 전체 행 수로 나눈 값 출력
select avg(ifnull( comm, 0 )), sum(comm)/count(ifnull( comm, 0 )), sum(comm)/count(*)
from emp;
| 결과 |
| +------------+-----------------------+--------------------+ | avg(comm) | sum(comm)/count(comm) | sum(comm)/count(*) | +------------+-----------------------+--------------------+ | 550.000000 | 550.000000 | 157.142857 | +------------+-----------------------+--------------------+ |
| +------------+------------------------------------+--------------------+ | avg(comm) | sum(comm)/count(ifnull( comm, 0 )) | sum(comm)/count(*) | +------------+------------------------------------+--------------------+ | 550.000000 | 157.142857 | 157.142857 | +------------+------------------------------------+--------------------+ |
| +------------------------+------------------------------------+--------------------+ | avg(ifnull( comm, 0 )) | sum(comm)/count(ifnull( comm, 0 )) | sum(comm)/count(*) | +------------------------+------------------------------------+--------------------+ | 157.142857 | 157.142857 | 157.142857 | +------------------------+------------------------------------+--------------------+ |
'Backend > SQL' 카테고리의 다른 글
| [SQL] 참조키 : 기본키, 외래키 (0) | 2024.10.29 |
|---|---|
| [SQL] DDL(Data Definition Language) (0) | 2024.10.28 |
| [SQL]JOIN (0) | 2024.10.28 |
| [SQL]서브쿼리(Subquery) (0) | 2024.10.28 |
| [SQL] GROUP BY (집계함수, HAVING) (0) | 2024.10.28 |