MySQL 기본 명령어 정리

데이터베이스 접속

  • cmd 창에서

  • mysql -u 사용자명 -p

데이터베이스 리스트 확인

  • mysql> SHOW DATABASES;

데이터베이스 사용

  • mysql> USE 데이터베이스명;

테이블 리스트 확인

  • mysql> SHOW TABLES;

사용자 확인

  • mysql> USE mysql;
    mysql> SELECT user, host FROM user;

사용자 권한 확인

  • mysql> SHOW GRANTS FOR '아이디'@'%';

사용자 추가

  • mysql> CREATE USER '아이디'@localhost IDENTIFIED BY '비밀번호';

사용자 삭제

  • mysql> DELETE FROM USER WHERE USER='username';

MySQL 버전 확인

  • mysql> SHOW VARIABLES LIKE "%version%";

쿼리 결과 세로로 보기

  • cmd창에서 mysql을 접속할 때 -E 옵션을 이용하여 접속

  • mysql -E -u root -p

현재 상태 확인하기

  • mysql> STATUS;

테이블 정보 확인하기

  • mysql> EXPLAIN 테이블명;

SQL(Structed Query Language)

  • 관계형 데이터베이스 관리 시스템의 데이터를 관리하기 위해 설계된 특수 목적의 프로그램 언어
  • 자료의 검색과 관리, 데이터베이스 스키마 생성과 수정, 데이터베이스 객체 접근 조정 관리를 위해 고안

SQL 문법의 종류

1. 데이터 정의어 (DDL : Data Definition Language)

종류 역할
CREATE 데이터베이스, 테이블 등을 생성
ALTER 데이터베이스, 테이블을 수정
DROP 데이터베이스, 테이블을 삭제
TRUNCATE 테이블을 초기화

1.1 스키마 / 데이터베이스 정의

  • 정확한 의미의 스키마와 데이터베이스는 다르지만 MySQL에서는 같은것으로 봄

  • 스키마 생성 / 데이터베이스 생성

    • CREATE SCHEMA 스키마명; 
      CREATE DATABASE 데이터베이스명; 
  • 스키마 삭제 / 데이터베이스 삭제

    • DROP SCHEMA 스키마명; 
      DROP DATABASE 데이터베이스명; 

1.2 테이블 정의

  • 테이블 생성

    • CREATE TABLE 테이블명( 
       컬럼명1 데이터타입 [DEFAULT 형식], 
          컬럼명2 데이터타입 [DEFAULT 형식] 
      ); 
    • 제약조건

      • PRIMARY KEY : 기본키
        • 기본키 설정
        • PRIMARY KYE = UNIQUE KEY & NOT NULL
      • UNIQUE KEY : 고유키
        • NULL 가능
        • 중복된 값 불가
      • NOT NULL
        • NULL 값을 금지
      • CHECK
        • 입력할 수 있는 값의 범위 등을 제한
        • TRUE 또는 FALSE로 평가할 수 있는 논리식을 지정
        • MySQL에서 적용을 할 수 있지만 데이터의 무결성을 강요하지 않음 => 적용안됨E
      • FOREIGN KEY : 외래키
        • 테이블 간의 관계를 정의하기 위해 다른 테이블의 기본키를 외래키로 지정
        • 외래키 지정시 참조 무결성 제약 옵션 선택 가능
    • CREATE TABLE 테이블명( 
       컬럼명1 데이터타입 [DEFAULT 형식], 
          컬럼명2 데이터타입 [DEFAULT 형식], 
          UNIQUE INDEX 컬럼명_UNIQUE(컬럼명 ASC), 
          CONSTRAINT 테이블명_PK PRIMARY KEY(컬럼명), 
          CONSTRAINT 테이블명_FK FOREIGN KEY(컬럼명) REFERENCES 상대테이블명(기본키), 
          CONSTRAINT CHK_테이블명 CHECK (논리식) 
      ); 
    • CREATE TABLE TEST( 
      NO INT NOT NULL, 
         NO2 INT, 
         NO3 INT, 
         UNIQUE INDEX NO2_UNIQUE(NO2 ASC), 
         CONSTRAINT TEST_PK PRIMARY KEY(NO), 
         CONSTRAINT TEST_FK FOREIGN KEY(NO3) REFERENCES STUDENT(NUM), 
         CONSTRAINT CHK_TEST CHECK(NO>=1) 
      ); 
  • 테이블 수정

    • 컬럼 추가

    • ALTER TABLE 테이블명 
       ADD 컬럼명 데이터타입; 
    • 컬럼 삭제

    • ALTER TABLE 테이블명 
       DROP 컬럼명; 
    • 컬럼 수정

    • ALTER TABLE 테이블명 
       MODIFY 컬럼명 데이터타입; 
    • 컬럼명 수정

    • ALTER TABLE 테이블명 
       CHANGE 기존컬럼명 새컬럼명 데이터타입; 
    • 제약조건 추가

    • ALTER TABLE 테이블명 
       ADD CONSTRAINT 제약조건명 제약조건(컬럼명); 
    • 제약조건 삭제

    • ALTER TABLE 테이블명 
       DROP 제약조건명; 
  • 테이블 초기화

    • TRUNCATE TABLE 테이블명; 
    • 테이블의 모든 행을 지움

    • 테이블은 유지

  • 테이블 삭제

    • DROP TABLE 테이블명; 
    • DROPT은 테이블 자체를 삭제하고 TRUNCATE는 테이블은 유지하고 데이터들만 삭제

2. 데이터 조작어(DML : Data Manipulation Language)

종류 역할
SELECT 데이터를 조회
INSERT 데이터 삽입
UPDATE 데이터 수정
DELETE 데이터 삭제

3. 데이터 제어어(DCL : Data Control Language)

종류 역할
GRANT 특정 데이터베이스 사용자에게 특정 작업에 대한 수행 권한 부여
REVOKE 특정 데이터베이스 사용자에게 특정 작업에 대한 수행 권한을 박탈, 회수
COMMIT 트랜잭션의 작업이 정상적으로 완료되었음을 관리자에게 알려줌
ROLLBACK 트랜잭션의 작업이 비정상적으로 종료 되었을 때 원래의 상태로 복구

3.1 GRANT

  • 사용자에게 권한을 부여하는 명령어

  • 권한 허용

    • GRANT 명령어 ON 데이터베이스명.테이블 TO '아이디'@'localhost'; 
    • '아이디' 사용자에게 데이터베이스명.테이블에서 명령어를 사용할 수 있는 권한을 부여

    • GRANT ALL ON TEST.* TO 'test'@'localhost'; 
      
      • test 사용자에게 TEST 데이터베이스에 있는 모든 테이블의 모든 명령어를 사용할 수 있는 권한을 부여
      • 모든 권한 : SELECT, INSERT, UPDATE, DELETE, CREATE, DROP,REFERENCES, INDEX, ALTER, CREATE TMP TABLE, LOCK TABLES, CREATE VIEW, CREATE ROUTINE, ALTER ROUTINE, EXECUTE, EVENT TRIGGER
    • GRANT INSERT ON TEST.* TO 'test'@'localhost'; 
      • test 사용자에게 TEST 데이터베이스에 있는 INSERT 명령어를 사용할 수 있는 권한을 부여

3.2 REVOKE

  • 사용자에게 권한을 회수하는 명령어

  • 권한 회수

    • REVOKE 명령어 ON 데이터베이스명.테이블 FROM '아이디'@'localhost' 
    • '아이디' 사용자에게 데이터베이스명.테이블에서 명령어를 사용할 수 있는 권한을 회수

    • REVOKE ALL ON TEST.* FROM 'test'@'localhost'; 
      REVOKE INSERT ON TEST.* FROM 'test'@'localhost'; 

3.3 COMMIT

  • 작업한 결과를 물리적 디스크로 저장하고, 작업이 정상적으로 완료됨을 관리자에게 알려주는 명령어

  • COMMIT; 

3.4 ROLLBACK

  • 작업했던 내용을 원래의 상태로 복구하는 명령어

  • INSERT, UPDATE, DELETE와 같은 트랜잭션의 작업을 취소

  • COMMIT 명령어를 사용하기 이전의 상태만 ROLLBACK 가능

  • ROLLBACK; 

DELETE, TRUNCATE, DROP의 차이

명령어 특징
DELETE 데이터는 지워지지만 테이블 용량은 줄어 들지 않는다
원하는 데이터만 지울 수 있다  
잘못 삭제한 경우 되돌릴 수 있다  
TRUNCATE 삭제후 용량이 줄어든다
테이블은 삭제 되지 않고 데이터만 삭제된다  
삭제 후 되돌릴 수 없다  
DROP 테이블 전체를 삭제한다
공간, 객체를 삭제한다  
삭제 후 되돌릴 수 없다  

+ Recent posts