기록/DB

[MYSQL] DDL(Data Definition Language)

5월._. 2022. 5. 11.
728x90

1. 사용방법

-- 데이터베이스 생성
CREATE DATABASE 데이터베이스이름;
-- 데이터베이스 사용
USE 데이터베이스이름;

-- 테이블 생성
CREATE TABLE 테이블이름
(
    필드이름1 필드타입1,
    필드이름2 필드타입2
);

-- 서브쿼리를 활용해서 테이블 생성(SELECT로 가져온 결과를 이용할 수 있음)
CREATE TABLE 테이블이름
AS
SELECT구문

-- 데이터베이스 수정
ALTER DATABASE 데이터베이스이름 변경내용;

-- 테이블 수정
-- 1. 새로운 필드 추가
ALTER TABLE 테이블이름 ADD 필드이름 필드타입;
-- 2. 필드 삭제
ALTER TABLE 테이블이름 DROP 필드이름;
-- 3. 필드 타입변경
ALTER TABLE 테이블이름 MODIFY COLUMN 필드이름 필드타입;

-- 데이터베이스 삭제
DROP DATABASE 데이터베이스이름;
DROP DATABASE IF EXISTS 데이터베이스이름;

-- 테이블 삭제
DROP TABLE 테이블이름;
DROP TABLE IF EXISTS 테이블이름;
-- 데이터만 지우고 싶을 때 TRUNCATE
TRUNCATE TABLE 테이블이름;

 

2. 테이블 제약조건

제약조건의 목적은 데이터의 무결성이다. 이 데이터는 올바른 데이터임을 DB가 보장하도록 한다.

  1. PRIMARY KEY : NOT NULL과 UNIQUE의 특징을 모두 가진다. 테이블의 데이터를 빠르게 찾도록 도와준다.
  2. FOREIGN KEY : 한 테이블을 다른 테이블과 연결해주는 역할을 한다. 참조되는 테이블의 필드는 반드시 UNIQUE나 PRIMARY KEY가 설정되어 있어야 한다.
  3. NOT NULL : 데이터의 필드에 NULL값을 저장할 수 없도록 한다.
  4. UNIQUE : 중복된 값을 저장할 수 없다.
  5. DEFAULT : 해당 필드의 기본값을 설정할 수 있다. 레코드를 입력할 때 해당 필드의 값을 전달하지 않으면 기본값을 저장한다.

 

3. INDEX

특징

테이블에서 원하는 데이터를 쉽고 빠르게 찾기 위해 사용한다. 자주 사용되는 필드 값으로 만들어진 원본 테이블의 사본이라고 생각할 수 있다. 인덱스가 설정된 필드 값을 포함한 데이터의 삽입, 삭제, 수정 작업이 원본 테이블에 이뤄질 경우, 인덱스도 함께 수정되어야 하기 때문에 속도가 느려진다. 따라서 수정보다는 검색이 자주 사용되는 테이블에서 사용하는 것이 좋다.

사용법

-- 생성
CREATE [UNIQUE] INDEX 인덱스이름
ON 테이블이름 (필드이름 1 [DESC|ASC], 필드이름 2, ...);

-- 확인
SHOW INDEX
FROM 테이블이름;

-- 테이블에 인덱스 추가
--  - FULLTEXT : 일반적인 인덱스와 다르게 매우 빠르게 테이블의 모든 텍스트필드를 검색
ALTER TALBE 테이블이름
ADD [UNIQUE|FULLTEXT] INDEX 인덱스이름(필드이름);

-- 삭제
-- 1번 방법
DROP INDEX 인덱스이름
ON 테이블이름;
-- 2번 방법
ALTER TABLE 테이블이름
DROP INDEX 인덱스이름;

 

4. VIEW

정의

데이터베이스에 존재하는 가상 테이블을 의미한다. 실제 테이블처럼 행과 열을 가지고 있지만 실제 데이터를 저장하고 있지는 않다. 뷰를 사용하면 여러 테이블이나 뷰를 하나의 테이블처럼 볼 수 있다.

특징

장점

  • 특정 사용자에게 테이블 전체가 아닌 필요한 필드만을 보여줄 수 있다.
  • 복잡한 쿼리를 단순화해서 사용할 수 있다.
  • 쿼리를 재사용할 수 있다.

단점

  • 한번 정의된 뷰는 변경할 수 없다.
  • 삽입, 삭제, 갱신 작업에 많은 제한 사항을 가진다.
  • 자신만의 인덱스를 가질 수 없다.

사용법

-- 생성 (주의 : 뷰는 원본 테이블과 같은 이름을 가질 수 없음)
CREATE [OR REPLACE] VIEW 뷰이름 AS
SELECT 필드이름1, 필드이름2,...
FROM 테이블이름
WHERE 조건;

-- 수정
ALTER VIEW 뷰이름 AS
SELECT 필드이름1, 필드이름2, ...
FROM 테이블이름;

-- 삭제
DROP VIEW 뷰이름;

 

 

출처 : http://www.tcpschool.com/mysql

'기록 > DB' 카테고리의 다른 글

[MYSQL] 그룹함수  (0) 2022.05.14
[MYSQL] DCL(Data Control Language)  (0) 2022.05.13
[MYSQL] DML(Data Manipulation Language)  (0) 2022.05.12

댓글