SQL 기본 명령어

KSH·2022년 1월 1일
0
post-thumbnail

SQL DB 명령어

※ SQL은 윈도우 및 맥 환경에서 대/소문자를 구분하지 않는다.

  • 데이터 베이스 생성
    CREATE DATABASE TEST;

  • 데이터 베이스 사용
    USE TEST;

  • 데이터 베이스 삭제
    DROP DATEBASE TEST;


SQL 기본 명령어

  • SQL의 기본 명령어는 4가지로 분류된다.
    • 데이터 정의어 (DDL)
    • 데이터 조작어 (DML)
    • 데이터 제어어 (DCL)
    • 트랜젝션 제어어 (TCL)

이 4가지에 대해 순서대로 알아보도록 하자.


1. 데이터 정의어 (DDL) : 테이블 생성, 변경, 삭제

  • 테이블 : 각 열마다 반드시 1가지 데이터 타입으로 정의되어야 한다.
  • 테이블은 각 열마다 제약 조건을 정의할 수 있다.
    • 테이블 제약 조건 예시
      • PK (Primary Key) : 중복되어 나타날 수 없는 단일 값 + NOT NULL
      • NOT NULL : NULL(값 없음) 허용하지 않음

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

  • 준비

  1. Practice 데이터베이스 사용 : USE Practice;
  2. 회원테이블 생성하는데, 존재하는 회원테이블이 있다면 삭제
    : DROP TABLE 회원테이블;
  3. 회원테이블 생성
    : CREATE TABLE 회원테이블 (회원번호 INT PRIMARY KEY, 이름 VARCHAR(20), 가입일자 DATE NOT NULL, 수신동의 BIT);

4-1. 트랜젝션 취소(ROLLBACK)

  1. 트랜젝션 시작 : BEGIN;
  2. 데이터 삽입 : INSERT INTO 회원테이블 VALUES (1005, "장보고", "2022-01-11", 1);
  3. 회원테이블 조회 : SELECT * FROM 회원테이블;
  4. 취소 : 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 회원테이블;

    1. 트랜젝션 시작 : BEGIN;
    2. 데이터 삽입 : INSERT INTO 회원테이블 VALUES (1005, "장보고", "2022-01-11", 1);
    3. SAVEPOINT 지정 : SAVEPOINT / 세이브포인트 이름;
      SAVEPOINT S1;

    나머지 데이터 수정 / 데이터 삭제는 각각 SAVEPOINT S2, SAVEPOINT S3으로 지정

    • 세이브 포인트를 지정한 후 원하는 지점으로 ROLLBACK 하고 싶다면
      ROLLBACK TO SAVEPOINT명;

    ROLLBACK TO S2;
    👉 : 데이터를 삽입하고, 수정을 한 후인 S2 세이브 포인트로 데이터를 ROLLBACK하겠다.
    (데이터 삭제되기 전으로)


    출처 : 네이버 부스트코스 - '기초 데이터 분석을 위한 핵심 SQL'


    너무 명령어가 많다보니까 필기한 내용을 복사 붙여넣기한 느낌이라
    쓰면서 잘 외워지진 않았다.
    앞으로 SQL을 할 때마다 자주 눈이랑 손에 익히면서 자주 봐야겠다.

profile
성실히 살아가는 비전공자

0개의 댓글