テーブルの列を追加したり、削除によく使われるSQLのデータ型。
その種類や使い方を解説します。
また「’」や「VALUES(10)」のように()がどういう意味なのかも
合わせて解説していきます。
[SQL]「’」の意味、データ型、固定長と可変長
「’」の意味
最初にいうと「’」で囲まれたものは文字列として扱われます。
「’」で囲まれていない場合は数値として扱われます。
「’5000’」は文字列の5000で
「5000」は数字の5000としてみなされます。
とあるSQL文を見てみましょう。
insert into プレゼント values (‘2020-07-15′,’髪飾り’,’5000′);
これはプレゼントというテーブルに
「2020/07/15,髪飾り,5000」を列に挿入する文です。
「’2020-07-15’」のように一定の形式で「’」で囲むと
日付として扱われます。
髪飾りは文字列として5000も同様です。
またSQLの場合は「’」「”」どちらでも構いません。
SQLのデータ型たち
列に入れるデータが
文字列のデータなのか数字のデータなのかを示すのがデータ型です。
使うDBMS製品によってはデータ型が異なりますので
代表的なものだけをまとめます。
データの種類 | 区分 | データ型 |
日時 | ー | DATETIME型,TIME型,DATA型 |
数値 | 整数 | INTEGER型 |
小数 | DECIMAL型,REAL型 | |
文字列 | 固定長 | CHAR型 |
可変長 | VARCHAR型 |
固定長と可変長は後ほど解説します。
先ほどのSQL文をみて疑問に思うことはありませんか?
一列に文字列データと数値データが混在している場合はどうすればいいのか。
数値データのINTEGER型の場合は数値のみ入れることができ、
文字列を格納することはできません。
なのでデータ型の異なるデータは分けて書きます。
固定長と可変長とは?
整数と小数でデータ型が分けられるのはわかるが
文字列のデータ型「CHAR」「VARCHAR」は何が違うのか?
それは固定長と可変長の違いです。
「CHAR」は固定長の文字列を扱うデータ型で
CHAR(10)の場合は10バイトの容量が確保されます。
そこに10バイトに満たないデータが入ってきたとします。
文字列の右側に空白が入れられて10バイト丁度に調整されます。
これが可変長のVARCHAR型の場合は
VARCHAR(10)だと10バイトより少なければそれに合わせて容量が確保されますが、
12など()内で指定したバイト数を越すものが入ってくると
格納されずにエラーが表示されます。
バイトではありませんが簡単に考えた図を書きました。
CHARは10バイトに合わせられる、
VARCHARは用意されたバイト数を使い切るのではなく
7バイトだったらそのバイト数までしか使いません。
実用例
桁数の決まっていないデータはCHAR
桁数の決まっているデータはVARCHARを使います。
まとめ
SQLのデータ型がわかりましたでしょうか?
JavaだとintやStringを使ったりするので
SQLを久々に触ろうとするとつまづきやすいですね。
この記事が良かったというあなたはTwitterのフォローと
当サイトのお気に入り登録をお願いします!