有將近一個星期都沒有更新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; classes add testfield1 varchar(10) not null default '';
刪除欄位:
alter table classes drop testfield1;修改欄位名稱: (為了操作方便, (為了操作方便,再增加欄位:alter table classes change testfield1 test varchar(10) not null default '';
只修改字段類型:
alter table classes modify test chat(10);差別在於,change是更換字段的名字。而modify只改變該欄位的欄位類型。
平常使用的使用的時候可以區別使用。
2、對錶約束的增加、刪除、更改、檢查。
在工作中經常會遇到給表增加約束,或刪除約束的狀況。
新增約束條件: 語法為:alter table 你的表名 add constraint 約束名稱 約束類型(字段名稱) conhio 約束名刪除約束條件: 刪除限制條件之前我們要清楚的知道自己的表裡已經有了那些限制。 可以透過 show create table 表名 G 來顯示。這裡的G 意思是group 的意思(我主觀臆測的)。 show create table classes G 注意G後面沒有;號碼。
要刪除限制條件,還要知道有那些限制條件。
約束條件一般有主鍵約束(primary key) 外鍵約束(foreign key) ,唯一索引名(index)
這裡先簡單的介紹一下什麼是外鍵約束,先看看foreign 是什麼意思:外來的介紹一下什麼是外鍵約束,先看看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表名auto_increment=新的初始值;
3、對錶名的修改和刪除
修改表名雖然很簡單,但是我常用到。
再專案準備階段、設計資料庫的時候。表名為了更方便的理解,因此設計上應當盡量的人性化,所以難免有修改表名的時候。
修改表名:
alter table 表名 rename 新表名。
這裡我們區分修改表名和修改字段名的區別:alter table 表名change 原字段新字段約束條件;
囉嗦了改變,數據本身並不改變。因此可見外國人命名的時候還是非常嚴禁的。
刪除表名:
alter table 表名 ;
在刪除表中的時候。如果該表中存在外鍵,那就會報錯。為什麼呢?大家想一想。
當然刪除表不會以myisam儲存引擎回報。這又是為什麼呢?
以上就是Mysql學習筆記(二)對錶結構的增刪改查的內容,更多相關內容請關注PHP中文網(www.php.cn)!