sql_DML(Data Manipulation Language)

김수경·2023년 12월 28일

SQLD 자격증

목록 보기
7/14

01. DML

1. INSERT

DML

데이터를 삽입, 삭제, 수정, 조회하는 일을 수행
CRUD : Create, Read, Update, Delete

INSERT

player 테이블에 이름이 KIM, 키는 184, 몸무게는 75 선수 데이터 추가하기

INSERT INTO player(name, height, weight) VALUES('KIM', 184, 75) ; 

pokemon 테이블에
포켓몬 번호 25번 이름 pikachu 속성은 Electric
포켓몬 번호 6번 이름 charizard 속성은 Fire를 저장하세요.

-- 테이블 구조
CREATE TABLE pokemon (
  pm_id INT PRIMARY KEY NOT NULL,
  name VARCHAR(20) NOT NULL,
  attr VARCHAR(20) DEFAULT 'normal'
);
INSERT INTO pokemon(pm_id, name, attr) VALUES(25, pikachu, Electric);
INSERT INTO pokemon(pm_id, name, attr) VALUES(6, charizard, Fire);

UPDATE

한 번 입력된 데이터를 수정해야 할 때
where과 같이 쓰도록 하자

  • player 테이블의 back_no를 99로 변경하기
  • player 테이블의 position을 MF로 변경하기
UPDATE player SET back_no=99 ;
UPDATE player SET position = 'MF' ; 

DELETE

데이터를 삭제, where과 같이 쓰도록 한다.

  • player 테이블의 모든 데이터를 삭제하기
  • player 테이블에서 back_no가 50인 데이터만 삭제하기
DELETE [FROM] player ;
DELETE [FROM] player WHERE back_no = 50 ;

DELETE와 TRUNCATE 차이점

2. SELECT

1. SELECT

SELECT

테이블에 데이터를 조회할 때 사용

SELECT first_name, last_name, salary*12 AS annual_salary
FROM employees;
-- 이때 AS 키워드를 생략할 수 있습니다
SELECT first_name, last_name, salary*12 annual_salary
FROM employees;
--조회문
+------------+-----------+---------------+
| first_name | last_name | annual_salary |
+------------+-----------+---------------+
| John       | Doe       | 60000         |
| Jane       | Smith     | 72000         |
| Michael    | Johnson   | 90000         |
+------------+-----------+---------------+

DISTINCT

중복된 값을 제거하여 고유한 값만 조회

CREATE TABLE employees (
    employee_id NUMBER,
    first_name VARCHAR2(50),
    last_name VARCHAR2(50),
    department_id NUMBER
);
INSERT INTO employees VALUES (1, 'John', 'Doe', 101);
INSERT INTO employees VALUES (2, 'Jane', 'Smith', 102);
INSERT INTO employees VALUES (3, 'John', 'Doe', 101);
INSERT INTO employees VALUES (4, 'Michael', 'Johnson', 103);
+------------+-----------+
| first_name | last_name |
+------------+-----------+
| John       | Doe       |
| Jane       | Smith     |
| John       | Doe       |
| Michael    | Johnson   |
+------------+-----------+
SELECT DISTINCT first_name, last_name FROM employees;

distinct로 두 컬럼을 조회하면 두 컬럼을 조합한 고유값이 나온다.

FIRST_NAME   LAST_NAME
----------   ---------
John         Doe
Jane         Smith
Michael      Johnson

2. 산술/합성 연산자

산술연산자

-- 아래의 결과는 어떻게 될까요?
SELECT 10 + 5 AS addition,
       15 - 7 AS subtraction,
       6 * 3 AS multiplication,
       20 / 4 AS division,
       17 % 5 AS modulo --나머지 연산
FROM dual;
+----------+------------+----------------+----------+--------+
| ADDITION | SUBTRACTION| MULTIPLICATION| DIVISION | MODULO |
+----------+------------+----------------+----------+--------+
| 15       | 8          | 18             | 5        | 2      |
+----------+------------+----------------+----------+--------+

pockemon 테이블에서 Pikachu의 몸무게는 현재 kg 단위로 저장이 되어 있습니다. SELECT를 이용하여 kg 기준이 아닌 파운드 단위(lbs) 기준으로 변환된 값을 조회해보세요. (1kg = 2.2 lbs)

SELECT Pikachu * 2.2 FROM poketmon ;

합성연산자

서로 다른 두 문자를 하나의 문자열로 합칠 때

-- Oracle
SELECT 문자형1 || 문자형2 FROM 테이블_이름;
SELECT CONCAT(문자형1, 문자형2) FROM 테이블_이름;

pokemon 테이블에 저장된 키는 현재 cm 단위로 입력이 되어 있습니다.
모든 데이터의 결과를 예시와 같이 조회하세요.

CREATE TABLE pokemon (
  pm_id NUMBER PRIMARY KEY NOT NULL,
  name VARCHAR2(20) NOT NULL,
  attr VARCHAR2(20) DEFAULT 'normal',
	height NUMBER
);
INSERT INTO pokemon VALUES (1, 'Bulbasaur', 'grass', 50);
INSERT INTO pokemon VALUES (2, 'Ivysaur', 'grass', 90);
INSERT INTO pokemon VALUES (3, 'Venusaur', 'grass', 250);
INSERT INTO pokemon VALUES (4, 'Charmander', 'Fire', 80);
INSERT INTO pokemon VALUES (5, 'Charmeleon', 'Fire', 120);
INSERT INTO pokemon VALUES (25, 'Pikachu', 'Electric', 55);
-- Oracle
SELECT 
    '포켓몬번호: ' || pm_id 번호,
    '이름: ' || name 이름, 
    '속성: ' || attr 속성,
    '키: ' || height 키
FROM pokemon;
profile
잘 하고 있는겨?

0개의 댓글