Download presentation
Presentation is loading. Please wait.
1
2004/05/13 3-4 データ型(カラムタイプ) について 発表者:藤村元彦 自然言語処理研究室
2
指定のデータ型と違うデータを入力した場合
データ型が文字列型のカラムに数値データを入れることは可能だが、計算や検索がうまく行われない。また、数値型のカラムに文字列を入れようとすると、自動的にゼロが代入される。 次の例は、4つ目のレコードの数値型カラムAGE_Cに文字列を代入した場合である。
3
型の違うデータの入力例 mysql> insert into FRIENDS_T set ID_C = 4, AGE_C = "大阪"; Query OK, 1 row affected (0.00 sec) mysql> select * from FRIENDS_T; | ID_C | NAME_C | ADD_C | AGE_C | | 1 | 大友達子 | 東京都千代田区何処町1-1-1 | | | 2 | 小友達夫 | 東京都葛飾区何処町 | | | 3 | 友田知香 | 青森県青森市何処町 | | | 4 | NULL | NULL | | 4 rows in set (0.00 sec)
4
データ型の自動変更 MySQLでは、指定されたデータの種類によってカラムの型が自動的に変化することがある。例えば、4文字以上のchar型はvarchar型に、3文字以下のvarchar型はchar型に変更される。 また、timestamp型では、2から14までの偶数をサイズとして指定するが、0や14を超える値の場合は自動的に14になる。奇数の場合は、一つ大きな値がサイズとなる。
5
enumとsetの使い方 enum型、set型は、型の定義時にリストで指定したデータ以外は入力できない。以下の例では、カラムに入力可能なデータのリストをenum型で定義し、そこにリストにないデータや、リストにある2つ以上データを入力しようとした場合で、その場合はエラーとなる。 mysql> create table TEST_ENUM(ORDER_NO int,PC_GOODS -> enum(“モニタカバー”,“マウスパッド”,“FDケース”, -> “スピーカ”)); Query OK, 0 rows affected (0.03 sec)
6
enumとsetの使い方の続き mysql> insert into TEST_ENUM(ORDER_NO,PC_GOODS)
-> values(1,‘マウスパッド’),(2,‘スピーカ’ ), -> (3,‘FDケース’),(4,‘スピーカ,マウスパッド,スピーカ’ ), -> (5,'ケーブル' ; Query OK, 5 rows affected (0.00 sec) Records: 5 Duplicates: 0 Warnings: 2 mysql> select * from TEST_ENUM; | ORDER_NO | PC_GOODS | | | マウスパッド | | | スピーカ | | | FDケース | | | | | | | 5 rows in set (0.00 sec)
7
日付型データ 日付型データは、文字列型や数値型についでよく使われるデータ型である。日付型のデータは、yyyy-mm-ddの型(4桁の西暦年、2桁の月と日)で格納され、次のように、カラムのデータ型として「date」と指定する。 mysql> create table -> DATE_T(ID int auto_increment not null -> primary key,BIRTHDAY date); Query OK, 0 rows affected (0.01 sec)
8
日付型データの入力例 mysql> insert into DATE_T set BIRTHDAY = "1999-01-01";
Query OK, 1 row affected (0.01 sec) mysql> insert into DATE_T set BIRTHDAY = " "; Query OK, 1 row affected (0.00 sec) mysql> insert into DATE_T set BIRTHDAY = "2000/02/06"; mysql> select * from DATE_T; | ID | BIRTHDAY | | 1 | | | 2 | | | 3 | | 3 rows in set (0.00 sec)
9
日付型データの入力方法 以上のように日付型データは、「/」で区切ったり、区切りがなくても入力可能である。
また、西暦を2桁で入力すると、4桁に変換されて登録される。MySQL3.22以降のバージョンでは1901~2155までの数値が年として自動判断されるので、意図しない変換を避けるためにも、西暦は4桁で入力するべきである。
10
不正な日付型データ なお、米国などで使われているmm-dd-yyyy型には対応しておらず、入力しても0000-00-00となる。
mysql> insert into DATE_T set BIRTHDAY = "06/25/1980"; Query OK, 1 row affected (0.00 sec) mysql> select * from DATE_T; | ID | BIRTHDAY | | 1 | | | 2 | | | 3 | | | 4 | | 4 rows in set (0.00 sec)
11
日付関数による日付の操作 date_format()関数を使うと、既定の形式以外でも表示することなら可能である。
mysql> select date_format(BIRTHDAY,"%m %d,%y") from DATE_T; | date_format(BIRTHDAY,"%m %d,%y") | | 01 01, | | 01 25, | | 02 06, | 3 rows in set (0.00 sec)
12
date_format()の西暦4桁表示 西暦を4桁表示にするには、%yを%Yと大文字にする。
mysql> select date_format(BIRTHDAY,"%m %d,%Y") from DATE_T; | date_format(BIRTHDAY,"%m %d,%Y") | | 01 01, | | 01 25, | | 02 06, | 3 rows in set (0.00 sec)
13
現在の日付と時間 現在の日付を知るにはcurdate関数、現在の時刻を知るにはcurtime関数を使う。 現在日時:
mysql> select curdate(); 現在時刻: mysql> select curtime();
14
年のみを表示する関数:year() 誕生日と現在日時から歳を調べるには、日付から年のみを取り出すyear()関数を使って計算する。
mysql> select year(curdate()) - year(BIRTHDAY), -> BIRTHDAY from DATE_T; | year(curdate()) - year(BIRTHDAY) | BIRTHDAY | | | | | | | | | | 3 rows in set (0.02 sec)
15
期間を定義:date_add() 以下の例は、REGISTRATIONという登録日カラムを持つテーブルから、1年半有効のカードなどが無効になる日を計算したものである。 mysql> select REGISTRATION, -> date_add(REGISTRATION,interval 18 month) as -> “失効日” from DATE_T; | REGISTRATION | 失効日 | | | | | | | | | | 3 rows in set (0.00 sec)
Similar presentations
© 2024 slidesplayer.net Inc.
All rights reserved.