본문 바로가기

Tech/BoostCourse - WEB

[부스트코스] MySQL 시작하기 (3/4) (DML - select, insert, update, delete)

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

데이터 조작어는 모두 동사로 시작한다.

시작하는 동사에 따라서 다음과 같은 4가지 조작어가 있다.

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

 

SELECT 구문의 기본문형

전체 데이터 검색

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

 

예제: departments 테이블의 모든 데이터를 출력하시오

SELECT * FROM DEPARTMENT;

 

특정 컬럼 검색

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

 

예제: employee 테이블에서 직원의 사번(empno), 이름(name), 직업(job)을 출력하시오.
(해당 테이블에 어떤 칼럼이 있는지는 desc 명령으로 확인할 수 있다.)

desc employee;
select empno, name, job from employee;

 

컬럼에 Alias 부여하기

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

 

예제: employee 테이블에서 직원의 사번(empno), 이름(name), 직업(job)을 출력하시오. (as는 생략 가능하다.)

select empno as 사번, name as 이름, job as 직업 from employee;

 

컬럼의 합성(Conctenation)

문자열 결함함수 concat을 사용해서 컬럼을 합성할 수 있다.

 

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

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

 

중복 행의 제거

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

 

예제: 사원 테이블의 모든 부서번호를 출력하시오. (사원의 수만큼 출력된다.)

select deptno from employee;

 

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

select distinct deptnpo from employee;

 

 

SELECT 구문 (정렬하기)

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

단, 이름을 기준으로 오름차순 정렬한다.

select empno, name, job from employee order by name;

select empno as 사번, name as 이름, job as 직업 from employee order by 이름;

 

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

단, 이름을 기준으로 내림차순 정렬한다.

select empno, name, job from employee order by name desc;

 

 

SELECT 구문 (특정 행 검색 - where절)

산술 비교 연산자

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

select name, hiredate from employee where hiredate < '1981-01-01';

 

논리 연산자

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

select name, deptno from employee where deptno = 30;

 

IN 키워드

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

select name, deptno from employee where deptno in (10, 30);

// 위 명령은 아래의 결과와 같다.
select name, deptno from employee where deptno = 10 or deptno = 30;

 

Like 키워드

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

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

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

 

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

select name, job from employee where name like '%A%';

 

 

SELECT 구문 (함수의 사용)

- UCASE, UPPER : 해당 문자열을 대문자로 변환

- LCASE, LOWER : 해당 문자열을 소문자로 변환

- substring : 문자열 추출

(해당 문자열 중 3번째부터 2개의 문자 추출)

- LPAD, RPAD : 해당 문자열 왼쪽(오른쪽)에 지정한 문자열을 채워서 출력

- TRIM, LTRIM, RTRIM : 앞, 뒤 공백 제거

- ABS(x) : x의 절대값을 구한다.

- MOD(n,m) % : 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의 차이 개월을 반환

 

 

SELECT 구문 (CAST 형변환)

 

SELECT 구문 (그룹함수)

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

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

 

SELECT 구문 (그룹함수와 groupby 절)

예제: 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의 값, … );

- 필드명을 지정해주는 방식은 디폴트 값이 세팅되는 필드는 생략할 수 있다.

- 필드명을 지정해주는 방식은 추 후, 필드가 추가/변경/수정 되는 변경에 유연하게 대처 가능하다.

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

 

예제: ROLE 테이블에 role_id는 200, description에는 'CEO'로 한 건의 데이터를 저장하시오.

insert into ROLE (role_id, description) values ( 200, 'CEO');

 

 

UPDATE 문 (데이터 수정)

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

- 조건식을 통해 특정 row만 변경할 수 있다.

- 조건식을 주지 않으면 전체 로우가 영향을 미치니 조심해서 사용하도록 한다.

 

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

update ROLE
set description = 'CTO'
where role_id = 200;

 

 

DELETE 문 (데이터 삭제)

DELETE
FROM 테이블명
WHERE 조건식;

- 조건식을 통해 특정 row만 삭제할 수 있다.

- 조건식을 주지 않으면 전체 로우가 영향을 미치니 조심해서 사용해야한다.

 

예제: ROLE 테이블에서 role_id는 200인 정보를 삭제하시오.

delete from ROLE where role_id = 200;

 

 

[부스트코스 관련 강의 링크]

DML(select, insert, update, delete) - https://www.edwith.org/boostcourse-web/lecture/16721/

 

[LECTURE] 2) DML(select, insert, update, delete) : edwith

들어가기 전에 이번 시간에는 DBMS에 값을 저장, 수정, 삭제, 조회하는 방법에 대해 배워보도록 하겠습니다.     학습 목표 insert문을 수행할 수 있다. update문을 ... - 부스트코스

www.edwith.org

반응형