데이터 조작어(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)

  • x의 절댓값을 구한다.

MOD(n, m) or %

  • n을 m으로 나눈 나머지 값을 출력한다.

기타

  • 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 테이블에서 부서별 직원의 부서번호, 급여 평균과 총합계를 출력한다.
profile
do for me

0개의 댓글