데이터 조작어(DML)의 종류
- 데이터 조작어는 모두 동사로 시작한다.
- SELECT : 검색
- INSERT : 등록
- UPDATE : 수정
- DELETE : 삭제
SELECT
- 칼럼명 대신 *을 입력하면 해당 테이블의 모든 열을 출력할 수 있다.
- 칼럼이 여러개일 경우 ,로 구분한다.
- ALIAS은 칼럼명과 공백으로 구분하며, 별칭, '별칭', as 별칭, as '별칭' 모두 입력 가능하다. 별칭이 공백에 포함되어 있을 경우 ''을 사용하지 안으면 에러가 발생한다.
concat
- 문자열을 결합하는 합수이다.
SELECT concat(empno, '-', deptno) AS '사번-부서번호' FROM employee;
- 위의 명령어는 employee 테이블에서 empno와 deptno를 -로 연결하고 사번-부서번호의 이름으로 출력하라는 의미이다.
distinct
- 중복 행을 제거할 수 있다.
- select와 컬럼명 사이에 distinct를 기입한다.
ORDER BY
- 칼럼이 name,emtno일 경우 order by 뒤에 name이나 1을 입력하면 해당 요소로 정렬된다.
where
- where 이후 조건에 맞는 값들을 출력한다.
- 조건식에 다양한 연산자들을 사용할 수 있다.
산술 비교 연산자
select name, hiredate from employee where hiredate < '1981-01-01';
- employee 테이블에서 hiredate가 1981년 이전의 사원 이름과 고용일을 출력
논리 연산자
select name, deptno from employee where deptno = 30;
- employee 테이블에서 부서번호가 30인 사원이름과 부서번호 출력
IN 키워드
select name, deptno from employee where deptno in (10, 30);
- employee 테이블에서 부서번호가 10 또는 30인 사원이름과 부서번호 출력
LIKE 키워드
- 특정 키워드로 시작하는 문자열, 특정 키워드가 들어있는 문자열 등을 선택할 수 있다.
- % : 여러개의 문자열을 나타냄
- _ : 하나의 문자를 나타냄
select name, job from employee where name like '%A%';
- employee 테이블에서 이름에 'A'가 포함된 사원의 이름과 직업을 출력
select name, job from employee where name like '_A%';
- employee 테이블에서 두번째 글자에 'A'가 포함된 사원의 이름과 직업을 출력
함수의 사용
UPPER or UCASE
SELECT UPPER('name') from employee;
- employee 테이블에서 name을 대문자로 출력. UPPER 대신 UCASE로 사용 가능하다.
LOWER or LCASE
SELECT LOWER('name') from employee;
- employee 테이블에서 name을 소문자로 출력. LOWER 대신 LCASE로 사용 가능하다.
LPAD, RPAD
SELECT LPAD('hi',5,'?'),LPAD('joe',7,'*');
- 출력결과 : ???hi ****joe
- 부족한 글자 수를 원하는 문자로 대체하여 특정 글자 수로 출력할 수 있다.
substring
SELECT SUBSTRING('Happy Day',3,2);
- 출력결과 : pp
- 특정 위치부터 특정 개수의 문자를 출력할 수 있다.
TRIM, LTRIM, RTRIM
ABS(x)
MOD(n, m) or %
기타
- FLOOR(x) : x보다 크지 않은 가장 큰 정수를 반환합니다. BIGINT로 자동 변환합니다.
- CEILING(x) : x보다 작지 않은 가장 작은 정수를 반환합니다.
- ROUND(x) : x에 가장 근접한 정수를 반환합니다.
- POW(x,y) POWER(x,y) : x의 y 제곱 승을 반환합니다.
- GREATEST(x,y,...) : 가장 큰 값을 반환합니다.
- LEAST(x,y,...) : 가장 작은 값을 반환합니다.
- CURDATE(),CURRENT_DATE : 오늘 날짜를 YYYY-MM-DD나 YYYYMMDD 형식으로 반환합니다.
- CURTIME(), CURRENT_TIME : 현재 시각을 HH:MM:SS나 HHMMSS 형식으로 반환합니다.
- NOW(), SYSDATE() , CURRENT_TIMESTAMP : 오늘 현시각을 YYYY-MM-DD HH:MM:SS나 YYYYMMDDHHMMSS 형식으로 반환합니다.
- DATE_FORMAT(date,format) : 입력된 date를 format 형식으로 반환합니다.
- PERIOD_DIFF(p1,p2) : YYMM이나 YYYYMM으로 표기되는 p1과 p2의 차이 개월을 반환합니다.
CAST 형변환
select cast(now() as date), now();
- 출력결과 : 2021-09-05 | 2021-09-05 14:34:29
그룹함수
group by
SELECT deptno, AVG(salary) , SUM(salary) FROM employee group by deptno;
- employee 테이블에서 부서별 직원의 부서번호, 급여 평균과 총합계를 출력한다.