1. DCL, DDL

Gwonyeong·2023년 1월 23일
0

MySQL

목록 보기
1/3

DB 생성하기

  • create database {db-name};

    • 데이터베이스 생성하기
  • show databases;

    • 데이터베이스 확인하기
    • database가 아닌 s가 붙은 복수형태
  • use {db-name};

    • 이 데이터베이스를 사용하겠다.

DB 삭제

  • drop database {db-name};

User 생성하기

User 생성

  • create user {user-name}@'{host}' identified by '{password}';
    • ex : create user gwonyeong@'%' identified by 'pass!'
    • %는 모든 ip에 접속 가능하다는 뜻.
    • %대신 localhost라면 로컬환경에서만 접속 가능할 것임.

유저 삭제

  • drop user '{user-name}'@'{host}';

권한 부여

  • grant all privileges on . to '{user-name}'@'{host}';
    • .는 모든 db에 관해서 select, insert 등 모든 권한을 부여하겠다라는 뜻.
    • testdb.* 라고 하면 testdb에서만 활동 가능
    • privileges는 특권, 권리 라는 뜻.

적용하기

  • flush privileges;
    • 권한 부여를 마친 뒤에 적용을 해주어야 정상 작동됨!

권한 확인

  • show grants for {user-name}@'{host}'

Create TABLE

CREATE TABLE [IF NOT EXITST] Student (
    #IF NOT EXISTS : 데이터의 값이 있으면 업데이트 해주고 없으면 새로 만들어줘라.
    id int unsigned not null auto_increment COMMENT '학번'
    # unsigned : 음수가 나올 수 없음
    # auto_increment : 자동으로 값이 1씩 증가

    name varchar(31) not null COMMENT '학생명'
    # COMMENT: 주석의 느낌, 메모

    createdate timestamp not null DEFAULT CURRENT_TIMESTAMP COMMENT '등록일시'
    # CURRENT_TIMESTAMP: 현재의 시간

    PRIMARY KEY (id),
    FOREIGN KEY {key-name}
)

A와 같은 구조의 테이블 만들기

  • create TABLE {TABLE-name} like A;

A와 같은 구조, 같은 데이터의 테이블 만들기

  • create TABLE {TABLE-name} AS select * from A;
  • primary key같은 인덱스는 따라오지 않으니 다시 설정해주어야 함!

자주 쓰는 column 타입

number

  • tinyiny 1byte
  • smallint 2byte
  • mediumint 3byte
  • int 4byte
  • float (M,D)

date

  • date 3byte
    • 년월일 쓸떄
  • timestamp
    • 시분초 까지
  • year
    • 연도만

@@time_zone

  • @@ 는 글로벌이라는 뜻

string

  • char(n)
    • 정해진 자릿수
  • varchar(n)
    • 가변가능
  • text 65535 byte

Create TABLE Tips

  • Timestamp : ON UPDATE CURRENT_TIMESTAMP
    • column이 업데이트 될 때마다 시간 저장
  • show create TABLE {TABLE-name}
  • truncate TABLE {TABLE-name}
    • 해당 DB의 데이터를 모두 삭제해버림. (테이블을 남아있음)
  • drop TABLE {TABLE-name}
alter TABLE Dept
    add column workdate
    timestamp not null defalut current_timestamp
    on update current_timestamp;

default로 현재의 시간을 넣어놓고 column이 업데이트 될 떄마다 시간 값 변경


Alter TABLE

  • Alter TABLE [Add | Modify | Change | Drop] Column ...
    • Modify : 타입을 변경
    • Change : 이름을 변경
  • ALTER TABLE t1 AUTO_INCREMENT=1;
    • auto_increment의 수를 조작함.
    • id같은 값에 auto_increment를 넣었으면 다시 1로 초기화 한다거나 할 떄 사용.
  • ALTER TABLE t1 RENAME t2;
    • 테이블의 이름 변경
profile
부동의 첫사랑

0개의 댓글