CRUD ( Create Read Update Delete )
C ( Create )
데이터 삽입하기
1. insert into 테이블명 values (값1, 값2, 값3 ...)
전체 필드에 넣을 때, ( 필드랑 데이터 갯수가 일치해야함 )( 모자란 자리는 null값을 넣을 수 있음 )( 데이터 갯수를 맞춰야 하기 때문에, 기본값이 배정되게 할 수 없음 )
# 예제를 위해 테이블 만들기
create table words(
eng varchar(50) primary key,
kor varchar(50) not null,
lev int default 1 - default = 기본값 , 해당 데이터에 입력이 없을 시, 기본값으로 자동으로 입력한다.
);
decs words;
insert into words values ('apple', '사과', 1);
-- insert into words values ('apple', '사과', 1); # 중복 데이터 삽입 에러
-- insert into words values ('banana', '바나나'); # 컬럼 갯수가 일치하지 않음
insert into words values ('banana', '바나나', null); # null이 들어감
-- insert into words values ('oreange', null, null); # 뜻에 null을 넣을 수 없음 - not null
2. insert into 테이블명 (필드명1, 필드명2 ..) values (값1, 값2, ...)
특정 필드에 삽입할 때
insert into words (eng, kor, lev) values ('orange', '오렌지', 1);
insert into words (eng, kor) values ('melon', '메론'); # lev이 비어져있어, 기본값인 1이 들어간다.
insert into words (lev, eng, kor) values (2, 'avocado', '아보카도'); # 필드명을 지정해서 순서와 상관없이, 데이터를 입력할 수 있다.
-- insert into words (eng) values ('cherry'); # 뜻이 not null 이기 때문에, null을 넣을 수 없음
예제 ) member 테이블에 5명의 데이터 삽입
이전글 데이터베이스 MySQL의 member 테이블 참조
insert into member(userid, userpw, name, hp, email, gender, ssn1, ssn2) values
('apple', '1111', '김사과', '010-1111-1111', 'apple@apple.com', '여자', '001011', '4015111');
insert into member(userid, userpw, name, hp, email, gender, ssn1, ssn2) values
('banana', '2222', '반하나', '010-2222-2222', 'banana@banana.com', '여자', '001011', '2015111');
insert into member(userid, userpw, name, hp, email, gender, ssn1, ssn2) values
('orange', '3333', '오렌지', '010-3333-3333', 'orange@orange.com', '남자', '001011', '3015111');
insert into member(userid, userpw, name, hp, email, gender, ssn1, ssn2) values
('melon', '4444', '이메론', '010-4444-4444', 'melon@melon.com', '남자', '001011', '3015111');
insert into member(userid, userpw, name, hp, email, gender, ssn1, ssn2) values
('avocado', '5555', '안가도', '010-5555-5555', 'avocado@avocado.com', '남자', '001011', '1015111');
U ( Update )
데이터 수정하기
1. update 테이블명 set 필드명1=값1, 필드명2=값2 .. ;
update words set eng='Rucy';
# 실행 시 에러가 발생함 : safe 모드가 걸려있음
-- 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.
-> 위 문법으로 실행 시, words 테이블의 eng 필드가 모두 'Rucy'로 바뀌게 되는데, MySQL에서는 데이터를 모두 수정하는 일은 실수일 시, 매우 큰 리스크가 존재하기에, 기본적으로 safe 모드가 발동하여, 해당 실행을 막는다
# safe모드 해제하는 법
-- 1. 일시적인 safe 모드를 해제 : set sql_safe_updates=0;
-- 2. 영구적인 safe 모드를 해제 : Edit -> Preferences -> SQL Editer -> Safe Update 체크해제 -> workbench 재시작
# 모든 lev를 1로 바꾸기
update words set lev=1;
# 모든 유저에게 50 포인트를 더해주기
update member set point = point + 50;
# 데이터가 int 형일 시, int 연산이 가능하다.
2. update 테이블명 set 필드명1=값1, 필드명2=값2 ... where 조건절;
# eng 'avocad'o의 lev를 2로 수정하기
update words set lev=2 where eng='avocado';
# 다중 수정이 가능하다.
# eng 'orange'의 kor를 '어륀지' lev를 2로 바꾸기
update words set kor='어륀지', lev=2 where eng='orange';
# 예제 ) member 테이블의 데이터 수정하기
-- member 테이블의 아이디가 'apple'인 회원에 대해 우편번호는 '12345', 주소1은 '서울시 서초구',
-- 주소2는 '양재동', 주소3은 'XX아파트 101동' 으로 수정하기
update member set zipcode='12345', address1='서울시 서초구', address2='양재동', address3='XX아파트 101동' where userid='apple';
D ( Delete )
데이터 삭제하기
1. delete from 테이블명;
2. delete from 테이블명 where 조건절;
delete from words;
# 오타로 인해, 없는 데이터를 삭제하려 할 경우, 에러는 발생하지 않지만, 데이터의 변화는 없다.
# 예제 ) member 테이블의 'avocado' 데이터 삭제하기
delete from member where userid='avocado';
R (Read )
데이터 검색하기
select 필드명1, 필드명2, ... from 테이블명
select 필드명1, 필드명2, ... from 테이블명 where 조건절;
# 예제를 위해, word 테이블에 데이터 추가하기
insert into words values ('apple', '사과', 1);
insert into words values ('banana', '바나나', null); - null 값으로 추가된다
insert into words (eng, kor, lev) values ('orange', '오렌지', 1);
insert into words (eng, kor) values ('melon', '메론'); - 기본값이 설정되어있다면, 따로 지정하지 않을 시, 설정된 기본값으로 설정된다.
insert into words (lev, eng, kor) values (2, 'avocado', '아보카도'); - 순서와 관계없이 추가된다.
# 데이터 검색하기
-- 지정한 필드만 출력된다.
select eng, kor from words;
select eng from words;
select kor, eng from words;
# 해당 데이터가 테이블에 없어도, 그냥 출력되어 보여준다.
select 100;
select 100 + 50 ;
as 필드명을 지정할 수 있다.
# 해당 출력결과의 필드명을 '덧셈'으로 바꾸기
select 100 + 50 as '덧셈'; # 작은따옴표 안에 이름을 입력하는 것이 원칙이다.
select 100 + 50 as 덧셈; # 따옴표가 없어도 정상적으로 지정되긴 한다.
# 별명에 띄어쓰기가 포함될 경우, 에러가 발생한다.
# 여러 필드명을 한 번에 지정할 수 있다.
select eng as '영단어', kor as '뜻', lev as '수준' from words;
※현재 실행되고 있는 DB의 데이터를 select할 경우, DB가 멈출 수 있아, 실무에서는 서비스되고 있는 DB를 건들지 않는게 좋다.
# 모든 값 출력시 '*' 를 사용한다.
select * from words; # 모든 컬럼을 가져오기
# 같은 결과 값 : select eng, kor, lev from words; - 되도록이면 * 을 사용해서 모든 컬럼을 불러들이지 않는다.
데이터 읽기 참고
select null; # null값이 출력, 데이터가 없음, insert가 되지 않은 것
select ''; # 공백이 출력, 해당 셀에 '' 데이터가 삽입된 것
select 100 + null; # 결과 : null, 연산할 수 없음
select 100 + ''; # 결과 : 100, 연산할 수 있음
'MySQL' 카테고리의 다른 글
Join (0) | 2024.03.26 |
---|---|
데이터의 정규화 (0) | 2024.03.26 |
SQL 정렬과 그룹 (0) | 2024.03.26 |
SQL 연산자 (0) | 2024.03.26 |
데이터베이스 MySQL (0) | 2024.03.25 |