MySQLのデータ型と制約

まず、テーブルの完全な構文を作成します。

構文:
テーブルのテーブル名(作成
フィールド名1タイプ[(幅)制約]、
フィールド名[(幅)制約]の2つのタイプ、
フィールド名タイプ3 [(幅)制約] 
); 

#1 注: 
1 。同じテーブルに、同じフィールド名ではありません
 2 。また、幅と制約は、フィールド名とタイプが必要とされる
 3 最後のフィールドの後にコンマをすることはできません!

追加されました:1は、データストレージの制限の幅を意味する
;表のUserInfo(文字名)を作成し
INSERT INTOのUserInfo値(ジェイソンを;)
 "「」
1は、データベースのない安全モードバージョンはありませんが、データを記憶することができるだけですJに堆積する
2.データベースの最新バージョンは、直接プロンプトエラー保存することができません:行1のデータ列「name」の長すぎる
「」 " 

NUT 2.制約の知人>>>ヌルヌル 
表T1を作成します(上記のid int型に言及しました、名前の文字はありません
T1値にINSERT( 1、。' J ');   ノーマルメモリ 
T1値にINSERT(2、NULL);   #のエラー

要約タイプ制約差
#のタイプ:制限フィールドがなければならないデータストレージの種類
#の制約:制約は、超えた制約の追加の種類を追加することです

第二に、基本データ型

1、整数

テーブルT1の作成(X TINYINT); 
INSERT INTO T1値( 128)、( - 129 );ジェントモード誤差下#。範囲のため

のテーブルT2を作成する(X TINYINT符号なし) ; #unsigned インジケータキャンセル
INSERT INTO T2値( -1)、(256 );#は、厳密モードで与えられ、範囲オーバー

(X int型符号なし)テーブルT3を作成し 、# で範囲にわたって厳密モード誤差
T3値にINSERT( 4294967296)。

注:整数の場合は、メモリ幅のデータ型が制限されていませんが、表示の制限、そのフィールドは完全に表示、デフォルトの表示幅の幅を指定せずに、整数型では使用されている場合は、テーブルを作成するときに、十分な完全に元のデータが保存されて表示されます。

 

strictモードと設定を紹介:

以下のように表示する変数%モード% ;   #は、モードの設定パラメータを含むデータベース変数名の設定を表示セキュリティモード変更 
セッションセット#をのみ、現在のユーザーインタフェースのアクティブ 
SET グローバル  グローバルに有効な

SET グローバル sql_modeのは= STRICT_TRANS_TABLES 
変更した後に終了現在のクライアントは、再ログインすることができます

 

2、フロート

ストレージ制限 
フロートを(255,30 )#精度最小
ダブル( 255,30 )で#精度
小数( 255,30 )最大精度#1 

精度をテスト 
表T9を作成し(Xフロートを(255,30 ))。       
テーブルT10(ダブルXを(作成 255,30 )); 
テーブルT11(Xの小数(登録 65,30 )); 

INSERT INTO T9値( 1.111111111111111111111111111111 ); 
INSERT INTO T10値( 1.111111111111111111111111111111 ); 
INSERT INTO T11値( 1.111111111111111111111111111111)。

 

3、文字型

CHAR、VARCHAR

表T10を作成する((4)名char)  与えられている4つの文字、4つの文字を超えては補完するための十分なスペースではありません 
。表T11を作成します(名前VARCHAR(4))  、いくつかの4があり、数を維持するのに十分、4文字のエラーがない超え

#の認証ストレージ制限 
T12値にINSERT(' こんにちは' ); 
INSERT INTO T13値(' ハロー' );
 #の検証メモリ長 
T12値にINSERT(' A '); ' 
T13値にINSERT(' A '); ' ' 
SELECT * からT12 
SELECT * から T13の   実際の結果を見ることができない

SELECT CHAR_LENGTH(名)からT12 
SELECT CHAR_LENGTH(名)から T13の   #は、まだ本当の結果を見ることはできません

。「」 " 最初のハードディスクメモリは絶対に本物のデータであることを確認してください、しかし、時間を示すべきMySQLの自動末尾のスペースを削除します「「」
あなたはmysqlの助けを必要としない場合は、末尾のスペースを削除し、あなたが他のモードを追加する必要が自動的に動作 
SETを株式会社参加無料、 sql_modeの= STRICT_TRANS_TABLES、PAD_CHAR_TO_FULL_LENGTHを" ;
 #は再訪問にクライアントを終了すること 
を選択しCHAR_LENGTH (X)から T12; 4。 
SELECT CHAR_LENGTH(Y)から T13; 1 

チャータイプのは、MySQLは、データ空間に格納され、ハードディスクに格納されている補完します。結果を読み出す場合でも、自動的に末尾のスペースをテイクダウンします


。「」
charとvarcharの違い使用して
「」 " 
名前の文字を( 5。 )短所:無駄なスペース
#の利点:速いアクセス速度
エゴン・アレックスLXX JXX TXXの   

名前はvarchar( 5 #の欠点:遅いアクセス速度の
#の利点:省スペース 
1bytes +エゴンの1bytes +アレックス1bytes + LXX 1bytes + jxx 1bytes + TXX

 

図4に示すように、時間タイプ

日付、時刻、日時、年

テーブルの学生(作成
    のid int型、
  名char( 16 )、
  born_year年、
  誕生日、
  study_time時間、
  reg_time日時を
)。
(学生値に挿入 1、エゴン2019 2019年5月9日11時11分○○秒11時11分11秒2019年11月11日)。

 

5、列挙型とコレクション型

列挙型、セット

表ユーザ(作成
    ID int型、
  名char( 16 )、
  性別列挙(' 男性'' 女性'' 他人を' 
); 
ユーザー値に挿入( 1、' ジェイソン'' XXX '#は报错 
ユーザー値に挿入(2、' エゴン'' 女性'正确!


テーブル先生(作成
    のid int型、
  名char( 16 
  性別列挙(' 男性'' 女性'' その他' )、
  趣味SET(' 読む'' SLEEP '' サンナ'' DBJ ' 
); 
INSERT INTO教師値( 1、' エゴン'' MALE 読む、SLEEP、DBJ "#のセットはまた、唯一存在することができます

 

第三に、制約

「」 " 
テーブルの主キーフィールドのアイデンティティのためのPRIMARY KEY(PK)、記録一意の識別子
FOREIGN KEY(FK)外部キーテーブルの識別フィールド
フィールドの識別子をnullにすることはできません、NOT NULL 
UNIQUE KEY(UK)が特定されこのフィールドの値は一意である
自動拡張(整数型、主キー)の識別AUTO_INCREMENT値フィールド
既定のデフォルト値にフィールドを

符号なし符号なし
0で満たさZEROFILL 
"「」

 

彼は加えました:

削除からTB1; 
強調する:このコマンドは上記のすべてのレコードは本当にテーブルが削除されることができますが、ないidがゼロにリセットされます、
ので、そのセクションは、テーブルをクリアするためのコマンドされていない閉じ、使用されている削除マッチングの一部が記録され、テーブルの削除
削除から WHERE上記のid>の10 TB1 ; 

;あなたがテーブルを空にしたい場合は、TB1切り捨てる使用し
、テーブル全体をリセットし、idが0のレコードから再起動します。効果を

 

おすすめ

転載: www.cnblogs.com/wujc3/p/11384928.html