Database/MySQL

[MySQL] 데이터 생성, 읽기, 수정, 삭제 - INSERT / SELECT / UPDATE / DELETE

루루23 2024. 10. 10. 10:40
반응형

먼저 사용할 테이블은 이러합니다.

CREATE TABLE myhero (
    id INT UNSIGNED NOT NULL AUTO_INCREMENT,
    name VARCHAR(20),
    class INT NOT NULL,
    intelligence INT,
    strength INT,
    speed INT,
    durability INT,
    power INT,
    tier CHAR(5),
    PRIMARY KEY(id));

 

데이터 삽입

INSERT INTO mytable(column1, column2)
VALUES (value1_1, value1_2), (value2_1, value2_2), (value3_1, value3_2)

 

위에서 만든 테이블에 캐릭터들을 넣어줄게요?

INSERT INTO myhero (name, class, intelligence, strength, speed, durability, power, tier) VALUES
    ('Izuku', 773, 80, 75, 50, 35, 50, '1++'),
    ('All Might', 7800, 70, 100, 50, 40, 7, '3'),
    ('Toga', 91, 55, 25, 30, 15, 50, '0+'),
    ('Kirishima', 50, 55, 25, 25, 30, 35, '0+'),
    ('Bakugo', 199, 55, 50, 50, 25, 40, '1++'),
    ('Todoroki', 206, 75, 25, 25, 40, 70, '0+'),
    ('Asui', 71, 60, 25, 25, 14, 45, '0+'),
    ('Shigaraki', 14000, 75, 100, 75, 45, 75, '3'),
    ('Koda', 20, 55, 20, 5, 10, 30, '0+'),
    ('Nezu', 50, 90, 1, 5, 10, 50, '0+'),
    ('Endeavor', 1300, 65, 90, 35, 35, 45, '1++'),
    ('Hado', 374, 55, 80, 30, 15, 50, '0+');

 

데이터 읽기

 

위에서 넣은 데이터들이 잘 들어갔는지 확인해보겠습니다.

SELECT * FROM myhero;

뭔가 귀엽다.. 수기로 만든 히어로도감...

 

 

AS : 별명 지정

SELECT name, strength+speed AS attack FROM myhero;

 

 

LIMIT : 특정 행까지만 가져오고 싶을 때

SELECT id, name, power FROM myhero LIMIT 5;

 

이렇게 하면 파이썬의 head()와 같은 역할을 하고, 실제로 이 기능을 위해 많이 쓴다고 합니다.

 

 

WHERE : 조건에 맞는 데이터 가져오기

SELECT name, class FROM myhero WHERE tier != '1++'; -- tier 값이 '1++'이 아닌 행들
SELECT name, power FROM myhero WHERE (strength > 50) AND (durability > 50);

 

 

 

LIKE : _는 임의의 문자 정확히 하나, %는 0개 이상의 임의의 문자열

IN : 특정 값들 안에 포함되어 있는지 / BETWEEN: 특정 값 사이에 있는지

SELECT * FROM myhero WHERE name like '%o%'; -- 중간에 'o'가 있는 값
SELECT * FROM myhero WHERE name like 'I_%'; -- I로 시작하는 2글자 이상의 값
SELECT name, tier FROM myhero WHERE type in ('1++', '0++');
SELECT name, power FROM myhero WHERE power BETWEEN 40 AND 60;

 

 

COUNT : 개수 세기 / DISTINCT : 중복된 값 출력하지 않음

SELECT COUNT(*) FROM myhero WHERE class >= 100; -- class 값이 100 이상인 행들의 개수
SELECT COUNT(DISTINCT tier) FROM myhero; -- 고유한 tier의 개수 확인

 

데이터 수정

UPDATE myhero SET name = 'OneForAll' WHERE id = 2;

 

데이터 삭제

DELETE FROM myhero WHERE id = 4;
반응형