본문 바로가기

02 .administration/iv. mysql

mysql(6) DML(Data Manipulation Language)

스키마 객체의 데이터를 조회, 입력, 수정, 삭제, lock관련이다..
insert, update, delete, select, lock table, explanu plan, call등이 있다..

mysql(5)의 test table를 예로 ....작업합니다
test 테이블의 구조는 아래와 같습니다.
uid        int(4)
name     varchar(20)
ssd       varchar(15) //주민번호였는데....-_-; 좀 민감해지네요 임시적으로 메일주소로 변경하여 사용합니다)
=======================================================================
테스트 테이블에 샘플로 입력
>insert into test(uid,name,ssd) values('0','신머루군','cinosnoba@hotmail.com');

위와 같은 형식으로 넣을수도 있지만 test테이블에 대한 명세가 빠져도 무방합니다
>insert into test values ('1','test01','test01@naver.com');

특정테이블에만 넣고 싶을때에는?
>insert into test values (uid,name) values('2','test02');

확인하는 방법은?
>select * from test;

=======================================================================
select 구문에 대해서 삽질을 해보아요...OTL;

select 필드명1,필드명2
from 테이블명
where 검색조건
order by 필드명 {,필드명}
group by 필드명{,필드명}
having 검색조건

중요한건 select / from 입니다...가장 기본이 되어집니다.
위 테이블로 테스트를 해봅시다
>select * from test;
uid / name / ssd
0/신머루군/cinosnoba@hotmail.com
1/test01/test01@naver.com
2/test02/

where문 사용하기
>select * from test where name='신머루군';            //혹은
>select * from test where name LIKE "%신머루군%";  //%는 해당 문자열을 포함하면이라는 조건입니다.
uid/name/ssd
0/신머루군/cinosnoba@hotmail.com
만 나타나집니다.

name만 보고싶습니다...uid, ssd가 필요 없고
>select name from test where name LIKE '신머루군';
name
신머루군

이것을 응용으로 좀더 들어가봅시다..
>select * from test where name LIKE 'test%' and ssd='test%'
uid/name/ssd
1/test01/test01@naver.com

>select * from test order by name;
이름형식으로 소팅이 되어집니다...(생략합시다..;머리속에 끄집어 내는거라..)

>select count(*) from test where name LIKE 'test%';
이름중 test로 시작하는아이디들에 대해서 뽑아 냈습니다. 결과값은 '2'

>select avg(date) from test where name LIKE 'test%';
date라는 값이 없습니다..에러가 나지만 avg라는 명령은 평균값을 내줍니다..test로 시작하는 이름에 대해서만

=======================================================================
update 구문..................덜덜덜

>update test set name='test0200' where uid='2';
uid가 2인 사용자의 이름을 test0200으로 변경하였스빈다..

>update test set uid=uid+10;
uid를 일괄적으로 10씩 증가를 시킴니다.

=======================================================================
delete 구문
>delete from test where uid='2';
uid가 2인 특정 데이터를 삭제 합니다 테이블을 보면 '2'에 대한 정보가 싹 사라졌겠죠