有將近一個星期都沒有更新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 change testfield1 test varchar(10) not null default '';
只修改字段類型:
alter table classes modify test chat(10);差別在於,change是更換字段的名字。而modify只改變該欄位的欄位類型。
平常使用的使用的時候可以區別使用。
2、對錶約束的增加、刪除、更改、檢查。
在工作中經常會遇到給表增加約束,或刪除約束的狀況。
新增約束條件: 語法為:alter table 你的表名 add constraint 約束名稱 約束類型(字段名稱) conhio 約束名
要刪除限制條件,還要知道有那些限制條件。
約束條件一般有主鍵約束(primary key) 外鍵約束(foreign key) ,唯一索引名(index)
這裡先簡單的介紹一下什麼是外鍵約束,先看看foreign 是什麼意思:外來的介紹一下什麼是外鍵約束,先看看foreign 是什麼意思:外來的外國的。也就是說這張表中的這個欄位來源與另外一張表,其中的值不能五中生有,必須從另外一 張表中來。
更詳細的介紹,我們看後面的文章。
什麼是唯一約束:舉個栗子,例如我們的身分證號碼是不會重複的,那麼在輸入身分證的過程中我們就會防止因失誤而錄入重複的身分證號碼。這就是唯一約束。 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)!

MySQL使用的是GPL許可證。 1)GPL許可證允許自由使用、修改和分發MySQL,但修改後的分發需遵循GPL。 2)商業許可證可避免公開修改,適合需要保密的商業應用。

選擇InnoDB而不是MyISAM的情況包括:1)需要事務支持,2)高並發環境,3)需要高數據一致性;反之,選擇MyISAM的情況包括:1)主要是讀操作,2)不需要事務支持。 InnoDB適合需要高數據一致性和事務處理的應用,如電商平台,而MyISAM適合讀密集型且無需事務的應用,如博客系統。

在MySQL中,外鍵的作用是建立表與表之間的關係,確保數據的一致性和完整性。外鍵通過引用完整性檢查和級聯操作維護數據的有效性,使用時需注意性能優化和避免常見錯誤。

MySQL中有四種主要的索引類型:B-Tree索引、哈希索引、全文索引和空間索引。 1.B-Tree索引適用於範圍查詢、排序和分組,適合在employees表的name列上創建。 2.哈希索引適用於等值查詢,適合在MEMORY存儲引擎的hash_table表的id列上創建。 3.全文索引用於文本搜索,適合在articles表的content列上創建。 4.空間索引用於地理空間查詢,適合在locations表的geom列上創建。

toCreateAnIndexinMysql,usethecReateIndexStatement.1)forasingLecolumn,使用“ createIndexIdx_lastNameEnemployees(lastName); 2)foracompositeIndex,使用“ createIndexIndexIndexIndexIndexDx_nameOmplayees(lastName,firstName,firstName);” 3)forauniqe instex,creationexexexexex,

MySQL和SQLite的主要區別在於設計理念和使用場景:1.MySQL適用於大型應用和企業級解決方案,支持高性能和高並發;2.SQLite適合移動應用和桌面軟件,輕量級且易於嵌入。

MySQL中的索引是數據庫表中一列或多列的有序結構,用於加速數據檢索。 1)索引通過減少掃描數據量提升查詢速度。 2)B-Tree索引利用平衡樹結構,適合範圍查詢和排序。 3)創建索引使用CREATEINDEX語句,如CREATEINDEXidx_customer_idONorders(customer_id)。 4)複合索引可優化多列查詢,如CREATEINDEXidx_customer_orderONorders(customer_id,order_date)。 5)使用EXPLAIN分析查詢計劃,避

在MySQL中使用事務可以確保數據一致性。 1)通過STARTTRANSACTION開始事務,執行SQL操作後用COMMIT提交或ROLLBACK回滾。 2)使用SAVEPOINT可以設置保存點,允許部分回滾。 3)性能優化建議包括縮短事務時間、避免大規模查詢和合理使用隔離級別。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

SublimeText3 Linux新版
SublimeText3 Linux最新版

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

Atom編輯器mac版下載
最受歡迎的的開源編輯器

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能

禪工作室 13.0.1
強大的PHP整合開發環境