티스토리 뷰

DB 생성 & 한글 인코딩 설정

  • DB를 생성하고 한글값을 저장하기 위해서는 인코딩 값을 utf8로 설정해줘야 한다.
-- db 생성 & 한글 설정
create database test_db
character set = 'utf8'
collate = utf8_general_ci;

-- db 사용
use test_db;

 

Table 생성

-- table 생성
create table 테이블명 (
	컬럼이름 자료형 제약조건,
	컬럼이름 자료형 제약조건
    );

-- 예시
create table test_table2(
	data1 int(10) primary key,
	data2 varchar(10) not null,
    data3 float(10, 2)
);

 

테이블 생성시 type에 올 수 있는 것들

모든 자료형을 확인하고 싶다면 mysql 사이트에 가서 확인해보자 -> https://dev.mysql.com/doc/refman/8.0/en/data-types.html

 

참고) char(n)와 varchar(n)의 차이

  • char 형은 char(10)으로 설정시 한글자만 넣더라도 메모리 공간은 10byte를 잡는다. 이에 반해 varchar는 varchar(10)으로 설정해도 한글자만 넣어으면 1byte만 메모리 공간을 갖게된다.
  • 단, 조회의 속도는 char형이 varchar형보다 더 빠르므로 길이의 차이가 별로 나지 않는 곳에는 char를 사용하고, 본문 등 길이의 차이가 제각각인 곳에는 varchar를 사용하는것이 효과적이다.
create table post (
name char(10) not null,
body varchar(10000),
)

위와 같이 설정 시 
name은 항상 10byte를 공간을 갖고, 
body는 내용에 따라 가변적으로 공간을 갖게된다.

 

테이블 생성 모습

 

서브쿼리를 이용한 테이블 생성

  • select 결과를 받아서 이를 테이블로 생성할 수 있다.
  • 결과의 내용을 전부 옮길 수도 있고, 원하는 컬럼만 옮길 수도 있으며, 내용은 전혀 옮기지 않고 테이블 구조만 가져와서 만들 수도 있다.
-- select 결과를 가지고 테이블 생성
create table 테이블명
as
select * from 다른 테이블

-- select 결과 중 특정 열만 가지고 테이블 생성
create table dept
as
select dept_no from departments;

-- select 결과에 대해서 값은 가져오지 않고 테이블 구조만 똑같이 생성
-- 조건을 항상 틀리는 조건을 달면 된다.
create table dept
as
select * from departments where 1=0;
반응형
Comments
반응형
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday