SQL DB 명령어
※ SQL은 윈도우 및 맥 환경에서 대/소문자를 구분하지 않는다.
데이터 베이스 생성
CREATE DATABASE TEST;
데이터 베이스 사용
USE TEST;
데이터 베이스 삭제
DROP DATEBASE TEST;
SQL 기본 명령어
이 4가지에 대해 순서대로 알아보도록 하자.
1. 데이터 정의어 (DDL) : 테이블 생성, 변경, 삭제
1-1. 테이블 생성
: CREATE TABLE / 테이블명 (열 이름 / 데이터 타입 / 제약 조건);
CREATE DATABASE Practice;
USE Practice;
CREATE TABLE 회원테이블(
회원번호 INT PRIMARY KEY,
이름 VARCHAR(20),
가입일자 DATE NOT NULL
수신동의 BIT
);
👉 : '회원테이블'이라는 이름으로 테이블을 생성한다.
그 안의 열은 '회원번호', '이름', '가입일자', '수신동의'로 설정한다.
각각의 데이터 타입은 INT, VARCHAR, DATE, BIT 타입으로 설정한다.
이때 VARCHAR(20)은 최대 20바이트까지 저장가능하다는 것을 의미한다.
회원번호에 PRIMARY KEY, 가입일자에 NOT NULL이라는 제약 조건을 지정하겠다.
1-2. 테이블 열 추가
: ALTER TABLE / 테이블 명 / ADD / 추가할 열 이름 / 데이터 타입;
ALTER TABLE 회원테이블 ADD 성별 VARCHAR(2);
👉 : '회원테이블'이라는 테이블에 '성별'이라는 열을 최대 2바이트까지 저장가능한 VARCHAR 타입으로 추가하겠다.
1-3. 테이블 열 데이터 타입 변경
: ALTER TABLE / 테이블 명 / MODIFY / 수정할 열 이름 / 수정할 데이터 타입
ALTER TABLE 회원테이블 MODIFY 성별 VARCHAR(20);
👉 : '회원테이블'이라는 테이블의 '성별'이라는 열의 데이터 타입을 최대 20바이트까지 저장가능한 VARCHAR 타입으로 수정하겠다.
1-4. 테이블 열 이름 변경
: ALTER TABLE / 테이블 명 / CHANGE / 현재 열 이름 / 바꿀 열 이름 / 데이터 타입;
ALTER TABLE 회원테이블 CHANGE 성별 성 VARCHAR(20);
👉 : '회원테이블'이라는 테이블의 '성별'이라는 열을 '성'으로 변경하겠다.
1-5. 테이블 명 변경
: ALTER TABLE / 현재 테이블 명 / RENAME / 바꾸고자 하는 테이블 명
ALTER TABLE 회원테이블 RENAME 회원정보;
👉 : '회원테이블'이라는 테이블의 이름을 '회원정보'로 변경하겠다.
2. 데이터 조작어 (DML) : 데이터 삽입, 조회, 수정, 삭제
2-1. 데이터 삽입
: INSERT INTO / 데이터를 삽입할 테이블 명 / VALUES / (열 순서에 맞게 데이터 입력);
※ 주의할 점 : 데이터 입력 시 문자형, 날짜형은 따옴표로 묶어줘야 한다.
"홍길동", "2022-01-01"
INSERT INTO 회원테이블 VALUES (1001, "홍길동", "2022-01-01", 1);
👉 : '회원테이블'이라는 테이블의 열에 괄호 안의 데이터들을 순서대로 삽입하겠다.
2-2. 데이터 조회
① 모든 열 조회
: SELECT / * / FROM / 테이블 명;
② 특정 열 조회
: SELECT / 열 이름(여러 열 가능) / FROM / 테이블 명;
SELECT 회원번호, 이름 FROM 회원테이블;
👉 : '회원테이블'이라는 테이블의 회원번호, 이름 열을 조회하겠다.
③ 특정 열 이름을 변경하고 조회
: SELECT / 변경 전 열 이름 / AS / 변경하고 싶은 열 이름 / FROM 테이블 명;
SELECT 회원번호, 이름 AS 성명 FROM 회원테이블;
👉 : '회원테이블'이라는 테이블에서 '회원번호'열을 조회하고 '이름'열은 '성명'으로 이름을 변경하고 조회한다.
2-3. 데이터 수정
① 모든 데이터 수정
: UPDATE / 수정할 테이블 명 / SET / 수정하고자 하는 열 이름, 조건
UPDATE 회원테이블 SET 수신동의=0;
👉 : '회원테이블'이라는 테이블의 '수신동의'열 데이터를 다 0으로 수정하겠다.
② 특정 조건 데이터 수정
: UPDATE / 수정할 테이블 명 / SET / 수정하고자 하는 열 이름, 조건 / WHERE 조건
UPDATE 회원테이블 SET 수신동의=1 WHERE 이름="홍길동";
👉 : '회원테이블'이라는 테이블의 '수신동의' 열의 이름이 홍길동인 데이터만
'수신동의'를 1로 수정하겠다.
2-4. 데이터 삭제
① 모든 데이터 삭제
**: DELETE / FROM / 데이터를 삭제할 테이블 명
② 특정 데이터 삭제
: DELETE / FROM / 테이블명 / WHERE / 조건;
DELETE FROM 회원테이블 WHERE 이름 = "홍길동";
👉 : '회원테이블'이라는 테이블에서 이름이 홍길동인 데이터만 삭제하겠다.
3. 데이터 제어어 (DCL) : 데이터 접근 권한 부여 및 제거
권한 관련해서는 MYSQL 데이터베이스를 사용해야한다.
USE MYSQL;
사용자확인
SELECT * FROM USER;
3-1. 사용자 추가
: CREATE / USER / 'ID명' / @LOCALHOST / IDENTIFIED BY / '비밀번호';
CREATE USER 'TEST' @LOCALHOST IDENTIFIED BY 'TEST';
👉 : ID - 'TEST', PW - 'TEST'인 사용자를 로컬에서 접속이 가능한(@LOCALHOST) 사용자로 추가하겠다.
비밀번호 변경
SET / PASSWORD FOR / 'ID명' / @LOCALHOST = "바꿀 비밀번호";
SET PASSWORD FOR "TEST" @LOCALHOST = "1234";
👉 : TEST 사용자의 비밀번호를 1234로 변경하겠다.
3-2. 권한 부여 및 제거
권한의 종류
: CREATE / ALTER / DROP / INSERT / DELETE / UPDATE / SELECT 등
① 특정 권한 부여
: GRANT / 권한 종류 / ON DATABASE명.테이블명 / TO 권한을 부여할 ID
GRANT SELECT, DELETE ON Practice.회원테이블 TO "TEST" @LOCALHOST;
👉 : Practice 데이터베이스의 '회원테이블'이라는 테이블에 있는 "TEST" 사용자에게 SELECT와 DELETE를 사용할 수 있는 권한을 부여하겠다.
② 특정 권한 제거
: REVOKE / 권한 종류 / ON DATABASE명.테이블명 / FROM 권한을 제거할 ID
REVOKE DELETE ON Practice.회원테이블 FROM "TEST" @LOCALHOST;
👉 : Practice 데이터베이스의 '회원테이블'이라는 테이블에 있는 "TEST" 사용자의 DELETE 권한을 제거하겠다.
③ 모든 권한 부여
: GRANT / ALL / ON DATABASE명.테이블명 / TO 권한을 부여할 ID
GRANT ALL ON Practice.회원테이블 "TEST" @LOCALHOST;
👉 : Practice 데이터베이스의 '회원테이블'이라는 테이블에 있는 "TEST" 사용자에게 모든 권한을 부여하겠다.
④ 모든 권한 제거
**: REVOKE / ALL / ON DATABASE명.테이블명 / FROM 권한을 부여할 ID
REVOKE ALL ON Practice.회원테이블 FROM "TEST" @LOCALHOST;
👉 : Practice 데이터베이스의 '회원테이블'이라는 테이블에 있는 "TEST" 사용자에게 모든 권한을 제거하겠다.
3-3. 사용자 삭제
DROP / USER / "삭제할 ID"
DROP USER "TEST" @LOCALHOST
👉 : "TEST"라는 사용자를 삭제하겠다.
4. 트랜젝션 제어어 (TCL) : 데이터 조작어 명령어 실행, 취소, 임시저장
트랜젝션(Transaction) : 분할할 수 없는 최소 단위
👉 : 트랜젝션에서 오류가 발생한다면 취소되어 작업 전 데이터로 돌아가고(ROLLBACK),
오류가 발생하지 않는다면 실행되어 작업후 데이터가 된다(COMMIT).
준비
4-1. 트랜젝션 취소(ROLLBACK)
4-2. 트랜젝션 실행(COMMIT)
1. 트랜젝션 시작 : BEGIN;
2. 데이터 삽입 : INSERT INTO 회원테이블 VALUES (1005, "장보고", "2022-01-11", 1);
3. 실행 : COMMIT;
4. 회원테이블 조회 : SELECT * FROM 회원테이블;
4-3. 임시 저장(SAVEPOINT)
임시저장 : ROLLBACK 저장점을 지정하는 명령어, 즉 원하는 지점으로 ROLLBACK 할 수 있게 하는 명령어이다.
준비
: 테이블에 데이터 존재할 시 데이터 모두 삭제
: DELETE FROM 회원테이블;
나머지 데이터 수정 / 데이터 삭제는 각각 SAVEPOINT S2, SAVEPOINT S3으로 지정
ROLLBACK TO S2;
👉 : 데이터를 삽입하고, 수정을 한 후인 S2 세이브 포인트로 데이터를 ROLLBACK하겠다.
(데이터 삭제되기 전으로)
출처 : 네이버 부스트코스 - '기초 데이터 분석을 위한 핵심 SQL'
너무 명령어가 많다보니까 필기한 내용을 복사 붙여넣기한 느낌이라
쓰면서 잘 외워지진 않았다.
앞으로 SQL을 할 때마다 자주 눈이랑 손에 익히면서 자주 봐야겠다.