안녕하세요👻
오늘은 데이터 조작어 DML에 대해서 알아보고 예제를 통해 사용법을 익혀보겠습니다!


데이터 조작어(Data Manipulation Language, DML)의 종류

  • SELECT - 검색
  • INSERT - 등록
  • UPDATE - 수정
  • DELETE - 삭제

SELECT 구문의 기본 문형

SELECT 구문 예제

전체 데이터 검색

SELECT 뒤에 *를 기술함으로써 나타낼 수 있다.

예제

department 테이블의 모든 데이터를 출력하시오.

mysql> SELECT * FROM department;

특정 컬럼 검색

SELECT 뒤에 컬럼을 콤마(,)로 구별해서 나열

예제

employee 테이블에서 직원의 사번(empno), 이름(name), 직업(job)을 출력하시오.

컬럼에 Alias 부여하기

컬럼에 대한 ALIAS(별칭)을 부여해서 나타내는 컬럼의 HEADING을 변경할 수 있다.

예제

employee 테이블에서 직원의 사번(empno), 이름(name), 직업(job)을 출력하시오.

mysql> SELECT empno AS 사번, name AS 이름, job AS 직업 FROM employee;

컬럼의 합성(Concatenation)

문자열 결합함수 concat을 사용한다.

예제

employee 테이블에서 사번과 부서번호를 하나의 컬럼으로 출력하시오.

mysql> SELECT concat(empno, '-', deptno) AS '사번-부서번호' FROM employee;

중복행의 제거

중복되는 행이 출력되는 경우, DISTINCT 키워드로 중복행을 제거한다.

예제

사원 테이블의 부서번호를 중복되지 않게 출력하시오.

  1. 우선 사원 테이블의 모든 부서번호를 출력한다.
mysql> SELECT deptno FROM employee;

  1. DISTINCT를 이용하여 중복행을 제거한다.
mysql> SELECT DISTINCT deptno FROM employee;

오름차순 정렬

예제

employee 테이블에서 직원의 사번(empno), 이름(name), 직업(job)을 출력하시오.
단, 이름을 기준으로 오름차순 정렬합니다.

mysql> SELECT empno, name, job, FROM employee ORDER BY name;

ALIAS를 사용하는 경우에는 ORDER BY 뒤에 해당 별칭을 입력해주면 된다.

mysql> SELECT empno AS 사번, name AS 이름, job AS 직업 FROM employee ORDER BY 이름;

내림차순 정렬

명령어 마지막에 DESC 키워드를 입력해주면 내림차순으로 정렬이 가능하다.

예제

employee 테이블에서 직원의 사번(empno), 이름(name), 직업(job)을 출력하시오.
단, 이름을 기준으로 내림차순 정렬합니다.

mysql> SELECT empno, name, job FROM employee ORDER BY name DESC;

이름을 기준 내림차순으로 정렬된 결과를 볼 수 있다!

특정 행 검색(WHERE)

예제(산술비교 연산자)

employee 테이블에서 고용일(hiredate)이 1981년 이전의 사원이름과 고용일을 출력하시오.

mysql> SELECT name, hiredate FROM employee WHERE hiredate < '1981-01-01';

예제(논리 연산자)

employee 테이블에서 부서번호가 30인 사원이름과 부서번호를 출력하시오.

mysql> SELECT name, depto FROM employee WHERE deptno = 30;

예제(IN)

employee 테이블에서 부서번호가 10또는 30인 사원이름과 부서번호를 출력하시오.

mysql> SELECT name, deptno FROM employee WHERE deptno in (10, 30);

예제(LIKE)

  • 와일드 카드를 사용하여 특정 문자를 포함한 값에 대한 조건을 처리
  • % 는 0에서부터 여러 개의 문자열을 나타냄
  • _ 는 단 하나의 문자를 나타내는 와일드 카드

employee 테이블에서 이름에 'A'가 포함된 사원의 이름(name)과 직업(job)을 출력하시오.

mysql> SELECT name, job FROM employee WHERE name LIKE '%A%';

함수의 사용

예제(UPPER, UCASE)

소문자를 대문자로 바꿔주는 함수입니다.

mysql> SELECT UPPER('SEoul'), UCASE

예제(LOWER, LCASE)

대문자를 소문자로 바꿔주는 함수입니다.

mysql> SELECT LOWER('SEoul'), LCASE('seOUL');

예제(SUBSTRING)

문자열을 잘라주는 함수입니다.

mysql> SELECT SUBSTRING('Happy Day', 3,2);

예제(LPAD, RPAD)

특정 문자로 자릿수를 채워주는 함수입니다.

  • LPAD(왼쪽 채우기)
mysql> SELECT LPAD('hi',5,'?');

  • RPAD(오른쪽 채우기)
mysql> SELECT RPAD('joe',7,'*');

예제(TRIM, LTRIM, RTRIM)

문자열의 공백을 없애주는 함수입니다.

  • TRIM(양쪽 공백 없애기)
    mysql> SELECT TRIM('hi'), TRIM(BOTH'x' FROM 'xxxhixxx');
  • LTRIM(왼쪽 공백 없애기)
mysql> SELECT LTRIM(' hello ');

  • RTRIM(오른쪽 공백 없애기)
mysql> SELECT RTRIM(' hello ');

예제(ABS)

절대값을 구하는 함수입니다.

mysql> SELECT ABS(2), ABS(-2);

기타 함수

  • MOD(n,m) % : n을 m으로 나눈 나머지 값을 출력합니다.
  • FLOOR(x) : x보다 크지 않은 가장 큰 정수를 반환합니다.
  • 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 형변환

예제

mysql> SELECT CAST(now() as date);

mysql> SELECT CAST(1-2 as unsigned);

그룹 함수

예제

employee 테이블에서 부서번호가 30인 직원의 급여 평균과 총합계를 출력하시오.

mysql> SELECT AVG(salary), SUM(salary)
FROM employee
WHERE deptno = 30;

예제(GROUP BY)

employee 테이블에서 부서별 직원의 부서번호, 급여 평균과 총합계를 출력하시오.

mysql> SELECT deptno, AVG(salary), SUM(salary)
FROM employee
GROUP BY deptno;


📚Reference
boostcourse - 웹 백엔드

profile
훈싹의 개발여행

0개의 댓글

관련 채용 정보

Powered by GraphCDN, the GraphQL CDN