【D1n910】(7/42)學(xué)習(xí)【MySQL數(shù)據(jù)庫(kù)】C++語言程序設(shè)計(jì) - MySQL數(shù)據(jù)庫(kù)的筆記
正常操作,正常分析,大家好,我是D1N910。
本文是我學(xué)習(xí)【MySQL數(shù)據(jù)庫(kù)】C++語言程序設(shè)計(jì) - MySQL數(shù)據(jù)庫(kù)所做的文字筆記。
之前提要


外鍵約束
????主要用于定義表與表之間的關(guān)系
主表:提供數(shù)據(jù)的表
從表:使用主表中數(shù)據(jù)的表
外鍵字段的值,要么是NULL,要么來自于主表的主鍵
比如
A表表示所有的班級(jí)及班級(jí)的名稱,是主表,有班號(hào)和班級(jí)名稱;
B表表示所有的學(xué)生,是從表,學(xué)生有班號(hào),班號(hào)必須是來自A表中的數(shù)據(jù),或者是為空(用以表示學(xué)生還沒分配班級(jí))。
舉例說明:A表只有班號(hào) 1~3,B表中新來個(gè)學(xué)生,班號(hào)是4,那么就是錯(cuò)了,因?yàn)?號(hào)在A表中不存在。這就是所謂的外鍵約束。B表的班號(hào)被A表的班號(hào)約束了。
語法規(guī)則
示例
將學(xué)生表student的class _no設(shè)置為外鍵,引用classes表中的class _no字段,可以在創(chuàng)建student表時(shí)添加如下SQL語句:
》 現(xiàn)在先是一個(gè)錯(cuò)誤的用法,不添加主鍵的
這時(shí)候報(bào)送沒有index錯(cuò)誤,實(shí)際上就是要加主鍵
下面是正確的,添加了主鍵的
這里限制的是
外鍵字段的值,要么是NULL,要么來自于主表的主鍵
在剛剛創(chuàng)建好的表后插入一串?dāng)?shù)據(jù),其中 c_no 的值對(duì)應(yīng) 1
這時(shí)候報(bào)錯(cuò)了
-- 錯(cuò)誤 違反了外鍵約束 在主表 classes 中不存在 class_no = 1 的班級(jí)
加了以后就可以了。
可以輸入null!
刪表時(shí),需要先刪除子表,然后刪除主表!直接刪除主表會(huì)報(bào)錯(cuò)!
P7?1.4 表結(jié)構(gòu)管理(二)~2
自增長(zhǎng)字段
如果要求數(shù)據(jù)庫(kù)表的某個(gè)字段依次遞增,且不重復(fù),則可以將該字段設(shè)置為自增型字段。
語法:
》字段名 數(shù)據(jù)類型 auto_increment
示例
》將班級(jí)表classes的class_no字段設(shè)置為主鍵,并且設(shè)置為自增型字段,SQL語句如下class_no int auto_increment primary key
自增型字段的數(shù)據(jù)類型必須是整數(shù)。
》向自增型字段插入一個(gè)NULL值 (推薦)或0時(shí),該字段值會(huì)自動(dòng)設(shè)置為比上一次插入值更大的值。如果新增加的記錄時(shí)表中的第一條記錄,則該值為1。
自增型字段必須是主鍵
比如QQ號(hào),每次注冊(cè)一個(gè)新的QQ時(shí),對(duì)應(yīng)的QQ號(hào)段會(huì)++,然后不會(huì)重復(fù)。
當(dāng)然可以自行定義一個(gè)數(shù)字
復(fù)制表結(jié)構(gòu)
在create table語句的末尾添加like子句
》語法
-- create table 表名 like 源表
示例
-- 將student表的表結(jié)構(gòu)復(fù)制成新表stu1,可以使用下面的create table語句:
在create table語句的末尾添加select語句
》語法
create table 表名 select *from 源表
示例
- 將stu1表的表結(jié)構(gòu)及其所有記錄復(fù)制成新表stu2,可以使用下面的create table語句
- create table stu2 select * from stul;
只有非空復(fù)制才能復(fù)制,其他的限制不能夠復(fù)制

基礎(chǔ)現(xiàn)在學(xué)完了,開始做個(gè)課程!
學(xué)習(xí)進(jìn)度
(7/42)學(xué)習(xí)【MySQL數(shù)據(jù)庫(kù)】C++語言程序設(shè)計(jì) - MySQL數(shù)據(jù)庫(kù)的筆記