본문 바로가기

DB

DB_3강

  DML(데이터 조작어)

1. INSERT(삽입)

INSERT는 테이블에 테이더를 삽입하는 명령어이다.

 

문법)

     INSERT INTO { 테이블명 } ( 컬럼명1, 컬럼명2, ... )

     VALUES ('데이터', '데이터', ... );

     이때 데이터 배치 순서는 위의 컬럼명 배치 순서대로이다.

 

     INSERT INTO { 테이블명 }

     VALUES ( '데이터', '데이터', ... );

     이때 데이터 배치 순서는 데이블의 컬럼 순서대로이다.

INSERT INTO board (b_mid, b_title, b_content, b_date)
VALUES ('test01', '그냥..', '아무거나', '2022-09-30');

INSERT INTO board 
VALUES (null, 'jun01', '그냥2..', null, '2022-09-30');

 

2. UPDATE(수정)

UPDATE는 테이블에 삽입된 데이터를 수정하는 명령어이다. 컬럼 단위로 수정할 수 있으며, 행을 선택하는 조건이 없는 경우 모든 행을 수정한다.

 

문법)

     UPDATE { 테이블명 }
     SET 컬럼명1 = 변경데이터[, 컬럼명2 = 변경데이터, ...]
     [WHERE 조건];

 

* WHERE절 : 조건을 지정할 때 사용하는 명령어절로, 이 절에 설정된 조건에 따라 맞는 행만 선별한다.

UPDATE board
SET b_date = '2022-09-29'
WHERE b_no = 3;

 

3. DELETE(삭제)

DELETE는 테입르에서 데이터를 삭제하는 명령어이다. 행단위로 수행하며 조건이 없을 경우 모든 행을 삭제한다.

 

문법)

     DELETE FROM { 테이블명 }
     [ WHERE 조건 ];

DELETE FROM board
WHERE b_no = 4;

DELETE FROM board
WHERE b_date = '2022-09-30';

DELETE FROM board
WHERE b_mid = 'jun01';

 

4. SELECT(선색, 읽어오기)

DQL(Data Query Language, 데이터 질의어)로 분류되기도 하는 SELECT는 테이블의 데이터를 검색하는 명렁어이다. 행단위로 처리하면 결과에 대한 컬럼을 지정할 수 있다.

 

문법)

     SELECT [DISTINCT] { *, 컬럼명 [별칭], 컬럼명 [별칭], ... }
     FROM { 테이블명 }
     [WHERE 조건]
     [ORDER BY { 컬럼명 } [ASC|DESC];

 

* DISTINCT : 결과 데이터의 중복을 제거 (대상은 1개의 컬럼) => * = 모든 컬럼

* ORDER BY : 특정 컬럼의 데이터로 결과행들을 정렬 => ASC = 오름차순 정렬 / DESC = 내림차순 정렬

SELECT m_id, m_name, m_age 
FROM member
WHERE m_age >= 25
ORDER BY m_age DESC; -- ASC는 생략 가능

  WHERE절의 연산자

1. 비교연산자

종류)

     =, !=. >, <, >=, <=

 

* '=' 연산자의 차이(Java와 SQL)

  - Java의 같다 : ==

  - SQL의 같다 : = (WHERE절에서만 사용)

  - Java의 대입 : =

  - SQL의 대입 : = (UPDATE의 SET절에서만 사용)

-- 고용일 1992년부터 1995년 사이인 사원의 사번과 이름 검색
SELECT emp_no, first_name, last_name, hire_date
FROM employees
WHERE hire_date >= '1992-01-01'
	AND hire_date <= '1995-12-31'
ORDER BY hire_date ASC, first_name DESC, last_name ASC
;

 

2. 논리연산자

종류)

     AND, OR, NOT

     BETWEEN a AND b : a와 b 사이의 범위 지정

     IN (list) : list에서 찾고자 하는 조건값의 목록을 작성

     => NOT을 조합하여 반대 경우의 조건을 작성할 수 있음

-- 고용일 1992년부터 1995년 사이인 사원의 사번과 이름 검색
SELECT emp_no, first_name, last_name, hire_date
FROM employees
WHERE hire_date BETWEEN '1992-01-01'
	AND '1995-12-31'
ORDER BY hire_date DESC
;

-- to_date가 '9999-01-01'이면 현재의 급여
SELECT emp_no, salary
FROM salaries
WHERE to_date LIKE '9999%'
;
-- 이름이 'Mark' 이거나 'Elvis' 이거나 'Ohad'인 사원의 사번과 생일을 구하시오.
SELECT emp_no, first_name, birth_date
FROM employees
WHERE first_name = 'Mark'
	OR first_name = 'Elvis'
    OR first_name = 'Ohad'
;

-- IN 연산자 = 복합적 or 연산
SELECT emp_no, first_name, birth_date
FROM employees
WHERE first_name IN ('Mark','Elvis','Ohad')
;

 

3. 문자열 검색 연산자

종류)

     LIKE : 컬럼의 데이터를 문자열로 검색

 

* 모르는 부분에 대한 처리를 위한 특수 문자

- % : 여러 글자를 대체하여 표현(대체하는 글자의 수는 0개부터)

         LIKE '%대%'; => '대'가 포함된 데이터

- _ : 한 글자를 대체하여 표현

        LIKE '_대'; => 두 번째 글자가 '대'인 두 글자의 단어를 검색

        ex) 3번째 글자가 '대'인 경우의 검색 = LIKE '__대'

              전체 글자의 개수는 모르고 3번째 글자가 '대'일 경우 검색 = LIKE '__대%'

SELECT emp_no, first_name
FROM employees
WHERE BINARY first_name LIKE '%A%';

* BINARY : 대소문자를 구분하여 검색 결과를 구할 때 사용한다. 검색 시 WHERE절에서 컬럼명 앞에 추가한다. 테이블 생성 시에는 type 다음에 BINARY를 추가한다. ex) m_id VARCHAR(10) BINARY NOT NULL

 

4. NULL 관련 연산자

종류)

     IS NULL : 컬럼의 데이터가 NULL인 행을 검색

     IS NOT NULL : 컬럼의 데이터가 NULL이 아닌 행을 검색

SELECT emp_no, first_name, birth_date
FROM employees
WHERE first_name = 'Mark'
    OR first_name = 'Elvis'
    OR first_name = 'Ohad';
    
SELECT emp_no, first_name, birth_date
FROM employees
WHERE first_name IN ('Mark','Elvis','Ohad');

 

* 출력 개수 제한 LIMIT n[ , m ]

=> n 단독 : 0부터 n - 1번까지의 행 조회

=> n과 m의 경우, n : 조회할 행의 시작 번호 / m : 조회할 행의 개수

-- 출력 개수 제한 LIMIT
SELECT *
FROM employees
LIMIT 10
;

SELECT *
FROM employees
WHERE gender = 'F'
ORDER BY first_name
LIMIT 0, 10
;

'DB' 카테고리의 다른 글

DB_5강  (0) 2022.10.06
DB_4강  (0) 2022.10.05
DB_2강  (0) 2022.10.01
DB_1강  (0) 2022.10.01
DB_0강(DB 다운 및 설치)  (0) 2022.09.27