《PHP和MySQL Web 開發》 第9章 創建Web數據庫 (9.8-9.10)

LCL WARNING

  1. 這是我學習《PHP和MySQL Web 開發》的讀書筆記,一些重要的知識點我會記錄下來,當然只會寫我覺得重要的。

  2. 如果有幸有人看到這個學習筆記了,你要結合着書看,不要光看這個筆記。

  3. 在筆記裏我會記錄一些我學習中遇到的問題和解決辦法與注意事項。

  4. 爲了方便管理和查找,文章或者說筆記的目錄我就按照書裏的排了,方便對比着看。

  5. 不是教學!重要的是說一遍!我是PHP和MySQL 的初學者,我本身是個前端,爲了面向工資編程,拓寬知識面才學的。

  6. 其實還是有一些私心得,因爲都說教學相長 和 小黃鴨調試法,我這個是小老虎學習法,對着小老虎講知識點,保證自己學的紮實,能掙錢。

  7. 歡迎探討和指教,須知一山更比一山高,但是拒絕槓精!

前情提要

《PHP和MySQL Web 開發》 第8章 設計Web數據庫 (8.1)

《PHP和MySQL Web 開發》 第8章 設計Web數據庫 (8.2)

《PHP和MySQL Web 開發》 第9章 創建Web數據庫 (9.1-9.7)

 

李重樓

9.8創建數據庫表

create table tablename;

創建表的常見形式(命令)就是這樣的,翻譯成中文就是 創建表 表名。呃,好像翻譯不翻譯沒啥大區別。

create table tablename (columns);

這段代碼是和書中一模一樣的,其中 columns 就是你在創建數據庫時同時創建的列,看例子是怎麼用的。

創建數據庫大致分兩種,一是先創建數據庫,然後向數據庫內插入列,另一種就是創建數據庫時同時指定數據庫的列,這個看個人喜好吧

書中給了bookorama.sql 的程序清單,我推薦你手動輸入敲一遍。

熟悉下碼感。我學到這的時候真的敲的錯誤百出~所以你也敲敲看,我最近才頓悟,作爲一個程序員,要擁抱錯誤,漠視警告。

敲的時候仔細看,首先看錶的模式,看着表模式,能夠知道哪個是主鍵,外鍵,列名字段嗎?是不是都忘了?忘了回去翻書,再看一遍。然後對應的着代碼敲,敲的時候你會發現有好多不認識的,沒關係,你就按照書中代碼敲,別懷疑,一直敲,敲完後面會講你不認識的都是啥的。

我決定了,以後囉嗦的話用綠色標出來,重點才用紅色。話說,看到這個顏色,你有沒有想起你的前女友?

如果你成功創建了一個數據表,你可以輸入如下命令,查看數據表,注意:tables 要加S!!!!

show tables;

輸出的數據表是這樣的:

+-----------------+
| Tables_in_books |
+-----------------+
| customers       |
+-----------------+

這個是第一個數據表,customers 顧客表, 注意表頭,寫的是 Tables_in_books  意思是 在books 數據庫中的表,不是書在桌子上!

 

9.8.1理解其他關鍵字的意思

其實你在敲命令,創建數據表的時候,應該看完這一節的纔對,包括下一節。沒看也沒關係,現在看,然後結合着前面理解。

NOT NULL 的意思是表中所有行的此屬性必須有一個值。

這裏是從行(記錄)角度說的,其實從列角度說就是此列對應的輸入不得爲 NULL,結合後面一句看“如果沒指定,該列可以爲空(NULL)”。

有點懵逼?沒關係,我給你解釋。

先理解一個概念,空值,它也是。只不過該爲空。(var a=''; var b=null; a!=b//true; js代碼,看明白沒?

NOT NULL 的意思是表中所有行的此屬性必須有一個,這個可以是你主動輸入的123,什麼的,也可以是

但不能是NULL,因爲NULL這個值,是沒有主動指定NOT NULL時填充進去的。

媽蛋,我寫完了,也搜到解釋了,如果我上述表述不清晰,可查看:MySQL null與not null和null與空值''的區別 。

 

AUTO_INCREMENT  書中已經說的很明白了,我介紹一下課外知識吧。

increment 讀作 [ˈɪnkrəmənt, ˈɪŋ-]  增量 的意思,auto_increment自動增量的意思,也可叫自增量

還有一條是:指定 AUTO_INCREMENT 的列必須是索引列。

(書中貌似對什麼是索引沒有解釋,這是我搜索到的索引解釋:索引用於快速找出在某個列中有一特定值的行,不使用索引,MySQL必須從第一條記錄開始讀完整個表,直到找出相關的行,表越大,查詢數據所花費的時間就越多,如果表中查詢的列有一個索引,MySQL能夠快速到達一個位置去搜索數據文件,而不必查看所有數據,那麼將會節省很大一部分時間。

例如:有一張person表,其中有2W條記錄,記錄着2W個人的信息。有一個Phone的字段記錄每個人的電話號碼,現在想要查詢出電話號碼爲xxxx的人的信息。

如果沒有索引,那麼將從表中第一條記錄一條條往下遍歷,直到找到該條信息爲止。

如果有了索引,那麼會將該Phone字段,通過一定的方法進行存儲,好讓查詢該字段上的信息時,能夠快速找到對應的數據,而不必在遍歷2W條數據了。其中MySQL中的索引的存儲類型有兩種:BTREE、HASH。 也就是用樹或者Hash值來存儲該字段,要知道其中詳細是如何查找的,就需要會算法的知識了。我們現在只需要知道索引的作用,功能是什麼就行。全文請查看:MySQL中的索引詳講

 

9.8.2理解列類型

現在是2018年7月30日13:27 我收回之前吹牛B說七月底寫完筆記的的話,上手寫的時候我才發現自己的無知,之前很多覺得會了的,當要寫筆記的時候,才發現模棱兩可,表述不清,所以一直在閱讀展開相關知識帶你,還有就是我懶...我爭取8月份寫完筆記。。。

主要寫的是列數據類型,整節的數據類型如下:

  • unsigned 無符號的
  • char  字符串數據類型。是指使用指定固定長度表示的字符串,比如char(8),則數據庫會使用固定的1個字節(八位)來存儲數據,不足8位的字符串在其後補空字符。
  • amount 浮點類型數據(float)類型。如果你之前沒有接觸過數據類型,你可以暫且記爲包含小數點的數字類型
  • Date 日期數據類型。這個不解釋了。
  • text 字符串數據類型。但是這個用於長文本,如文章什麼的。

9.8.3用show和describe來查看數據庫

這個之前說過了。再來一遍吧。

查看數據庫(databases 注意加S)

show databases;

使用數據庫 (目前可使用的是books,use books;)

use dbname;

查看數據表(記得加s)

show tables;

輸入完了你會看到如下數據表的,再次注意看表頭Tables_in_books ,顯示當前的數據表是在哪個數據庫。

+-----------------+
| Tables_in_books |
+-----------------+
| book_reviews    |
| books           |
| course          |
| customers       |
| order_items     |
| orders          |
+-----------------+

 

查看某個特定表的詳細信息.(書中舉例說明的是books 表,是books數據庫中的books表,別搞混亂了啊。)

describe tablename;

我也顯示了一下:

+--------+------------+------+-----+---------+-------+
| Field  | Type       | Null | Key | Default | Extra |
+--------+------------+------+-----+---------+-------+
| isbn   | char(13)   | NO   | PRI | NULL    |       |
| author | char(50)   | NO   |     | NULL    |       |
| title  | char(100)  | NO   |     | NULL    |       |
| price  | float(4,2) | NO   |     | NULL    |       |
+--------+------------+------+-----+---------+-------+

 

9.8.4創建索引

這裏的內容略過了,我就不寫我筆記了,因爲我沒啥可記的。推薦查看我上文提到過的文章:MySQL中的索引詳講。你先了解原理就行,具體操作先不必上手,專心看書。

 

9.9理解MySQL的標識符

略。

9.10選擇列數據類型

MySQL中3種基本的列數據類型:數字,日期和時間、字符串。

一般來說,選擇列數據類型的時候,基本原則是選擇可以滿足數據的最小類型

 

9.10.1數字類型

數字類型分爲整型浮點型兩類。

我只能用我淺薄的小學數學水平,狹隘的解釋一下這兩類了。

整型:整數,正整數負整數都是整型,不包含小數點的。

浮點型:就是小數,是不是浮點型,就看有沒有小數點就行了。

然後看錶9-5,9-6吧。

 

9.10.2日期和時間類型

唯一值得提的是TIMESTAMP類型。因爲它有兩個特性:

1.不手動指定時,TIMESTAMP列將被設置爲最近修改該行的日期和時間。(設想一下這個特性能做什麼?)。

2.它有多種的可顯示類型,參見表9-8。

 

9.10.3字符串類型

字符串類型分了三大類,其中第二類爲text和blob類型。

BLOB全稱爲大二進制對象。它支持任何數據,例如,圖像或聲音數據。

 

 

數據庫三大類型介紹完畢了,是不是覺得很多很繁瑣記不清?

其實很好記得,同一類型,比如說字符串類型,它很多的類型都是對當前類型的描述,長文本類型(langtext),中等文本類型(mediumtext),小文本類型(tinytext)。其實都是對一種類型,不同範圍的描述。如果你這麼理解了,就容易記得多了,可參看MySQL 數據類型文檔。

我其實根本就沒記,主要的類型我還記了的,隨用隨查,用的多了自然就記着了。

 

結語:

回想第八章,我們學習了數據庫的基本知識,學習了是麼是表格,列,行(記錄),值,鍵(主鍵/外鍵)

學習了關係數據庫的都是啥關係?一對一,一對多,多對多

學習了數據庫的基本設計規範(三個不規則)。

什麼是原子列?還擴展的學習了第一二三範式

web數據庫的架構

 第九章的內容是實踐偏結合,學習瞭如何登陸,創建數據庫,創建用戶,設置用戶權限

學習了數據表的創建,查看,關鍵字都是什麼意思。擴展了學習了一下索引列的三大數據類型

說起來沒多少,如果你也是一步一步看過來,並且還保證自己學會理解,還是很多的。努力吧,我也在學習。在此之前,我對數據庫只有個簡單的認識與瞭解,學習完這兩章之後。對數據庫也是有個粗淺的瞭解了,共同學習,共同進步,爲了愛我的人,和我愛的人,努力學習掙錢花。

請看下集:

《PHP和MySQL Web 開發》 第10章 使用Web數據庫 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章