方式一:在建立表的時候增加約束(麻煩,比較複雜)
create
table
`grade`
(`gradeid`
int(10)
notnull
auto_increment
comment
'年級id'
,`gradename`
varchar(50
)not
null
null
comment
'年級名稱'
,primary
key(
`gradeid`))
engine
=innodb
default
charset
=utf8
-- 學生表的greadid 要引用學生表的id
-- 定義外來鍵key
-- 給這個外來鍵新增約束(執行引用) references 引用
create
table
ifnot
exists
`student`
(`id`
int(4)
notnull
auto_increment
comment
'學號'
,`name`
varchar(30
)not
null
default
'匿名'
comment
'姓名'
,`pwd`
varchar(20
)not
null
default
'123456'
comment
'密碼'
,`***`
varchar(2
)not
null
default
'女'comment
'性別'
,`birthday`
datetime
default
null
comment
'出生日期'
,`gradeid`
int(10)
notnull
comment
'學生的年級'
,`address`
varchar
(100
)default
null
comment
'家庭位址'
,`email`
varchar(50
)default
null
comment
'郵箱'
,primary
key(
`id`),
key`fk_gradeid`
(`gradeid`),
constraint
`fk_gradeid`
foreign
key(
`gradeid`
)references
`grade`
(`gradeid`))
engine
=innodb
default
charset
=utf8
刪除有外來鍵關係的表的時候,必須先刪除主表,再刪除從表
方式二:建立表成功後,新增外來鍵約束
-- 建立表的時候沒有外來鍵關係
alter
table
`student`
addconstraint
`fk_gradeid`
foreign
key(
`gradeid`
) rreferance `grade`
(`gradeid`);
-- alter table [表名]
-- add constraint [約束名] foreign key (作為外來鍵的列) rreferance [表名](`欄位名`);
以上的操作,都是物理外來鍵,不建議使用
以免資料庫過多造成困擾,這裡了解即可
最佳實踐
2021 02 04建立資料庫中的表
注意點,使用英文 表的名字和字段盡量用 括起來 字串使用單引號括起來 所有的語句後面加英文逗號,最後乙個字段不用加 create table ifnot exists student id int 4 notnull auto increment comment 學號 name varchar 30...
mysql中的編碼 mysql中的編碼
一 mysql中的編碼 mysql show variables like collation mysql show variables like character set 預設是latin1編碼,會導致中文亂碼。修改庫的編碼 mysql alter database db name charac...
mysql中 變數 mysql中的變數
toc 變數 mysql本質是一種程式語言,需要很多變數來儲存資料。mysql中很多的屬性控制都是通過mysql中固有的變數來實現的。系統變數 系統內部定義的變數,系統變數針對所有使用者 mysql客戶端 有效。檢視系統所有變數 show variables like pattern mysql允許...