SQL console consists of Schemas, Query, Action Output
SQL do not recognize upper or lower capital.
데이터 정의어
Data Definition Language : make, modify, remove table
데이터 조작어
Data Manipulation Language : insert, index, modify, remove data
데이터 제어어
Data Control Language : access, remove data
트랜젝션 제어어
Transaction Control Language : execute, cancel DCL
DBA(DataBase Administrator) with DFL, DCL
DA(Data Analyst) with DML, TCL
Each column should be defined as only one data type such as number, string, date, boolean.
number - BIT, INT, BIGINT, FLOAT, DOUBLE
string - CHAR, NCHAR, VARCHAR, NVARCHAR
date - DATETIME, DATE, TIME
*DateBase sets bits to save data efficiently
PK(PRIMARY KEY)
: 중복되어 나타날 수 없는 단일 값
: NOT NULL
NOT NULL
: NULL을 허용하지 않음
/********** DataBase **********/
/* Practice라는 이름으로 데이터베이스 생성 */
CREATE DATABASE Practice;
/* Practice 데이터베이스 사용 */
USE Practice;
/********** Table **********/
/* 회원테이블 생성 */
CREATE TABLE 회원테이블 (
회원번호 INT PRIMARY KEY, /* Name DataType RestrictCondition */
이름 VARCHAR(20), /* (바이트 수) */
가입일자 DATE NOT NULL,
수신동의 BIT
);
/* 테이블 명 변경 */
ALTER TABLE 회원테이블 RENAME 회원정보;
/* 회원테이블 조회 */
SELECT * FROM 회원테이블;
/* 테이블 삭제 */
DROP TABLE 회원정보;
/********** Column **********/
/* 성별 열 추가 */
ALTER TABLE 회원테이블 ADD 성별 varchar(2);
/* 성별 열의 타입 변경 */
ALTER TABLE 회원테이블 MODIFY 성별 VARCHAR(20);
/* 성별 -> 성 열의 이름 변경 */
ALTER TABLE 회원테이블 CHANGE 성별 성 VARCHAR(2);
Insert, Find, rewrite, delete Data
USE Practice;
CREATE TABLE 회원테이블 (
회원번호 INT PRIMARY KEY,
이름 VARCHAR(20),
가입일자 DATE NOT NULL,
수신동의 BIT
);
/********** 데이터 삽입 **********/
INSERT INTO 회원테이블 VALUES (1001, '홍길동', '2020-01-02', 1);
/********** 제약조건 위반 **********/
/* PRIMARY KEY 위반 */
INSERT INTO 회원테이블 VALUES (1001, '짱구', '2020-01-06', 0);
/* NOT NULL 위반 */
INSERT INTO 회원테이블 VALUES (1002, '철수', NULL, 0);
/* 데이터타입 위반 */
INSERT INTO 회원테이블 VALUES (1003, '훈이', 1, 0);
/********** 데이터 조회 **********/
/* 모든 열 조회 */
SELECT *
FROM 회원테이블;
/* 특정 열 조회 */
SELECT 회원번호, 이름
FROM 회원테이블;
/* 특정 열 이름을 변경하여 조회 */
SELECT 회원번호,
이름 AS 성명
FROM 회원테이블;
/********** 데이터 수정 **********/
/* 모든 데이터 수정 */
UPDATE 회원테이블
SET 수신동의 = 0;
/* 특정 조건 데이터 수정 */
UPDATE 회원테이블
set 수신동의 = 1
WHERE 이름 = '홍길동';
/********** 데이터 삭제 **********/
/* 특정 데이터 삭제 */
DELETE
FROM 회원테이블
WHERE 이름 = '홍길동';
/* 모든 데이터 삭제 */
DELETE
FROM 회원테이블;
DCL is used when DB admin give access right to usrs.
/********** 사용자 확인 **********/
/* MYSQL 데이터베이스 사용 */
USE MYSQL;
/********** 사용자 **********/
/* 사용자 아이디 및 비밀전호 생성 */
CREATE USER 'TEST'@LOCALHOST IDENTIFIED BY 'TEST';
/* 사용자 확인 */
SELECT *
FROM USER;
/* 사용자 비밀번호 변경 */
SET PASSWORD FOR 'TEST'@LOCALHOST = '1234';
/* 사용자 삭제 */
DROP USER 'TEST'@LOCALHOST;
/********** 권한 부여 및 제거 **********/
/* 권한 : CREATE, ALTER, DROP, INSERT, DELETE, UPDATE, SELECT 등 */
/* 특정 권한 부여 */
GRANT SELECT, DELETE ON Practice.회원테이블 TO 'TEST'@LOCALHOST;
/* 특정 권한 제거 */
REVOKE DELETE ON Practice.회원테이블 FROM 'TEST'@LOCALHOST;
/* 모든 권한 부여 */
GRANT ALL ON Practice.회원테이블 TO 'TEST'@LOCALHOST;
/* 모든 권한 제거 */
REVOKE ALL ON Practice.회원테이블 FROM 'TEST'@LOCALHOST;
Transaction is undividable minimum unit.
When error, roll back
When no error, commit
USE Practice;
DROP TABLE 회원테이블;
CREATE TABLE 회원테이블 (
회원번호 INT PRIMARY KEY,
이름 VARCHAR(20),
가입일자 DATE NOT NULL,
수신동의 BIT
);
SELECT *
FROM 회원테이블;
/********** BEGIN + ROLLBACK **********/
/* 트랜젝션 시작 */
BEGIN;
/* 데이터 삽입 */
INSERT INTO 회원테이블 VALUES (1001, '홍길동', '2020-01-02', 1);
/* 취소 */
ROLLBACK;
/********** BEGIN + COMMIT **********/
/* 트랜젝션 시작 */
BEGIN;
/* 데이터 삽입 */
INSERT INTO 회원테이블 VALUES (1005, '장보고', '2020-01-02', 1);
/* 실행 */
COMMIT;
/********** 임시저장 SAVEPOINT **********/
/* 트랜젝션 시작 */
BEGIN;
/* 데이터 삽입 */
INSERT INTO 회원테이블 VALUES (1005, '임시저장', '2020-01-02', 1);
/* SAVEPOINT 지정 */
SAVEPOINT S1;
/* 1005 회원 이름 수정 */
UPDATE 회원테이블
SET 이름 = '임시저장 후';
/* SAVEPOINT 지정 */
SAVEPOINT S2;
/* 1005 회원 데이터 삭제 */
DELETE
FROM 회원테이블;
/* SAVEPOINT 지정 */
SAVEPOINT S3;
/* SAVEPOINT로 ROLLBACK */
ROLLBACK TO S2;
/* 실행 */
COMMIT;