함께하는 데이터 분석

[SQL] 데이터 조작어(DML) 본문

데이터분석 공부/SQL

[SQL] 데이터 조작어(DML)

JEONGHEON 2022. 4. 19. 11:54

오늘은 SQL 명령어 4가지 중 하나인

 

데이터 조작어(DML)에 대해 알아보겠습니다.

 

저번 시간에 데이터 정의어를 통해 테이블을

 

생성, 변경, 삭제를 해봤는데요.

 

데이터 조작어는 데이터를 삽입, 조회, 수정, 삭제할 때 사용하는 명령어입니다.

 

코드를 통해 알아보겠습니다.

 

 

데이터 베이스 사용

/* 데이터베이스 DA 사용 */
use da;

저번 데이터 정의어를 공부할 때 만들어놓은

 

데이터 베이스 da를 사용하겠습니다.

 

 

테이블 생성

/* 테이블 생성 */
create table 인적사항 ( 
인덱스 int primary key,
이름 varchar(10),
생년월일 date not null,
성별 varchar(2)
);

테이블도 저번 시간에 만들어본

 

인적사항 테이블을 그대로 사용하겠습니다.

 

 

테이블 데이터 삽입(제약조건)

/* 테이블 데이터 삽입 */
insert into 인적사항 values (0, '최가', '1963-07-01', 'M');
insert into 인적사항 values (1, '최나', '1970-03-01', 'F');
insert into 인적사항 values (2, '최다', '1998-01-24', 'M');
insert into 인적사항 values (3, '최라', '2000-05-10', 'F');

select * from 인적사항;

insert into 인적사항 values를 이용하여

 

각각의 행에 데이터를 삽입했습니다.

 

그다음 select * from 인적사항 을 이용하여

 

인적사항의 모든 열에 대한 데이터를 불러왔습니다. 

 

이 부분은 밑의 데이터 조회에서 다룰 예정이고 

 

지금은 제약조건을 확인해보겠습니다.

 

우리가 저번 시간에 열에 제약조건을 걸었죠.

 

PK를 걸어둔 인덱스 열에 중복의 데이터를 삽입해볼까요?

 

/* 제약조건 */
insert into 인적사항 values (3, '최마', '2002-11-10', 0); /* 오류(PK) */

이렇게 데이터 삽입이 안 되는 것을 확인할 수 있습니다.

 

중복이 허용되지 않는다는 것을 알 수 있죠.

 

다음에는 not null을 걸어둔 생년월일 열에 null을 추가해볼게요.

 

/* 제약조건 */
insert into 인적사항 values (4, '최바', null, 0); /* 오류(no null) */

이렇게 null을 허용하지 않는 것을 확인할 수 있습니다.

 

이제 데이터를 조회하는 방법을 알아보겠습니다.

 

 

 

데이터 조회

/* 데이터 조회 */
select * from 인적사항;

앞서 데이터를 확인하기 위해 모든 열을 조회하는 것은

 

select * from 테이블명을 통해 알아봤습니다.

 

이번에는 데이터의 특정 열만 조회해볼까요?

 

/* 데이터 조회 */
select 이름, 성별 from 인적사항;

select 이름, 성별 from 인적사항 을 통해

 

인적사항 테이블의 이름, 성별 열의 데이터만

 

조회해봤습니다.

 

 

 

데이터 수정(preferences 옵션 변경)

/* 데이터 수정 preferences에서 옵션 변경 */
update 인적사항 set 성별 = 'M';

이렇게 update를 통해 데이터를 수정하려고 하는데

 

오류로 인해 수정이 되지 않는 것을 확인할 수 있습니다.

 

이유는 preferences에 들어가서 옵션을 변경해줘야 합니다.

 

데이터가 수정하는 부분에 있어서 제한을 해제해야 합니다.

 

여기서 체크된 부분을 해제하시고 workbench를 재부팅 하시면 됩니다.

 

/* 데이터 수정 preferences에서 옵션 변경 */
update 인적사항 set 성별 = 'M';
select * from 인적사항;

이제 성별이 모두 M으로 변경된 것이 보입니다.

 

이제는 이름이 최나인 행의 성별을 F로 변경해볼까요?

 

/* 데이터 수정 preferences에서 옵션 변경 */
update 인적사항 set 성별 = 'F' where 이름 = '최나';
select * from 인적사항;

이렇게 이름이 최나인 행의 성별이 F로 변경됐습니다.

 

마지막으로 데이터 삭제를 알아보겠습니다.

 

 

데이터 삭제

/* 데이터 삭제 */
delete from 인적사항 where 인덱스 = 0;
select * from 인적사항;

delete를 통해 데이터를 삭제해줬는데

 

where을 이용하여 인덱스가 0인 행의 데이터만 삭제했습니다.

 

이제는 모든 행의 데이터를 삭제해보겠습니다.

 

/* 데이터 삭제 */
delete from 인적사항;
select * from 인적사항;

이렇게 모든 행의 데이터가 삭제된 것을 볼 수 있습니다.

 

다음에는 데이터 제어어(DCL)에 대해 알아보겠습니다!

'데이터분석 공부 > SQL' 카테고리의 다른 글

[SQL] 데이터 조회 - SELECT  (0) 2022.04.21
[SQL] 트랜젝션 제어어(TCL)  (0) 2022.04.20
[SQL] 데이터 제어어(DCL)  (0) 2022.04.20
[SQL] 데이터 정의어(DDL)  (0) 2022.04.18
[SQL] MySQL 및 Workbench 설치(mac OS)  (0) 2022.04.15