MySQL statement

Gaeun·2022년 9월 27일
0
post-custom-banner

MySQL Database

CREATE TABLE AS SELECT

CREATE TABLE new_table_name AS SELECT * FROM old_table_name;
  • 기존 테이블의 데이터를 복사하여 새로운 테이블을 생성

CREATE DATABASE

CREATE DATABASE databasename;
  • 새로운 데이터베이스를 생성
  • USE문으로 새 데이터베이스를 사용

CREATE TABLE (MySQL Workbench)

  1. SCHEMAS - 원하는 데이터베이스 선택 - Tables 우클릭 - Create Table

  2. Colume, Datatype, 기본 속성 입력 후 Apply 클릭

  3. Apply 클릭하면 테이블 생성 완료

CREATE TABLE

CREATE TABLE table_name (
    column1 datatype,
    column2 datatype,
    column3 datatype,
   ....
);

ALTER TABLE (ADD, MODIFY, DROP)

ALTER TABLE table_name
ADD column_name datatype;
  • ALTER TABLE문과 함께 ADD문을 사용하면 테이블에 column을 추가할 수 있음
ALTER TABLE table_name
MODIFY COLUMN column_name datatype;
  • ALTER TABLE문과 함께 MODIFY문을 사용하면 테이블의 coloum datatype을 변경할 수 있음
ALTER TABLE table_name
DROP COLUMN column_name;
  • ALTER TABLE문과 함께 DROP문을 사용하면 테이블의 column을 제거할 수 있음

인덱스 Index

  • 테이블에서 원하는 데이터를 빠르게 찾기 위해 사용
  • 일반적으로 데이터를 검색할 때 순서대로 테이블 전체를 검색하므로 데이터가 많으면 많을수록 탐색하는 시간이 늘어남
  • 검색과 질의를 할 때 테이블 전체를 읽지 않기 때문에 바름
  • 설정된 컬럼 값을 포함한 데이터의 삽입, 삭제, 수정 작업이 원본 테이블에서 이루어질 경우, 인덱스도 함께 수정되어야 함
  • 인덱스가 있는 테이블은 처리 속도가 느려질 수 있으므로 수정보다는 검색이 자주 사용되는 테이블에서 사용하는 것이 좋음

CREATE INDEX

CREATE INDEX index_name
ON table_name (column1, column2, ...);
  • CREATE INDEX문을 사용하여 인덱스를 생성

SHOW INDEX

SHOW INDEX FROM table_name
  • 인덱스 정보 보기

CREATE UNIQUE INDEX

CREATE UNIQUE INDEX index_name
ON table_name (column1, column2, ...);
  • 중복값을 허용하지 않는 인덱스 생성

FULLTEXT INDEX

ALTER TABLE table_name
ADD FULLTEXT index_name (column1, column2, ...)
  • FULLTEXT INDEX는 일반적인 인덱스와는 달리 매우 빠르게 테이블의 모든 텍스트 컬럼을 검색

INDEX 삭제 (ALTER)

ALTER TABLE table_name
DROP INDEX index_name
  • ALTER문을 사용하여 테이블에 추가된 인덱스 삭제

DROP INDEX

DROP INDEX index_name ON table_name
  • DROP문을 사용하여 해당 테이블에서 명시된 인덱스를 삭제
  • DROP문은 내부적으로 ALTER문으로 자동 변환되어 명시된 이름의 인덱스를 삭제

VIEW

  • 뷰(View)는 데이터베이스에 존재하는 일종의 가상 테이블
  • 실제 테이블처럼 행과 열을 가지고 있지만, 실제로 데이터를 저장하진 않음
  • MySQL에서 뷰는 다른 테이블이나 다른 뷰에 저장되어 있는 데이터를 보여주는 역할만 수행
  • 뷰를 사용하면 여르 테이블이나 뷰를 하나의 테이블처럼 볼 수 있음
  • 뷰의 장점
    • 특정 사용자에게 테이블 전체가 아닌 필요한 컬럼만 보여줄 수 있음
    • 복잡한 쿼리를 단순화해서 사용
    • 쿼리 재사용 가능
  • 뷰의 단점
    • 한번 정의된 뷰는 변경할 수 없음
    • 삽입, 삭제, 갱신 작업에 많은 제한 사항을 가짐
    • 자신만의 인덱스를 가질 수 없음

CREATE VIEW

CREATE VIEW view_name AS
SELECT column1, column2, ...
FROM table_name
WHERE condition;
  • CREATE VIEW문을 사용하여 뷰 생성

ALTER VIEW

ALTER VIEW view_name AS
SELECT column1, column2, ...
FROM table_name
  • ALTER문을 사용하여 뷰를 수정

DROP VIEW

DROP VIEW view_name;
  • DROP문을 사용하여 생성된 뷰를 삭제

LAB#7

city, country, countrylanguage 테이블을 JOIN하고 한국에 대한 정보만 뷰 생성하기

MySQL SQL

INSERT

INSERT INTO table_name
VALUES (value1, value2, value3, ...);
  • 테이블에 새로운 레코드 추가 가능
  • 테이블 이름 다음에 나오는 열 생략 가능
  • 생략할 경우 VALUE 다음 나오는 값들의 순서 및 개수가 테이블이 정의된 열 순서 및 개수와 동일해야 함

INSERT (MySQL Workbench)

  1. 원하는 recodes를 직접 입력 후 Apply 클릭

  2. Apply 클릭

INSERT INTO SELECT

INSERT INTO table2
SELECT * FROM table1
WHERE condition;
  • 테이블1에 있는 내용을 테이블2에 삽입

UPDATE

UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE condition;
  • 기존에 입력되어 있는 값 변경하는 구문
  • WHERE절 생략 가능하나 생략 시 테이블 전체 행의 내용 변경되므로 주의할 것

DELETE

DELETE FROM table_name WHERE condition;
  • 행 단위로 데이터 삭제하는 구문
  • 데잍터는 지워지지만 테이블 용량은 줄어들지 않음
  • 원하는 데이터만 지울 수 있음
  • 삭제 후 잘못 삭제한 것을 되돌릴 수 있음

TRUNCATE

TRUNCATE TABLE table_name
  • 테이블 초기화
  • 용량이 줄어들고 인덱스 등도 모두 삭제
  • 테이블은 삭제하지 않고 데이터만 삭제
  • 한꺼번에 다 지워야 함
  • 삭제 후 절대 되돌릴 수 없음

DROP TABLE

DROP TABLE table_name;
  • 테이블 전체, 공간, 객체를 삭제
  • 삭제 후 절대 되돌릴 수 없음

DROP DATABASE

DROP DATABASE databasename;
  • 해당 데이터베이스를 삭제

참고 자료

profile
🌱 새싹 개발자의 고군분투 코딩 일기
post-custom-banner

0개의 댓글