資料庫的五個基本單位
資料庫伺服器
資料庫資料表
資料字段
資料行分類
關係型資料庫
oracle
mysql
postgresql
sql server
非關聯式資料庫
redis
mongodb
couchdb
選擇mysql的原因
良好的生態
開源、免費
效能強勁
什麼是sql
sql(structured query language)結構化查詢語言的縮寫,是一種特殊目的的程式語言,是一種資料庫查詢和程式語言,用於儲存資料以及查詢、更新和管理關係型資料庫系統;同時也是資料庫指令碼檔案的副檔名。
2023年,在ibm的聖約瑟研究實驗室研製的大型關聯式資料庫管理系統system r中,使用了sequel語言,後來發展稱為sql語言。
2023年10月,美國國家標準協會對sql進行規範後,以此作為關係式資料庫管理系統的標準語言,2023年得到國際標準組織的支援稱為國際標準。不過各種流行的資料庫系統在其實踐過程中都對sql規範作了某些編改和擴充,所以,實際上不同資料庫系統之間的sql不能完全相互通用。
sql分類
資料定義語言(ddl),例如:create、drop、alter等語句。
資料操作語言(dml),例如:insert、update、delete。
資料查詢語言(dql),例如:select語句。
資料控制語言(dcl),例如:grant、revoke。
資料事務語言(dtl),例如:begin、commit、rollback等語句
資料型別
整型image.png
浮點型別
image.png
浮點是非精確值,會存在不太準確的情況;而decimal叫做定點數,在mysql內部本質上是用字串儲存的。
實際使用過程中如果存在金額、錢精度要求比較高的浮點數儲存,建議使用decimal(定點數)這個型別。
字元型別
image.png
字元型別的區別
1. char型別用於定長字串,並且必須在圓括號內用乙個大小修飾符來定義。這個大小修飾符的範圍從 0-255。比指定長度大的值將被截短,而比指定長度小的值將會用空格作填補。
*2. varchar把這個大小視為值的大小,長度不足的情況下不用空格補足,只使用儲存字串實際需要的長度,但長於指定的值仍然會被截短。
*3. text型別與blob型別對於字段長度要求超過 255 個的情況下,mysql提供了text和blob兩種型別。根據儲存資料的大小,它們都有不同的子型別。這些大型的資料用於儲存文字塊或影象。
*4. binary聲音檔案等二進位制資料型別。
*5. text和blob型別在分類和比較上存在區別。blob型別區分大小寫,而 text不區分大小寫。大小修飾符不用於各種 blob和text子型別。
時間型別
image.png
復合型別
image.png
enum型別
enum 型別因為只允許在集合中取得乙個值,有點類似於單選項。在處理相互排拆的資料時容易讓人理解,比如人類的性別。enum 型別字段可以從集合中取得乙個值或使用null值,除此之外的輸入將會使 mysql 在這個欄位中插入乙個空字串。另外如果插入值的大小寫與集合中值的大小寫不匹配,mysql會自動使用插入值的大小寫轉換成與集合中大小寫一致的值。
enum 型別在系統內部可以儲存為數字,並且從1開始用數字做索引。乙個 enum 型別最多可以包含 65536 個元素,其中乙個元素被 mysql 保留,用來儲存錯誤資訊,這個錯誤值用索引 0 或者乙個空字串表示。
mysql 認為 enum 型別集合**現的值是合法輸入,除此之外其它任何輸入都將失敗。這說明通過搜尋包含空字串或對應數字索引為 0 的行就可以很容易地找到錯誤記錄的位置。
set型別
set 型別與 enum 型別相似但不相同。set型別可以從預定義的集合中取得任意數量的值。並且與 enum 型別相同的是任何試圖在 set 型別欄位中插入非預定義的值都會使mysql插入乙個空字串。如果插入乙個即有合法的元素又有非法的元素的記錄,mysql 將會保留合法的元素,除去非法的元素。
乙個 set 型別最多可以包含 64 項元素。在 set 元素中值被儲存為乙個分離的「位」序列,這些「位」表示與它相對應的元素。「位」是建立有序元素集合的一種簡單而有效的方式。
並且它還去除了重複的元素,所以set型別中不可能包含兩個相同的元素。
希望從 set 型別欄位中找出非法的記錄只需查詢包含空字串或二進位制值為 0 的行。
unsigned
unsigned(無符號) 主要用於整型和浮點型別,使用無符號。即沒有前面面的負號,所有的數都為正數。
儲存位數更長。tinyint整型的取值區間為,-128~127。而使用無符號後可儲存0-255個長度。
建立時在整型字段語句後接上unsigned
zerofull
0(不是空格)可以用來增補輸出的值。使用這個修飾符可以阻止 mysql 資料庫儲存負值。
建立時在整型字段語句後接上zerofill
auto_increment
自動增加,只用於整型,可以設定起始值,預設為1
常與後面primary key一起使用
建立表時在整型欄位後加上:auto_increment=起始值 primary key
修改起始值:alter table user auto_increment=起始值
default
default屬性確保在沒有任何值可用的情況下,賦予某個常量值,這個值必須是常量,因為mysql不允許插入函式或表示式值。
此外,此屬性無法用於blob或text列。如果已經為此列指定了null屬性,沒有指定預設值時預設值將為null,否則預設值將依賴於欄位的資料型別。
建立表時在字段語句後接上:default '值'
not null
如果將乙個列定義為not null,將不允許向該列插入null值。建議在重要情況下始終使用not null屬性,因為它提供了乙個基本驗證,確保已經向查詢傳遞了所有必要的值。
建立時在字段語句後接上:not null
null為列指定null屬性時,該列可以保持為空,而不論行中其它列是否已經被填充。記住,null精確說法是「無」,而不是空字串或0。
資料庫mysql軟體安裝 資料庫軟體mysql安裝
2.解壓至欲安裝的目錄下 3.開啟cmd,進入軟體目錄下d qmdownload mysql 5.7.24 winx64 bin,執行mysqld 4.初始化使用者 cmd d qmdownload mysql 5.7.24 winx64 bin,執行mysqld initialize insecu...
mysql資料庫之python鏈結mysql
使用之前請在命令列pip install pymysql import pymysql 1.建立鏈結 conn pymysql.connect host 127.0.0.1 ip位址 port 3306,埠號 database database name 資料庫名稱 user mysql usern...
mysql資料庫指令碼 mysql匯出資料庫指令碼
from 從資料庫匯出資料庫檔案 1.將資料庫mydb匯出到e mysql mydb.sql檔案中 開啟開始 執行 輸入cmd 進入命令列模式 c mysqldump h localhost u root p mydb e mysql mydb.sql 然後輸入密碼,等待一會匯出就成功了,可以到目標...