[부스트코스 SQL] DML

June·2021년 1월 2일
0

부스트코스

목록 보기
2/23

부스트코스 백엔드 과정 SQL DML

테이블 생성을 위한 쿼리문

쿼리문

테이블 구조를 확인하기 위한 DESCRIBE 명령

짧게 DESC라고 사용해도 된다.
EMPLOYEE 테이블의 구조를 확인해보자

desc EMPLOYEE;

DML의 종류

  • SELECT
  • INSERT
  • UPDATE
  • DELETE

SELECT

SELECT(DISTINCT) 칼럼명(ALIAS)
FROM 테이블명;

예제

select deptno as 부서번호,name as 부서명 from department;

SELECT 컬럼의 합성 Concatenation

예제: employee 테이블에서 사번과 부서번호를 하나의 칼럼으로 출력

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

중복행의 제거 DISTINCT

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

SELECT DISTINCT deptno from employee;

정렬하기

SELECT empno, name
FROM employee
ORDER BY empno, name;

2번째 컬럼을 내림차순으로 정렬하고 싶으면

SELECT empno, name
FROM employee
ORDER BY 1 DESC;

특정 행 검색 - where 절

예제: employee 테이블에서 고용일(hiredate)이 1981년 이전의 사우너 이름과 고용일을 출력하시오

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

IN 키워드

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

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

LIKE 키워드

  • 와일드 카드를 사용하여 특정 문자를 포함한 값에 대한 조건을 처리

  • %는 0에서부터 여러 개의 문자열을 나타냄

  • _는 단 하나의 문자를 나타내는 와일드 카드

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

    SELECT name, job
    FROM employee
    WHERE name like '%A%';

    예제: 이름의 두번째 글자가 'A'인 사람을 찾으시오

    SELECT *
    FROM employee
    WHERE name like '_A%';

    함수의 사용

    UCASE, UPPER

    SELECT UPPER('SEoul');

    substring

    인덱스는 1번부터 시작하며, 3번 인덱스부터 2글자를 가져오기

    SELECT SUBSTRING('HAPPY DAY', 3, 2);

    LPAD, RPAD

    5글자를 맞추는데 5글자가 아니면 '?'로 채우기

    SELECT LPAD('hi', 5, '?');

    TRIM, LTRIM, RTRIM

CAST 형변환

  • CAST 함수의 사용법:

    1. CAST(expression as type)
    2. CONVERT (expression, type)
    3. CONVERT (expr USING transcoding_name)
  • MySQL 타입:

    1. BINARY
    2. CHAR
    3. DATE
    4. DATETIME
    5. SIGNED {INTEGER}
    6. TIME
    7. UNSIGNED {INTEGER}

    예제

    select cast(now() as date);

    그룹함수

    COUNT, AVG, MIN, SUM ....

    예제: employee 테이블에서 부서번호가 30인 직원의 급여 평균과 총합계를 출력

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

    예제: employee 테이블에서 부서별 직원의 부서번호, 급여 평균과 총합계를 출력

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

    데이터 입력

    INSERT문

    INSERT INTO 테이블명 (필드1, 필드2, 필드3, 필드4, ...(
    VALUES (필드 1의 값, 필드2의 값, 필드3의 값, 필드4의 값, ...)

    INSERT INTO 테이블명
    VALUES (필드 1의 값, 필드 2의 값, 필드3의 값, 필드 4의 값, ...)

필드명을 생략했을 경우에는 모든 필드 값을 반드시 입력해야 한다.

INSERT INTO ROLE (role_id, description)
VALUES (200, 'CEO');

UPDATE 문

UPDATE 테이블명
SET 필드1=필드1의 값, 필드2=필드2의 값, 필드3=필드3의 값, ...
WHERE 조건식

조건식을 주지 않으면 전체 로우가 영향을 미치니 조심한다.

예제> ROLE 테이블에 role_id가 200일 경우 description을 'CTO'로 수정하시오.

UPDATE ROLE
SET description = 'CTO'
WHERE role_id = 200;

DELETE 문

DELETE
FROM 테이블명
WHERE 조건식

0개의 댓글