SQL_study (1)

Austin Jiuk Kim·2022년 4월 22일
0

SQL

목록 보기
1/1

Console

SQL console consists of Schemas, Query, Action Output


SQL do not recognize upper or lower capital.


SQL Basic command

4 Language

데이터 정의어
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


Data Definition Language

DataType

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

restrict condition(제약 조건)

  1. PK(PRIMARY KEY)
    : 중복되어 나타날 수 없는 단일 값
    : NOT NULL

  2. 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);
 

Data Manipulation Language

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 회원테이블;

Data Control Language

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 Control Language

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;
profile
그냥 돼지

0개의 댓글