MySQL 고급

Minjae An·2024년 2월 17일
0

Database

목록 보기
4/5

CREATE TABLE AS SELECT

CREATE TABLE city2 AS SELECT * FROM city;

똑같은 테이블을 SELECT 기반으로 생성

CREATE DATABASE

CREATE DATABASE prac_db;

CREATE TABLE

CREATE TABLE test (
	id INT NOT NULL PRIMARY KEY,
	col1 INT NULL,
	col2 FLOAT NULL,
	col3 VARCHAR(45) NULL
);

ALTER TABLE

ALTER TABLE test
ADD col4 INT NULL; -- 칼럼 추가

ALTER TABLE test
MODIFY col4 VARCHAR(20) NULL; -- 칼럼 정의 수정

ALTER TABLE test
DROP col4; -- 칼럼 삭제

테이블 수정시 사용


CREATE INDEX

인덱스는 빠른 데이터 검색을 위해 사용하고, 인덱스가 있는 테이블은 처리속도가 느려질 수 있으므로 수정보다는 검색이 자주 사용되는 테이블에서 사용하는 것이 좋다.

CREATE INDEX col1_idx
ON test (col1);

SHOW INDEX

SHOW INDEX FROM test;

PK는 기본적으로 인덱스가 생성되어 있다.

CREATE UNIQUE INDEX

CREATE UNIQUE INDEX col2_idx
ON test (col2);

중복값이 허용되지 않는 인덱스(고유 인덱스)

FULLTEXT INDEX

CREATE TABLE test (
	-- ...
	FULLTEXT col3_idx (col3)
); -- DDL에서 생성

CREATE FULLTEXT INDEX col3_idx ON test (col3);

ALTER TABLE test
ADD FULLTEXT col3_idx(col3);

일반적인 인덱스와 달리 매우 빠르게 테이블의 모든 텍스트 컬럼을 검색

INDEX 삭제(ALTER)

ALTER TABLE test
DROP INDEX col3_idx;

DROP INDEX

DROP INDEX col3_idx ON test;

VIEW

  • 뷰는 DB에 존재하는 일종의 가상 테이블
  • MySQL에서는 다른 테이블, 뷰에 저장되어 있는 데이터를 보여주는 역할만 수행
  • 한 번 정의된 뷰는 변경불가(재정의해야함), 자신만의 인덱스를 가질 수 없음

CREATE VIEW

CREATE VIEW test_view AS
SELECT col1, col2
FROM test;

ALTER VIEW

ALTER VIEW test_view AS
SELECT col1, col2. col3
FROM test;

DROP VIEW

DROP VIEW test_view;

INSERT

INSERT INTO test
VALUE(1, 123, 1.1, "test");
  • 테이블 이름 다음의 삽입 열 나열을 생략하고 싶다면, VALUES 다음에 나오는 값들의 순서 및 개수가 테이블 정의의 순서 및 개수와 동일해야함

INSERT INTO SELECT

INSERT INTO test2
SELECT * FROM test;

특정 테이블의 데이터 다른 테이블로 그대로 INSERT 시 사용

UPDATE

UPDATE test
SET col1=1, col2=1.0, col3="test"
WHERE id=1; -- WHERE 조건 쓰지 않으면 전체 변경, 보통 막아놈

DELETE

DELETE FROM test
WHERE id=1;
  • 행 단위로 데이터를 삭제하는 구문
  • 데이터는 지워지지만 테이블 용량은 줄어들지 않음
  • 잘못 삭제한 경우 롤백 가능

TRUNCATE

TRUNCATE TABLE test;
  • 용량이 줄어들고, 인덱스 등도 모두 삭제
  • 테이블을 삭제하지 않고, 데이터만 삭제
  • 삭제 후 롤백 불가

DROP TABLE

DROP TABLE test;
  • 테이블 전체를 삭제, 공간과 객체를 삭제
  • 삭제 후 롤백 불가

DROP DATABASE

DROP DATABASE prac_db;
profile
도전을 성과로

0개의 댓글