トップページ
ひらく | たたむ | ページトップ
↓マウスで反転選択した文字を検索
MySQL
   
ページ内検索 ページ外検索
検索したい文字を入力して
ENTERを押すと移動します。
\n
[ トップページ ]
[ ____CommandPrompt ] [ ____JScript ] [ ____MySQL ] [ ____Cygwin ] [ ____Java ] [ ____Emacs ] [ ____Make ] [ ____Perl ] [ ____Python ] [ ____OpenGL ] [ ____C# ] [ ____StyleSheet ] [ ____C++ ] [ ____Winsock ] [ ____Thread ] [ ____VisualStudio ] [ ____C ] [ ____Win32API ] [ ____Lua ] [ ____PhotoShop ]
ヘッダ検索
___

■ データ型.Type




  データ型はおおまかに分類すると次の6種類
     数値
     文字列
     日付/時刻
     BLOB
     列挙
POINT QueryBrowser で文字をうつと, 補間される( STRING といれようとすると, そんな型はないので補間されない )
___

■ BOOL

DESC 条件が真であるかどうかを表す値のこと 2 つある

  // 大文字, 個別の区別はなし
  //
   TRUE : 1
   FALSE : 0
___

■ DATETIME.DATE

DESC 日付, 時刻を保存しておく型
  DATETIME   日付と時刻        
  DATE       日付
  TIME       時刻
  TIMESTAMP  タイムスタンプ
  YEAR       年
値を指定する時の文字列の書式は以下のような指定ができる もし書式が不正と判断すると0値が設定される
    YYYY-MM-DD HH:MM:SS
    YYYY.MM.DD HH.MM.SS
    YYYY/MM/DD HH/MM/SS

    YYYYMMDDHHMMSS

  // 形式 'YYYY-MM-DD HH:MM:SS'
  insert into tbl (birthday) values('2010.05.28 10:22:22')


  // 時間を省略
  //    RET: "2010-05-05 00:00:00"
  insert into tbl (birthday) values('2010.05.05')


  -- 誕生日が 2010年5月30日 より後を指定
  select * from tbl where birthday > "2000-05-30";


  WARNING
    
  -- Strict Mode では 不正な日付はエラー
  insert into tbl (d) values('2010.04.31')

WARNING ["] いります
___

■ 整数

DESC 次の 5 つがある 各格納できる値の範囲が決まっていて 範囲を超えるとエラーになる
   TINYINT
     -128:127 (unsigned 0:255 )

   SMALLINT
     -32768:32767 (unsigned 0:65535)

   MEDIUMINT
     -8388608:8388607 (unsigned 0:16777215 )

   INT(INTEGER)
     -2147483648:2147483647 (unsigned 0:4294967295)

   BIGINT
     -9223372036854775808から9223372036854775807
     (unsigned 0:18446744073709551615)
___

■ ZEROFILL

DESC SQL Browser にもある。
    // 001 となる
    TINYINT money
___

■ 表示幅

SYNTAX typename( N ) DESC 各データ型は表示幅を設定できます Nには幅を表す数値 幅を指定すると指定した幅で数値が表示されます

    本来使用可能な桁数よりも小さい表示幅を指定すると
    表示幅よりも大きい値を指定すると設定は無視される
  

    SMALLINT(3) 
___

■ UNSIGNED

DESC 数値型に 符号なし OPTION を追加する WARNING
    // すでに マイナスがはいってる column に UNSIGNED 
    // を追加すると怒られる
    // 
    Out of range value for column 'nr' at row 1
___

■ 文字列型(string)

DESC 文字列を格納します 型によって最大 Byte 数がきまっています WARNING () 内の数値は 半角のときの 最大文字数( 2 Byte 文字は半分にへる ) まとめると 3 つ
  // 型名     最大 Byte  
  CHAR       255         固定長 半角英数字は255文字まで、2バイト文字は約127文字まで
  VARCHAR     255        可変長 半角英数字は255文字まで、2バイト文字は約127文字まで
  TEXT     65535         大量の文字列を保存したいときに利用
WARNING
    // 2 べきの値はだめです
      -- BAD
      CHAR(256)
      -- OK
      CHAR(255)
___

■ CHAR(文字数)

DESC 指定文字数(バイト数)分の文字列が保存できる「固定長」のデータ型 固定長 とは文字列を保存するときに必ず確保した文字数(バイト数)を消費する
    // 10 byte 分の箱を用意
    char(10)   

    insert into tbl moji 

    // 空白 で padding される
    // とりだすときは, space が削除される
    --------------------
    abcde[ ][ ][ ][ ][ ]
    --------------------
    
CHAR(10) [xxxxxxxxx___] CHAR(7) は超えることができない CHAR 型のカラムでは、 CHAR(4) 型と VARCHAR(4) 型から取り出した値はそれぞれの場合で変わりません まとめるとコレ

  CHAR , VCHAR の比較  ( 単位 : byte )
  値        CHAR(4) WORKSIZE VARCHAR(4)  WORKSIZE 
  ''         '    ' 4        ''           1  
  'ab'      'ab  '  4         'ab'        3 
  'abcd'    'abcd'  4         'abcd'       5
  'abcdefgh' 'abcd'  4         'abcd'       5
WARNING
    // 最大文字数をこえるとエラー

    // ERROR 1406 (22001) at line 5: Data too long for column 'str' at row 1
    insert into test.testtbl (str) values("testdayo");
___

■ VARCHAR(最大文字数)

DESC 上限つきの Variable (可変サイズ)のCHAR型 保存された文字数分の領域しか消費しません 可変 Work だから遅い 最大文字に満たないときは 文字数 + 1 byte 分を消費する

  VARCHAR(10)   // 最大10文字の可変長文字列

  // 4 byte 消費
  --------
  [abc][N]
  --------

  // 8 byte 消費
  -------------
  [abcdefgh][N]
  -------------

WARNING 文字数 というのは半角文字で書かれた場合の文字数ということ 日本語は2バイト文字を保存するとき半分の5文字になる。 想定文字数の 2 倍程度にする。
___

■ TEXT

DESC 65535 バイトの文字列が保存可能なデータ型 保存される文字列数が特定できないカラムに対して利用する。 WARNING デフォルト値は指定できない。 ( BLOB/TEXT column cant have a default value ) 改行Code は [\r\n] かも? 可変長文字列 TINYTEXT : 2^ 8-1 バイト TINYTEXT : 2^16-1 バイト MEDIUMINTTEXT : 2^24-1 バイト LONGTEXT : 2^32-1 バイト
  // SQL 文では CHAR と同じようにすればいいだけ
  insert into foo (txt) values("aaa")

___

■ BLOB(BinaryLargeObject)

DESC データをバイトコードとして格納する。 違いはソートと比較時に大文字と小文字を区別するかしないか (BLOBはする, TEXTはしない)
___

■ Enum(列挙型)

DESC あらかじめ決めた値のリストを定義する型 設定できる数は 2^16 個 設定される値があらかじめ決まっているならば利用すると便利。 ( 性別カラムの男 | 女 ) Enum 型の値は 1 から始まり 0 は空文字列が返る。
    -- 条件の指定では文字列ではなく数値でする
    select name from member where sex = 1;
___

■ set

DESC Enum型同様にあらかじめ値のセットを決めておくが セットの中から自由に組み合わせることができる。 C でのビットフラグのような扱い。 最大で64個の要素を持てる。
    -- 条件指定には & をつかう
    select  name  from  member  where family & 4;
___

■ Set

___

■ Column.属性

DESC 各 column には 属性を指定できます TIP いろんな "おせっかい" があるので STRICT mode にするとよいかも こんなおせっかいがある
  // 
   char(4)のフィールドに'12345'の文字列をinsertすると'1234'とセットされます

   制約に外れると勝手にデフォルト値を入れられるわけね

  // 自分の環境では きちんとはじいてくれる
  // Data too long for column 'str' at row 1 
my.cnf に STRICTモードにできます 以下のようにsql-modeを追記 [mysqld] sql-mode="STRICT_ALL_TABLES"
___

■ NotNULL

DESC この Colunn は not null == [ NULL はなしよ ] という意味 // もし指定しないと, 次のようにいわれる ( "test" Column は null になりえない ) // Column 'test' cannot be null insert into tbl (test, str) values( null, null ) TIP すでに null がある column を NotNULL に変更するとERROR がでます
  // 次はいれることができる -> 0 が "0" と解釈してくれる
  insert into foo (test, str) values(0, 0)

  BAD
    insert into tbl (test, str) values(0, 0aaa)
  OK
    insert into tbl (test, str) values(0, "0aaa")
-> ちなみに table 一覧を見ると, ["] はつかない. -> これは 文字列ですよ ! という意味 // [ Default Value ] が空のときは 怒られる insert into foo (test) values(0) Field 'str' doesn't have a default value
___

■ DefaultValue

DESC デフォルト値を指定する insert でカラムの指定がないときは, この値がセットされる。 QueryBrowser ではカラム型によって次のように入力する
    // BAD
    文字列型    abc

    // 文字列はクォートすること
    文字列型    "abc"
    文字列型    'abc'

    // 数値型はそのまま入力
    数値型      1

    // NULL を指定するとカラムの値の指定がなければ NULL がセットされる。
    // ただし オプションとして NotNULL をオフにする必要がある。
WARNING NotNULL を指定すると インサート時のカラムの指定がなければDefault値が設定される。 そのとき値の指定がなければエラーになる。 TEXT, BLOB はデフォルト値をもつことができない為 NotNULL オフではエラーになる。 NotNULL オンではNULLが設定される。 Field 'xxx' doesn't have a default value


  // 空文字が default
  // char(10) のときは, "def" と入力しないと ERROR になる

insert 時に 指定しなくてもよい方法は 2 つある
   Not NULL をはずす -> NULL がはいる ( だって NULL がはいってもいいっていっるから )
   Default 値をいれる -> Default の値がはいる
TIP Column を追加するときに, Default なし && NotNULL にすると その型の Default がはいるらしいです
  // Int なら 0 がはいる
  int -> [0]
TIP // null の扱いはおいておき, Defalut Value を空にすると, // == Default 値は ないとみなされて, 怒られる // ちなみに , field をつくった直後は NOT NULL が ON になるらしい -> ie. 空はなしよ ! ということになる. -> 慣れないうちはこれが望ましい // Default Value [null] とあったら 文字とおり, 空 == 指定がないということ
















NINJAIDX 2