-- 데이터베이스 생성 명령어
CREATE DATABASE [dbname];
-- 데이터베이스 생성 및 속성 설정 명령어
CREATE DATABASE [dbname] CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- 테이블 생성 명령어
CREATE TABLE [tablename] (
[column_name1] INT PRIMARY KEY AUTO_INCREMENT,
[column_name2] VARCHAR(255) NOT NULL,
[column_name3] DATETIME NOT NULL,
)CHARSET=utf8;
DROP 명령어
-- 데이터베이스 삭제 명령어
DROP DATABASE [dbname];
-- 테이블 삭제 명령어
DROP TABLE [table_name];
-- 테이블에 컬럼 추가하기
ALTER TABLE [table_name] ADD COLUMN [column_name] [column_type];
-- 테이블의 컬럼 타입 변경하기
ALTER TABLE [table_name] MODIFY COLUMN [column_name] [column_type];
-- 테이블의 컬림 이름 변경하기
ALTER TABLE [table_name] CHANGE COLUMN [old_column_name] [new_column_name] [new_column_type];
-- 테이블의 컬럼 삭제하기
ALTER TABLE [table_name] DROP COLUMN [column_name];
-- 테이블에 컬럼 인덱스 주기
ALTER TABLE [table_name] DROP INDEX [index_name];
-- 테이블에 PRIMARY KEY 만들기
ALTER TABLE [table_name] ADD PRIMARY KEY( column_name_on_this_table );
-- 테이블에 PRIMARY KEY 삭제하기
ALTER TABLE [table_name] DROP PRIMARY KEY;
-- 테이블 명 바꾸기
ALTER TABLE [old_table_name] RENAME [new_table_name];
-- 테이블 이름 변경 명령어
RENAME TABLE [old_table_name] TO [new_table_name];
TRUNCATE
데이터가 존재하던 공간까지 모두 제거합니다.
AUTO_INCREMENT로 지정하여 값이 증가하던 컬럼이 완전 초기화 됩니다.(MySQL 5.0.13 버전 이후)
-- 테이블의 데이터 삭제 명령어
TRUNCATE TABLE [table_name];
제약조건 확인하기
select * from information_schema.table_constraints;
제약조건 삭제하기
ALTER TABLE [테이블명] DROP CONSTRAINT [제약조건이름];
ALTER TABLE [테이블명] DROP FOREIGN KEY [제약조건이름];
제약조건 추가하기
외래키 :
ALTER TABLE [테이블명] ADD CONSTRAINT [제약조건이름] FOREIGN KEY(컬럼명)
REFERENCES [부모테이블명](PK컬럼명) [ON DELETE CASCADE / ON UPDATE CASCADE];
기본키 :
ALTER TABLE [테이블명] ADD CONSTRAINT [제약조건이름] PRIMARY KEY(컬럼명);
NOT NULL 제약조건 추가
ALTER TABLE [테이블명] MODIFY [컬럼명] [데이터타입] CONSTRAINT [제약조건이름] NOT NULL;
SELECT @@AUTOCOMMIT; // AUTOCOMMIT 여부 확인
SET AUTOCOMMIT = TRUE; // AUTOCOMMIT 설정
SET AUTOCOMMIT = FALSE; // AUTOCOMMIT 해제
COMMIT; // 커밋
ROLLBACK; // 롤백
MySQL에서 트랜잭션은 데이터베이스를 상태를 바꾸는 일종의 작업 단위입니다.
원자성 (Atomicity) 트랜잭션의 결과는 DB에 반영이 되거나 반영이 안되거나 이 두 가지 결과만을 나타냅니다.
일관성 (Consistency) 트랜잭션이 진행되는 동안 DB가 변경되더라도 이전에 사용한 DB를 참조합니다.
즉 트랜잭션은 시작부터 종료 시까지 같은 형태의 DB를 참조합니다.
독립성 (Isolation) 트랜잭션이 두 개이상 실행될 때 트랜잭션 끼리 영향을 주지 못합니다, 즉 하나의 트랜잭션이 또 다른 트랜잭션의 결과를 참조할 수 없습니다.
영구성 (Durability) 트랜잭션이 성공적으로 완료(Commit)이 되었을 때 결과를 영구적으로 DB에 반영됩니다.
2. 사용법
아래 명령어를 통해 트랜잭션을 실행할 수 있습니다, 이때 Commit 방식은 수동 Commit으로 바뀝니다.
START TRANSACTION;
#AUTO COMMIT
SET AUTOCOMMIT = FALSE;
#TRANSACTION
START TRANSACTION;
#UPDATE
SAVEPOINT A;
UPDATE TABLENAME SET NAME = 'ABC' WHERE NAME LIKE 'A%'
SAVEPOINT B;
UPDATE TEMP_TABLE SET NAME = 'BBC' WHERE NAME = 'B%'
SAVEPOINT C;
UPDATE TEMP_TABLE SET NAME = 'CCD' WHERE NAME = 'C%'
그리고나서 모든 데이터가 UPDATE를 제대로 진행 해서 변경을 적용하고 싶다면 역시나
COMMIT
세개의 모든 UPDATE 문을 취소하고싶다면 (즉, 전체취소)
ROLLBACK
세번째 UPDATE 만 실행하고 싶다면 다음과 같이 SAVEPOINT를 사용하면 된다.
ROLLBACK TO SAVEPOINT C
'✨ DBMS > MySQL' 카테고리의 다른 글
[SQL] 뷰(VIEW) 활용하기 2 - 수정 (OR REPLACE, ALTER) (0) | 2023.08.02 |
---|---|
[MySQL / SQL] - JOIN 조인 (Cross , Equi , Self , Outer , Union ) (0) | 2023.07.29 |
[MySQL / SQL] - 주요 함수 ( 숫자, 문자 , 시간, 날짜) (0) | 2023.07.27 |
[SQL] 뷰(VIEW) 활용하기 , WITH CHECK OPTION 사용법 (0) | 2023.07.27 |
댓글