Loading...
MySQL 9.5 Reference Manual 9.5의 5.3.2 Creating a Table의 한국어 번역본입니다.
아래의 경우에 피드백에서 신고해주신다면 반영하겠습니다.
감사합니다 :)
데이터베이스를 생성하는 것은 쉬운 부분이지만, 이 시점에서 데이터베이스는 비어 있습니다. 이는 SHOW TABLES가 알려줍니다:
1mysql> SHOW TABLES; 2Empty set (0.00 sec)
더 어려운 부분은 데이터베이스의 구조를 어떻게 할지 결정하는 것입니다. 어떤 테이블이 필요하고 각 테이블에 어떤 컬럼이 있어야 하는지를 결정해야 합니다.
각 pet에 대한 레코드를 포함하는 테이블이 필요합니다. 이 테이블은 pet 테이블이라고 부를 수 있고, 최소한 각 동물의 이름을 포함해야 합니다. 이름만으로는 별로 흥미롭지 않으므로, 테이블은 다른 정보도 포함해야 합니다. 예를 들어, 가족 구성원 중 여러 사람이 pet을 기른다면, 각 동물의 owner를 나열하고 싶을 수 있습니다. 또한 species와 sex 같은 기본적인 설명 정보를 기록하고 싶을 수도 있습니다.
age는 어떨까요? 흥미로운 정보일 수 있지만, 데이터베이스에 저장하기에 좋은 정보는 아닙니다. age는 시간이 지나면서 변하므로, 레코드를 자주 업데이트해야 합니다. 대신, date of birth 같은 변하지 않는 값을 저장하는 것이 더 좋습니다.
그러면 age가 필요할 때마다 현재 날짜와 birth date의 차이로 계산할 수 있습니다. MySQL은 날짜 연산을 수행하는 함수들을 제공하므로, 이는 어렵지 않습니다. age 대신 birth date를 저장하는 것은 다른 장점도 있습니다:
앞으로 다가오는 pet의 생일에 대한 알림을 생성하는 작업에 데이터베이스를 사용할 수 있습니다. (이런 유형의 쿼리가 다소 사소해 보일 수 있지만, 이는 비즈니스 데이터베이스 환경에서 이번 주나 이번 달에 생일 축하 인사를 보내야 할 client를 식별하기 위해 할 수 있는 것과 동일한 질문입니다. 이는 computer-assisted personal touch를 위한 것입니다.)
현재 날짜가 아닌 다른 날짜를 기준으로 age를 계산할 수 있습니다. 예를 들어, 데이터베이스에 death date를 저장하면, pet이 죽었을 때 몇 살이었는지 쉽게 계산할 수 있습니다.
pet 테이블에 유용할 수 있는 다른 유형의 정보도 떠올릴 수 있겠지만, 지금까지 파악한 것만으로도 충분합니다: name, owner, species, sex, birth, death입니다.
CREATE TABLE statement를 사용하여 테이블의 레이아웃을 지정합니다:
1mysql> CREATE TABLE pet (name VARCHAR(20), owner VARCHAR(20), 2 species VARCHAR(20), sex CHAR(1), birth DATE, death DATE);
VARCHAR는 name, owner, species 컬럼에 좋은 선택입니다. 컬럼 값의 길이가 가변적이기 때문입니다. 이들 컬럼 정의에서 길이는 모두 같을 필요도 없고, 반드시 20일 필요도 없습니다. 보통 1에서 65535 사이에서, 가장 합리적이라고 생각되는 길이를 선택할 수 있습니다.
잘못된 선택을 해서 나중에 더 긴 필드가 필요하게 되더라도, MySQL은 ALTER TABLE statement를 제공합니다.
animal 레코드에서 sex를 표현하기 위한 값 유형은 'm'과 'f', 혹은 'male'과 'female'처럼 여러 가지가 있을 수 있습니다. 가장 단순한 것은 'm'과 'f'라는 단일 문자 값을 사용하는 것입니다.
DATE 데이터 타입을 birth와 death 컬럼에 사용하는 것은 꽤 분명한 선택입니다.
테이블을 생성한 후에는, SHOW TABLES가 다음과 같이 출력을 생성해야 합니다:
1mysql> SHOW TABLES; 2+---------------------+ 3| Tables in menagerie | 4+---------------------+ 5| pet | 6+---------------------+
테이블이 예상한 대로 생성되었는지 확인하려면 DESCRIBE statement를 사용합니다:
1mysql> DESCRIBE pet; 2+---------+-------------+------+-----+---------+-------+ 3| Field | Type | Null | Key | Default | Extra | 4+---------+-------------+------+-----+---------+-------+ 5| name | varchar(20) | YES | | NULL | | 6| owner | varchar(20) | YES | | NULL | | 7| species | varchar(20) | YES | | NULL | | 8| sex | char(1) | YES | | NULL | | 9| birth | date | YES | | NULL | | 10| death | date | YES | | NULL | | 11+---------+-------------+------+-----+---------+-------+
테이블의 컬럼 이름을 잊어버렸거나 각 컬럼이 어떤 타입인지 기억나지 않을 때 등, 언제든지 DESCRIBE를 사용할 수 있습니다.
MySQL 데이터 타입에 대한 자세한 내용은 Chapter 13, Data Types을 참조하십시오.
5.3.1 Creating and Selecting a Database
5.3.3 Loading Data into a Table