Mysql學習筆記(二)對表結構的增刪改查

有將近一個星期都沒有更新mysql了。相反linux的東西倒是學習不少。可能我個人情感上對linux更感興趣一點。但mysql我也不煩,只是一旦將精力投入到了一樣事情上去,就很難將精力分散去搞其他的東西。

最近我也調整了學習計劃和健身計劃。以前是每天晚上下班后,運動半個小時到一個小時,現在是晚上早睡,基本上如果沒有特別的安排,10:30是肯定要入睡的。從下班到家,然后抽出二到三個小時學習一下。至于健身,要放在了早上,昨天試驗了一下,早上還是起的來的。5:30起床,跑步半個小時,甚至還有時間去早市吃早餐。

實際上,如果下班不干點自己感興趣的事情,一天也就這么過去了。

mysql的這部分,實際上平時都練習的比較熟悉。本來想要跳過這個章節,后來想到想要將自己的知識組織成為一個系列。即使以后遇到難題了,遺忘了知識點,也可以迅速的從這些筆記中找到答案,迅速的回憶起來。

穩固的知識體系是很重要的,希望我這個好習慣能夠一直的堅持下去。

用于測試的sql代碼和數據:

#班級表?create?table?classes(  ????class_no?int?auto_increment?primary?key,  ????class_name?char(20)?not?null?unique,  ????department_name?char(20)?not?null?)engine=innodb?default?charset=utf8;    #下面是一些測試數據:?insert?into?classes(class_name,department_name)?values?('英語二班','高一英語二班'),  ????('英語三班','高一英語三班'),  ????('英語四班','高一英語四班'),  ????('英語五班','高一英語五班'),  ????('英語六班','高一英語六班'),  ????('數學一班','高一數學一班'),  ????('數學二班','高一數學二班'),  ????('數學三班','高一數學三班'),  ????('數學四班','高一數學四班'),  ????('數學五班','高一數學五班'),  ????('數學六班','高一數學六班'),  ????('語文一班','高一語文一班'),  ????('語文二班','高一語文二班'),  ????('語文三班','高一語文三班'),  ????('語文四班','高一語文四班'),  ????('語文五班','高一語文五班'),  ????('語文六班','高一語文六班');

1、表結構之增、刪、改、插

注意:這里演示以classes表作為基礎。在實際應用中,可以替換成你自己的表名。

原有的表結構如下圖:

?查看表結構以及字段:

? ? ? ? ? ? ?desc ? classes;

Mysql學習筆記(二)對表結構的增刪改查

增加字段:

? ? ? ? ? ? alter table classes add testfield1 varchar(10) not null default ”;

刪除字段:

? ? ? ? ? ? alter table classes drop testfield1;

修改字段名:

    (為了操作方便,再重新加上字段:alter table classes add testfield1 varchar(10) not null default ”;)

? ? ? ? ? ?alter table ?classes change testfield1 ?test varchar(10) not null default ”;

僅修改字段類型:

? ? ? ? ? ?alter table classes modify test chat(10);

modify 和change的作用差不多。區別在于,change是更換字段的名字。而modify只改變該字段的字段類型。

平時使用的使用的時候可以區別使用。

?

2、對表約束的增、刪、改、查。

在工作中經常會遇到給表增加約束,或者刪除約束的狀況。

Mysql學習筆記(二)對表結構的增刪改查

添加約束條件:

? ? ?語法為:alter ?table ?你的表名 ?add constraint ?約束名 ? 約束類型(字段名)

? ? ?alter table classes add constraint myunique unique(class_no);

?

刪除約束條件:

? ? ?刪除約束條件之前我們要清楚的知道自己的表里已經有了那些約束。

? ? ?可以通過 show create table ?表名 G 來顯示。這里的G ?意思是group 的意思(我主觀臆測的)。

? ? ?show create ?table classes G ?注意G后沒有;號。

Mysql學習筆記(二)對表結構的增刪改查

? ? ?要刪除約束條件,還要知道有那些約束條件。

? ? ?約束條件一般有主鍵約束(primary key) 外鍵約束(foreign key) ,唯一索引名(index)

? ? ?這里先簡單的介紹一下什么是外鍵約束,先看看foreign 是什么意思:外來的外國的。也就是說這張表中的這個字段來源與另外一張表,其中的值不能五中生有,必須從另外一 張表中來。

? ? ?更加詳細的介紹,我們看后面的文章。

?刪除主鍵約束:

? ? 語法:alter table 表名 drop primary key.

? ? ?栗子:alter table classes drop primary key.

?刪除外鍵約束:

? ? ? 一張表可以有一個主鍵,但可以有多個外鍵。因此刪除外鍵的時候要刪除當時給外鍵起的那個名字,即約束名。

? ? ? 語法: aleter table 表名 drop foreign key ?約束名;

?刪除唯一約束:

? ? ? 什么是唯一約束:舉個栗子,比如我們的身份證號碼是不會重復的,那么在錄入身份證的過程中我們就會防止由于失誤而錄入重復的身份證號碼。這就是唯一約束。unqiue(獨特的,獨一無二的、稀罕的)。當然了唯一約束一個表也可以有多個的,比如用戶表里可以既有身份證號、也可以有電話號碼。那么我們刪除的時候,也要刪除約束名。

? ? ? 語法:alter table 表名 drop index 約束名。

? ? ??alter table classes drop index class_name;

修改表的其他選項:如修改存儲引擎類型、修改字符集、修改自增初始值。

? ? ? ?修改存儲引擎: ? ?alter table 表名 engine=新存儲引擎;

? ? ? ?修改字符集: ? ? ? alter table 表名 charset=新的字符集;

? ? ? ?修改自增初試值: ?alter table 表名 auto_increment=新的初始值;

?

3、對表名的修改和刪除

? ? ??修改表名雖然很簡單,但是我經常用到。

? ? ? 再項目準備階段、設計數據庫的時候。表名為了更加的方便理解,因此設計上應當盡量的人性化,所以難免有修改表名的時候。

修改表名:

? ? ? alter table ?表名 rename ?新表名。

? ? ? 這里我們區分一下修改表名和修改字段名的區別:alter table 表名 change 原字段 新字段 約束條件;

? ? ? 啰嗦一下:change強調的是數據結構發生改變,而change強調的是表的名字發生了改變,數據本身并不發生變化。因此可見外國人命名的時候還是非常嚴禁的。

刪除表名:

? ? ? ?alter table 表名 ;

? ? ? ?在刪除表的時候。如果該表中存在外鍵,那就會報錯。為什么呢?大家想一想。

? ? ? ?當然刪表對于myisam存儲引擎就不會報錯。這又是為什么呢?

?以上就是Mysql學習筆記(二)對表結構的增刪改查的內容,更多相關內容請關注PHP中文網(www.php.cn)!?

? 版權聲明
THE END
喜歡就支持一下吧
點贊5 分享