DML 정리

왬스터·2024년 12월 12일

DML이란?

DML: 데이터베이스에 저장된 데이터를 검색 삽입, 삭제, 갱신하는 언어(select, insert, update, delete)

select

select는 데이터를 조회할때 쓰입니다

select * from product;

여기서 '*' 은 모든 이라는 뜻이고 뒤에 'product'는 테이블명입니다
select는 정보를 조회하는 만큼 뒤에 where를 붙여서 조건을 줄수도 있습니다
'pro_number'의 번호가 3번인 제품을 검색해보겠습니다

select * from product where pro_number=3;

사진처럼 pro_number가 3인 값만 검색이 되는걸 볼수있습니다
여기서 또 조건을 걸어서 pro_number가 3인 제품의 이름만 보고싶다! 이러면

select pro_name from product where pro_number=3;

이렇게 * 대신 검색하고자 하는 컬럼값을 주면 그 컬럼에 해당하는 값만 검색할수 있습니다

insert

insert는 테이블에 값을 추가할때 쓰는 구문입니다
현재 product테이블에는

제품이 5개가 있습니다 여기에 제품F를 추가해보겠습니다

insert into product(pro_name, inventory, price, manufactor) 
values ('제품F', 10, 18000, 'QWE 기업');


제품F가 잘 들어갔습니다

pro_number값을 안준 이유
pro_number는 auto_increment로 설정해서 db가 값을 하나씩 올려서 알아서 저장하기때문

만약 컬럼열과 넣으려는 값의 열이 같다면

insert into product
values ...

이런식으로 테이블 다음에 넣으려는 컬럼값을 안써도 됩니다

update

update는 테이블안의 데이터를 수정할때 쓰는 구문입니다
방금 위에서 insert로 집어넣은 데이터인 제품F의 가격을 100원으로 만들어보겠습니다

update product set price=100 where pro_name='제품F';

Error Code: 1175. You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column. To disable safe mode, toggle the option in Preferences -> SQL Editor and reconnect.

에러가 발생했습니다! 왜일까요?
db에선 키값을 이용한 update나 delete만을 허용하고 있는데 키값이 아닌 더 넓은범위의 값으로 데이터를 가공하고 있어서 에러가 뜨고있습니다
간단하게 세이프모드를 풀어주면 됩니다

set sql_safe_updates=0; -- 0: false 1: true

세이프모드를 풀어주고 다시 쿼리문을 실행시켜보면

제품F의 가격이 100원이 된걸 확인할수 있습니다

delete

delete는 테이블의 값을 지우는 구문입니다
제품F를 지워보겠습니다

delete from product where pro_name='제품F';

제품F가 사라졌습니다
이렇게 DML도 정리해보았습니다

profile
공부를 햄스터하는 남자

0개의 댓글