본문 바로가기
공부기록/MySQL

3월 29일 (1) DB - DML INSERT, DELETE

by project100 2023. 3. 29.
-- 사용자 지정
use dev_db;

-- 데이터베이스 영역에 만들어진 테이블 정보 확인
SHOW tables;

-- 테이블의 세부 정보 확인(DESC 테이블명)
DESC board;
DESC member;

 

DML(Date Manipulation Language) - 데이터 조작어

1) INSERT INTO : 테이블에 테이터를 삽입

INTO : 테이블을 지정하는 명령어

VALUES :  입력 데이터를 묶어주는 명령어 

 

문법) 

입력할 칼럼을 지정하는 방식

INSERT INTO 테이블명(컬럼1, 컬럼2, ......)

VALUES ('데이터1', '데이터2', ........ ) : 데이터 배치 순서는 테이블명 옆 칼럼 순서대로, 쌍으로 이루어져 있어야 한다.

 

문자열, 일시는 작은따옴표로 감싸주고, 숫자는 그냥 쓴다.

NULL 허용 컬럼에 값을 넣지 않을 경우 NULL 입력

기본값이 설정된 컬럼에 값을 넣지 않는 경우 DEFAULT 입력

 

모든 컬럼에 데이터를 입력하는 방식

INSERT INTO 테이블명

VALUES ('데이터1', '데이터2', .........) : 테이블 칼럼 순서대로 데이터 배치

 

-- 회원가입 member 테이블에 insert
INSERT INTO member (mname, mid, mpwd)
VALUES ('테스터', 'test01', '4555');
INSERT INTO member (mname, mid, mpwd)
VALUES ('테스터2', 'test02', '5045');
INSERT INTO member (mname, mid, mpwd)
VALUES ('테스터3', 'test03', '2484');
INSERT INTO member (mname, mid, mpwd)
VALUES ('테스터4', 'test04', '4218');

INSERT INTO member
VALUES ('test05', '5478', '테스터5', 20, '학생', 'gold', 0);
-- NULL 허용 컬럼, 값 넣지 않을 경우 NULL
INSERT INTO member
VALUES ('test06', '5789', '테스터6', NULL, NULL, 'slilver', 0);
-- 기본값 설정, 값 넣지 않을 겨우 DEFAULT
INSERT INTO member
VALUES ('test07', '7415', '테스터7', NULL, NULL, DEFAULT, DEFAULT);
INSERT INTO member
VALUES ('test08', '9400', '테스터8', NULL, NULL, DEFAULT, DEFAULT);

+  Auto Increment(AI) 키값이 구분되기 때문에 다른 값들이 동일해도 실행된다.

 Auto Increment(AI)는 실패한 것도 값으로 처리(2번이 없는 이유)

전체 컬럼 입력 시 auto_increment 컬럼은 null을 입력한다.

+ 외래키 컬럼은 반드시 연결된 테이블의 데이터만 입력해야 한다

INSERT INTO board
VALUES(NULL,'첫번째 게시글입니다.',
	'글 내용입니다.','2023-03-29','test02');

 

2) DELETE FROM : 테이블 데이터를 삭제

테이블에서 데이터를 삭제하는 명령문, 행 단위로 수행.

조건이 없을 경우 모든 행을 삭제

함께 사용하는 명령어 : WHERE

 

문법) 

DELETE FROM 테이블명

[WHERE 조건];

 

삭제는 기본적으로 기본키를 사용하여 처리

-- 전체 테이블 삭제
DELETE FROM board;

-- 게시글 3번 삭제
DELETE FROM board
WHERE bno = 3; 

--  아이디 지정 삭제
DELETE FROM board
WHERE bmid = 'test02';

+ 워크벤치 설정관련

Safe Update :  기본키를 사용하지 않는 테이블에 대해 update나 delete를 방지하는 기능

해제) Edit > Preferences> SQL Editor - other  체크 해제

 

 

+ 트랜잭션(Transaction) : INSERT, UPDATE, DELETE 작업의 기본 단위(테이블 내용을 변경하는 작업)

한 작업이 중간 단계에서 실패할 경우 (지정된) 최초의 상태로 되돌린다.

DML 작업(SELECT 제외)에서만 적용되는 작업 단위임, 작업 완료에 대한 최동 승인 또는 되돌림 처리가 가능하게 함.

최종 승인 명령 : COMMIT;  반드시 실행!

작업 취소(되돌림) : ROLLBACK;

작업의 시작은 이전 COMMIT 또는 ROLLBACK 다음부터

 

-- 트랜잭션(Transaction)
COMMIT;
ROLLBACK;

SELECT * FROM member;

SELECT @@autocommit;
SET AUTOCOMMIT = 0;

 

자동 COMMIT 설정 확인 : 자동으로 설정되어 있으면 ROLLBACK 할 수 없음

SELECT @@autocommit;

결과가 1일 경우 자동 COMMIT이 설정된 상태

0은 자동 COMMIT 해제 상태

 

1일 경우 다음 명령 실행(매번 해주어야 한다.)

SET autocommit= 0;

 

autocommit 설정변경

메뉴바 Edit - preferences - SQL Execution - 노란색 부분 체크 해제 (체크되어 있으면 autocommit 상태)