DBMS/MySQL

테이블에 데이터 CRUD (DML문)

Bambi97 2024. 10. 8. 17:43

CRUD란?

    CREATE : 생성 (삽입)

    READ : 검색

    UPDATE : 수정

    DELETE : 삭제

# 단어장 예제를 위한 예시 테이블
CREATE TABLE WORDS(
	ENG VARCHAR(50) PRIMARY KEY,
    KOR VARCHAR(50) NOT NULL,
    LEV INT DEFAULT 1
)

 

1. 삽입 (INSERT문)

# 모든 데이터를 인자로 꼭 전달해야하는 INSERT문
INSERT INTO 테이블명 VALUES (컬럼1, 컬럼2, 컬럼3, ...)

# NOT NULL인 컬럼만 선택적으로 채우면 되는 INSERT문
INSERT INTO 테이블명 (컬럼1, 컬럼2, ...) VALUES (값1, 값2, ...)

# 실전 예시
INSERT INTO WORDS VALUES ('apple', '사과', 1);
# INSERT INTO WORDS VALUES ('apple', '사과', 1); PRIMARY KEY 중복 데이터 에러
# INSERT INTO WORDS VALUES ('banana', '바나나');	COLUMN 갯수 에러
INSERT INTO WORDS (ENG, KOR) VALUES ('banana', '바나나'); # 선택적 인자 방식으로 정상 동작
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', '아보카도');

 

 

2. 읽기 (SELECT문)

* 연산자

    1. 산술 연산자: +, -, *, /, mod(나머지), div(몫)
    2. 비교 연산자: =, <, >, >=, <=, <>(!=)
    3. 대입 연산자: =
    4. 논리 연산자: and, or, not, xor
    5. 기타 연산자:
        is: 양쪽의 피연산자가 모두 같으면 true, 아니면 false
        between A and B: A보다는 크거나 같고, B보다 작거나 같으면 true, 아니면 false
        in: 매개변수로 전달된 리스트에 값이 존재하면 true 아니면 false
        like: 패턴으로 문자열을 검색하여 값이 존재하면 true 아니면 false

# words 테이블에서 lev이 null인 데이터를 출력
select * from words where lev = 'null'; # X
select * from words where lev = null;	# X
select * from words where lev is null;
select * from words where lev is not null; # null이 아닌 것

# 포함
# 아이디가 a로 시작하는 유저의 모든 컬럼을 출력
select * from member where userid like 'a%';
# 아이디가 a로 끝나는 유저의 모든 컬럼을 출력
select * from member where userid like '%a';
# 아이디가 a를 포함하는 유저의 모든 컬럼을 출력
select * from member where userid like '%a%';

# 그룹 
# select 그룹을 맺은 컬럼 또는 집계함수 from 테이블명 group by 
# select 그룹을 맺은 컬럼 또는 집계함수 from 테이블명 group by having 조건
# 집계함수: count(), sum(), avg(), min(), max()
select gender from member group by gender;
select gender from member group by gender having gender = '남자';

 

3. 수정 (UPDATE문)

1. update 테이블명 set 필드명1=값1, 필드명2=값2 ...
2. update 테이블명 set 필드명1=값1, 필드명2=값2 ... where 조건

update words set kor='어륀지' where eng='orange';

# member 테이블의 모든 유저에게 50 포인트를 더해주기
update member set point = point + 50;

# member 테이블의 아이디가 'apple'인 유저의 우편번호를 '12345' 주소1을 '서울시 서초구' 주소2를 '양재동'으로 수정
update member set zipcode='12345', address1='서울시 서초구', address2='양재동' where userid = 'apple';

 

*safe update 모드란?

update 혹은 delete시 where절을 넣지 않으면 전체 데이터에 적용되어 데이터 유실을 만들지 않기 위한 안전모드

 

4. 삭제 (DELETE문)

delete from 테이블명
delete from 테이블명 where 조건

delete from words where eng = 'orange';
delete from words where eng = 'orange'; # 데이터가 없어서 삭제되지 않음
delete from words;