MySQLの一般的な制約

#一般的な制約

/ *


意味:表内のデータを制限するための制限を、テーブル内のデータの正確性と信頼性を確保するために


分類:6つの制約
NOT NULL:非空で、フィールドの保証値は空白にすることはできません
などの名前、学校、などの
フィールドがデフォルト値であることを確実にするために、デフォルト:DEFAULT
、性別などの
確保のために、主キー:PRIMARY KEYをフィールドの値がnullでユニークな、とではない
、そのような学生番号、従業員番号、などなど、
ユニークな:のみ、このフィールドの値が一意であることを確認するために使用され、空にすることができ
、このような座席番号として、
チェックイン:チェック制約は[mysqlの]がサポートされていない
年齢など性別
FOREIGN KEY:このフィールドの値は、列に関連付けられたプライマリ・テーブルの値から導出されなければならないことを確実にするために2つのテーブル間の関係を制限するための外部キー、
プライマリ・テーブル参照で列の外部キー制約を追加するテーブルに値が
、そのような表に特化した学生の数、スタッフのテーブルの部門番号、従業員番号テーブルタイプとして

次の場合、制約を追加し
、テーブルを作成します。1.
2.変更にテーブルを

:追加のカテゴリは制約
:列レベルの制約を
6つの主要な制約構文がサポートされていますが、外部キー制約は効果がありません

、テーブルレベルの制約:

空でないに加えてを、デフォルトは、他の人がサポートして


主キーとだけ大きなコントラストを:

保証の一意性がテーブルを空にするために許可されているの組み合わせ許可するかどうかの数であってもよい
√ほとんど1で主キーを√×が、お勧めできません
√√複数の√を持っていますが、お勧めできませんユニーク
外部キー:
1を、テーブルから必要です外部キー関係
2、関連タイプ、同一または互換性のあるクレームのテーブル型カラムの外部キー列、名前なしのメインテーブル
3、関連するプライマリ・テーブルの列は、キー(典型的には、主キーまたは一意)である必要があります
4、データを挿入するとき、第一マスタテーブルに挿入され、そしてテーブルから挿入し
たデータが削除され、最初のテーブルから削除し、メインテーブルを削除


* /

TABLEテーブル名を作成する(
列レベル制約のフィールド名、フィールドタイプ、
フィールド名、フィールドタイプ、
テーブルレベルの制約


DATABASE学生のCREATE;
#aを、テーブルを作成するときに制約を追加します

#1の追加の列レベルの制約
/ *
構文:

直接フィールドに制約の型名とタイプした後は、追加することができます。

のみをサポート:デフォルト、null以外、主キー、ユニークにより、

 

* /

USE学生;
DROPテーブルstuinfo;
表stuinfoを作成する(
ID INT PRIMARY KEY、#主キー
stuName VARCHAR(20)NOT NULL、UNIQUE 、#1 空でない
性別CHAR(1)CHECK(性別 = ' M' OR性別= 'F')、 #チェック
シートINTユニークな、#ユニークな
年齢INTデフォルト18、#デフォルトの制約
majorId INT REFERENCESメジャー(ID)#外部キー

);


TABLEメジャー(CREATE
ID INT PRIMARY KEY、
majorName VARCHAR(20)
)。

主キー、外部キー、ユニーク含め、すべてのインデックス番号のstuinfoを参照してください
stuinfoでSHOW INDEX。


#2。テーブルレベルの制約の追加
/ *

構文:フィールドの一番下にある
[制約制約の制約名]タイプ(フィールド名)
* /

DROP TABLE IFはstuinfoをEXISTS。
表stuinfoを作成する(
IDのINT、
stuname VARCHAR(20)、
性別CHAR(1)、
シートINT、
年齢INT、
majorid INT、

CONSTRAINT PK PRIMARY KEY(ID)、#主键
CONSTRAINT UQ UNIQUE(座席)、#唯一键
CONSTRAINT CK CHECK(性別= '男' OR性別= '女')、#检查
(ID)#外键大きな制約fk_stuinfo_major FOREIGN KEY(majorid)を参照

)。

 

 

stuinfo FROM SHOW INDEX。

 

#一般的な言葉遣い:★

NOTはstuinfo(存在する場合、CREATE TABLEの
ID INT PRIMARY KEY、
stuname VARCHAR(20)、
セックスCHAR(1)、
年齢のINT DEFAULT 18を、
シートINT UNIQUE、
majorid INT、
CONSTRAINT fk_stuinfo_major FOREIGN KEY(majorid)REFERENCESメジャー(ID)

);

 

#第二に、追加の制約テーブルを変更

/ *
1、列レベルの制約を追加する
ALTER TABLE MODIFY列のテーブル名、フィールド名フィールドタイプ新しい制約を。

図2に示すように、テーブルレベルの制約を追加する
ALTER TABLEテーブル{追加制約制約制約名]タイプ(フィールド名)] [外部キー参照。


* /
DROP TABLE IFはstuinfoをEXISTS;
表stuinfo(CREATE
ID INT、
stuname VARCHAR(20である)
。ジェンダーCHAR(1)、
SEAT INT、
年齢INTは、
INTをmajorid

DESCのstuinfoと、
。。#1アドインヌル制約
ALTER TABLE stuinfo MODIFYカラムstuname VARCHAR NOT NULL(20である);
#2は、デフォルトの制約に加え
、MODIFY stuinfoカラム年齢デフォルト18がINT ALTERテーブル
。#3は、主キーの追加
#①カラムレベルの制約
、ALTER TABLE MODIFY stuinfo列ID INT PRIMARY KEY
#②テーブルレベルの制約を
ALTER TABLE stuinfo ADD PRIMARY KEY(ID )。

独特の追加#4。

#①カラムレベルの制約
ALTER TABLE MODIFY COLUMN INT UNIQUEのSEAT stuinfo;
#②テーブルレベルの制約
ALTER TABLE stuinfo ADD UNIQUE(シート) ;


#5添加外键。
FOREIGN KEY(majorid)REFERENCES fk_stuinfo_major ALTER TABLE stuinfoのADD CONSTRAINTメジャー(ID)。

#第三に、テーブルを変更する際に制約を削除

#1削除非空制約
ALTER TABLE stuinfo MODIFYカラムstuname VARCHAR( 20)NULL。

#2デフォルトの制約を削除する
ALTER TABLE MODIFY COLUMN stuinfo年齢INTを、

#3は、主キーの削除
DROP PRIMARY KEY stuinfo ALTER TABLEを。

#4削除のみ
DROP INDEXシートstuinfo ALTER TABLE。

#5削除する外部キー
ALTER TABLE stuinfo DROP FOREIGN KEY fk_stuinfo_major。

stuinfo FROM SHOW INDEX。

 

おすすめ

転載: www.cnblogs.com/cb1186512739/p/12655337.html