mysql設置主鍵的作用是:1、唯一地標識表中的每一行,通過它可強制表的實體完整性;2、主要是用于其他表的外鍵關聯,以及本記錄的修改與刪除。
【相關學習推薦:mysql教程】
mysql設置主鍵的作用是:
1、什么是主鍵
? 數據庫主鍵,指的是一個列或多列的組合,其值能唯一地標識表中的每一行,通過它可強制表的實體完整性。主鍵主要是用于其他表的外鍵關聯,以及本記錄的修改與刪除。
2、主鍵的作用
主鍵是能確定一條記錄的唯一標識,主鍵字段必須唯一,必須非空,一個表中只能有一個主鍵,主鍵可以包含一個或多個字段。
打個比方,一條記錄包括身份正號,姓名,年齡,學校,國籍,性別等。身份證號是唯一能確定你這個人的,其他都可能有重復,所以,身份證號是主鍵。?
3、MySQL創建一張沒有主鍵的表
[root@node110?~]#?mysql?-uroot?-pyinzhengjie mysql:?[Warning]?Using?a?password?on?the?command?line?interface?can?be?insecure. Welcome?to?the?MySQL?monitor.??Commands?end?with?;?or?g. Your?MySQL?connection?id?is?13 Server?version:?8.0.14?MySQL?Community?Server?-?GPL Copyright?(c)?2000,?2019,?Oracle?and/or?its?affiliates.?All?rights?reserved. Oracle?is?a?registered?trademark?of?Oracle?Corporation?and/or?its affiliates.?Other?names?may?be?trademarks?of?their?respective owners. Type?'help;'?or?'h'?for?help.?Type?'c'?to?clear?the?current?input?statement. mysql>? mysql>? mysql>?CREATE?DATABASE?devops?CHARACTER?SET?=?utf8; Query?OK,?1?row?affected,?1?warning?(0.00?sec) mysql>? mysql>? mysql>?use?devops Database?changed mysql>?show?tables; Empty?set?(0.00?sec) mysql>? mysql>?CREATE?TABLE?students(stu_id?INT(11),stu_name?VARCHAR(50),gender?INT(11)); #首先,我們這里只是創建了一張極為普通的表。 Query?OK,?0?rows?affected?(0.01?sec) mysql>? mysql>?INSERT?INTO?students?VALUES(1,'jason',10); #插入第一條數據 Query?OK,?1?row?affected?(0.00?sec) mysql>? mysql>?INSERT?INTO?students?VALUES(2,'danny',20); #插入第二條數據 Query?OK,?1?row?affected?(0.01?sec) mysql>? mysql>?INSERT?INTO?students?VALUES(1,'jenny',30); ?#插入第三條數據,注意!這個id和第一條插入的數據是相同的,別問我為什么這么干,我是故意這樣搞的! Query?OK,?1?row?affected?(0.00?sec) mysql> mysql>?SELECT?*?FROM?students; #我們查詢咱們剛剛插入的三條數據 +--------+----------+--------+ |?stu_id?|?stu_name?|?gender?| +--------+----------+--------+ |??????1?|?jason????|?????10?| |??????2?|?danny????|?????20?| |??????1?|?jenny????|?????30?| +--------+----------+--------+ 3?rows?in?set?(0.00?sec) mysql>
4、創建一張含有主鍵的表(student_primary)
mysql>?CREATE?TABLE?student_primary(stu_id?INT(11)?PRIMARY?KEY?AUTO_INCREMENT,stu_name?VARCHAR(50),gender?INT(11)); #仔細一下這個建表語句,除了和上面的表名不同,我還為stu_id字段加了主鍵屬性,以及自動增長的屬性! Query?OK,?0?rows?affected?(0.01?sec) mysql>? mysql>?INSERT?INTO?student_primary?VALUES(1,'json',10);? #這里我們插入第一條數據 Query?OK,?1?row?affected?(0.00?sec) mysql>? mysql>?INSERT?INTO?student_primary?VALUES(2,'danny',20); #這里我們插入第二條數據 Query?OK,?1?row?affected?(0.01?sec) mysql>? mysql>?INSERT?INTO?student_primary?VALUES(1,'jenny',30);?????? #這里我們插入第三條數據時,報錯啦!提示主鍵重復! ERROR?1062?(23000):?Duplicate?entry?'1'?for?key?'PRIMARY' mysql>? mysql>? mysql>?SELECT?*?FROM?student_primary; #我們查看表中的數據,果不其然,只有兩條數據!第三條數據沒有被插入進來,因為它不符合我們定義的主鍵規則!主鍵必須唯一且非空! +--------+----------+--------+ |?stu_id?|?stu_name?|?gender?| +--------+----------+--------+ |??????1?|?json?????|?????10?| |??????2?|?danny????|?????20?| +--------+----------+--------+ 2?rows?in?set?(0.00?sec) mysql>
5、在創建一張含有主鍵的表(course)
mysql>?CREATE?TABLE?course(id?INT(11)?PRIMARY?KEY?AUTO_INCREMENT,course_name?VARCHAR(30)); Query?OK,?0?rows?affected?(0.02?sec) mysql>? mysql>?INSERT?INTO?course?VALUES(1,'Chinese');? #插入第一條數據 Query?OK,?1?row?affected?(0.01?sec) mysql>? mysql>?INSERT?INTO?course?VALUES(2,'English');? Query?OK,?1?row?affected?(0.00?sec) mysql>?INSERT?INTO?course?VALUES(3,'Mathematics'),(4,'Physics'),(5,'Chemistry'),(6,'Biology'); #咱們可以同時插入多條數據 Query?OK,?4?rows?affected?(0.01?sec) Records:?4??Duplicates:?0??Warnings:?0 mysql>? mysql>?SELECT?*?FROM?course; +----+-------------+ |?id?|?course_name?| +----+-------------+ |??1?|?Chinese?????| |??2?|?English?????| |??3?|?Mathematics?| |??4?|?Physics?????| |??5?|?Chemistry???| |??6?|?Biology?????| +----+-------------+ 6?rows?in?set?(0.00?sec) mysql>
? 版權聲明
文章版權歸作者所有,未經允許請勿轉載。
THE END
喜歡就支持一下吧
相關推薦