본문 바로가기

잡다/SQL

[SQL] DB 및 테이블의 생성, 열람 및 삭제

mysql을 기준으로 한다. 다른 SQL에서는 일부 차이점이 존재할 수 있다.

 

데이터베이스 및 테이블의 생성 및 제거

  • 생성 : CREATE 명령어 사용
  • 제거 : DROP 명령어 제거

데이터베이스 생성

CREATE DATABASE [IF NOT EXISTS] db_name;

데이터베이스 제거

DROP DATABASE db_name;

테이블 생성

테이블은 CREATE 명령어를 사용한다. 이때 각 컬럼은 컴마( , )를 기준으로 구분되며 컬럼 이름, 컬럼의 타입, 해당 컬럼에 대한 제한조건을 설정하게 된다.

CREATE TABLE [IF NOT EXISTS] tb_name 
(
    column1 type constraint_info,
    column2 type constraint_info,
    column3 type constraint_info,
    column4 type constraint_info
    ...
)

컬럼에 사용될 수 있는 타입은 다음과 같다.

  • 문자형 : CHAR(n), VARCHAR(n), TEXT, BLOB ( 크기 다양 )
  • 정수형 : TINYINT, SMALLINT, MEDIUMINT, INT, BIGINT ( 통상적인 타입과 대응, MEDIUMINT만 short-int 사이 )
  • 실수형 : DECIMAL, FLOAT, DOUBLE (M,D)
  • 날짜형 : DATE, DATETIME (시간 포함), TIME (시간만), YEAR 

정수 및 실수형의 경우 UNSIGNED을 추가하여, 0 이상의 영역만 지정할 수 있다.

사용될 수 있는 제한조건 (constraint) 는 다음과 같다.

https://www.w3schools.com/sql/sql_constraints.asp

  • NOT NULL : 해당 컬럼은 반드시 값이 존재해야 함. 없으면 에러 발생.
  • UNIQUE : 컬럼의 값이 중복되지 않음.
  • PRIMARY KEY : 테이블의 행을 구분하는 조건.
  • FOREIGN KEY : 다른 테이블과 연결관계를 가지는 키.
  • CHECK : 특정 조건을 만족하는지 검사. 
  • DEFAULT : 값을 넣지 않았을 때 기본값 지정.

제약조건을 생성할 때 이름을 따로 지정하지 않으면 자체적으로 이름을 지정한다.

테이블 생성 시 제약조건 생성

각 컬럼과 제약조건을 함께 기술하는 대신, 따로 작성할 수도 있다. 

CREATE TABLE [IF NOT EXISTS] tb_name 
(
    column1 type constraint_info,
    column2 type constraint_info,
    column3 type constraint_info,
    column4 type constraint_info,
-- (1) 제한조건을 따로 분리
    PRIMARY KEY(column1)
-- (2) CONSTRAINT 명령어를 함께 사용하여 정의
    CONSTRAINT CHECK (column2 > 10)
-- (3) CONSTRAINT 객체에 이름 붙이기
    CONSTRRAINT con_name CHECK (column3 LIKE "S%")
)

테이블 생성 후 제약조건 생성/삭제

이미 생성된 테이블에 특정 컬럼이나 제약조건 등을 추가하기 위해서는 ALTER TABLE 명령을 이용한다.

-- (1) 제약조건 추가
ALTER TABLE tb_name
ADD CONSTRAINT constraint_name ~ ;

-- (2) 제약조건 제거
ALTER TABLE tb_name
DROP CONSTRAINT constraint_name;

-- 제약조건 이름을 모르는 경우, 다음 명령을 통해 이름을 알아본다.
SHOW CREATE TABLE tb_name;

테이블 제거

DROP TABLE tb_name;

데이터베이스 / 테이블 열람

SHOW DATABASES;
SHOW TABLES;

특정 데이터베이스 선택

USE db_name;

특정 테이블 관련 정보 보기

테이블의 컬럼 정보 등을 열람할 때 사용한다.

(DESCRIBE|DESC) tb_name;

 

'잡다 > SQL' 카테고리의 다른 글

[SQL] Entity Relationship Model  (0) 2022.01.17
[SQL] SELECT 문  (0) 2022.01.15
sql 데이터 형  (0) 2022.01.07