學了不少亂七雜八的東西,可是依然停留在前端,在工做中一直和後端交流,可是不太瞭解數據庫是怎麼回事,爲了增強學習,準備學習一些關於數據庫相關的東西。html
提及數據庫可能會有不少不少,SQLServer
、Oracle
、Sybase
等等等,還有就是要學習MySql
,說了這麼多數據庫這些都是關係型數據庫
。既然有關係型數據庫
天然也就會有非關係型數據
,好比Neo4j
、MongodDB
、Cloudant
等等等這些也就都屬於非關係型
數據庫,非關係型數據庫
又被稱爲nosql
。前端
非關係型數據庫與關係型數據庫對比
什麼是關係型數據庫,什麼是非關係型數據庫二者之間又有什麼區別呢?mysql
非關係型數據庫
性能NOSQL
是基於鍵值對的,能夠想象成表中的主鍵和值的對應關係,並且不須要通過SQL
層的解析,因此性能很是高。可擴展性一樣shouce也是由於基於鍵值對,數據之間沒有耦合性,因此很是容易水平擴展。web
優點
nosql
數據庫簡單易部署,基本都是開源軟件,不須要像使用oracle
那樣花費大量成本購買使用,相比關係型數據庫價格便宜。nosql
數據庫將數據存儲於緩存之中,關係型數據庫將數據存儲在硬盤中,天然查詢速度遠不及nosql
數據庫。nosql
的存儲格式是key
,value
形式、文檔形式、圖片形式等等,因此能夠存儲基礎類型以及對象或者是集合等各類格式,而數據庫則只支持基礎類型
。劣勢
nosql
是屬於新的技術,不能和關係型數據庫10幾年的技術同日而語。sql
的支持,若是不支持sql
這樣的工業標準,將產生必定用戶的學習和使用成本。關係型數據庫
關係型數據庫對於複雜查詢能夠用SQL
語句方便的在一個表以及多個表之間作很是複雜的數據查詢。事務支持使得對於安全性能很高的數據訪問要求得以實現。sql
優點
劣勢
對於這兩類數據庫,對方的優點就是本身的弱勢,反過來也是如此。數據庫
MySql安裝
在Windows
上安裝Mysql
仍是比較簡單的,去Mysql
官網去如今zip
包就行了。下載完包以後把包解壓到想要存放的存儲盤內。後端
Mysql
有提供安裝版本,下載好以後安裝就能使用了,若是下載zip
包解壓後須要進行配置,比較麻煩,網上也有不少教程。緩存
而後打開剛剛解壓的文件夾,在文件夾下面有一個my.ini
配置文件。安全
MySql
的配置與咱們平時學習的語言不太同樣,MySql
在配置過程當中有兩點須要注意:服務器
-
與_
是等價的[mysql] # 設置mysql客戶端默認字符集 default-character-set=utf8 [mysqld] # 設置3306端口 port = 3306 # 設置mysql的安裝目錄 basedir=C:\\web\\mysql-8.0.11 # 設置 mysql數據庫的數據的存放目錄,MySQL 8+ 不須要如下配置,系統本身生成便可,不然有可能報錯 # datadir=C:\\web\\sqldata # 容許最大鏈接數 max_connections=20 # 服務端使用的字符集默認爲8比特編碼的latin1字符集 character-set-server=utf8 # 建立新表時將使用的默認存儲引擎 default-storage-engine=INNODB
根據以上內容更改配置就行了,並添加環境變量。這裏安裝就不詳細介紹了。
MySql服務管理
MySQL
在服務中提供了一些對MySQL
管理的一些命令工具。
設置管理員密碼
./bin/mysqladmin -u root password "root123";
mysqladmin
是執行不少關於MySQL
的一些管理的工做,一樣也是在命令行裏面去執行的。執行上面的命令,就會爲root
用戶建立一個密碼。
啓動服務
./bin/mysqld_safe & # ./bin/mysqld &
啓動服務的時候是使用mysqld_safe
這個命令的,實際上mysqld_safe
是一個腳本,他會管理mysqld
進程進行管理,一旦mysqld
由於異常致使程序崩潰的話mysqld_safe
會重啓一下MySQL
服務。
中止服務
./bin/mysqladmin shutdown # kill -9 $mysqld_pid // 重啓服務 # kill $mysqld_pid
使用kill $mysqld_pid
命名會中止mysql服務,包括mysqld_safe
也會中止。
還有不少關於MySql
服務管理的命令,這裏就不一一贅述了,單獨出一篇文章對其進一步介紹。
MySql可視化工具
安裝完數據庫以後須要安裝可視化工具,方便查看數據庫內容,以及方便建立數據庫和刪除數據數據庫等操做。
想要可視化MySQL
須要藉助Nacicat
,網上有不少破解版能夠隨便下載一個。Nacicat使用手冊。
下載安裝好以後能夠與數據庫作鏈接,使用方法也很簡單。
MySql語法規範
MySql
數據庫屬於關聯型數據庫,須要使用Sql
語句對錶數據進行查詢。一個數據庫一般包含一個或多個表。每一個表由一個名字標識。表包含帶有數據的記錄(行)。Sql
語句對大小寫不敏感,可是仍是建議全部的Sql
語句使用大寫,查詢條件與表名用小寫,這樣方便區分哪些是Sql
語句哪些是查詢條件。
在MySql
系統要求在每條 SQL 命令的末端使用分號。分號是在數據庫系統中分隔每條Sql
語句的標準方法,這樣就能夠在對服務器的相同請求中執行一條以上的語句。
MySql數據類型
數值類型
整數型
類型 | 大小 | 範圍(有符號) | 範圍(無符號) | 用途 |
---|---|---|---|---|
TINYINT | 1 字節 | (-128,127) | (0,255) | 小整數值 |
SMALLINT | 2 字節 | (-32 768,32 767) | (0,65 535) | 大整數值 |
MEDIUMINT | 3 字節 | (-8 388 608,8 388 607) | (0,16 777 215) | 大整數值 |
INT或INTEGER | 4 字節 | (-2 147 483 648,2 147 483 647) | (0,4 294 967 295) | 大整數值 |
BIGINT | 8 字節 | (-9,223,372,036,854,775,808,9 223 372 036 854 775 807) | (0,18 446 744 073 709 551 615) | 極大整數值 |
浮點型
類型 | 大小 | 範圍(有符號) | 範圍(無符號) | 用途 |
---|---|---|---|---|
FLOAT | 4 字節 | (-3.402 823 466 E+38,-1.175 494 351 E-38),0,(1.175 494 351 E-38,3.402 823 466 351 E+38) | 0,(1.175 494 351 E-38,3.402 823 466 E+38) | 單精度,浮點數值 |
DOUBLE | 8 字節 | (-1.797 693 134 862 315 7 E+308,-2.225 073 858 507 201 4 E-308),0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308) | 0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308) | 雙精度,浮點數值 |
DECIMAL | 對DECIMAL(M,D) ,若是M>D,爲M+2不然爲D+2 | 依賴於M和D的值 | 依賴於M和D的值 | 小數值 |
設一個字段定義爲 float(5,3),若是插入一個數 123.45678,實際數據庫裏存的是 123.457,但總個數還以實際爲準,即 6 位。
日期和時間類型
注:每一個時間類型有一個有效值範圍和一個"零"值,當指定不合法的MySQL不能表示的值時使用"零"值。
類型 | 大小 | 範圍 | 格式 | 用途 |
---|---|---|---|---|
DATE | 3 字節 | 1000-01-01/9999-12-31 | YYYY-MM-DD | 日期值 |
TIME | 3 字節 | '-838:59:59'/'838:59:59' | HH:MM:SS | 時間值或持續時間 |
YEAR | 1 字節 | 1901/2155 | YYYY-MM-DD HH:MM:SS | 混合日期和時間值 |
DATETIME | 8 字節 | 1000-01-01 00:00:00/9999-12-31 23:59:59 | YYYY-MM-DD HH:MM:SS | 混合日期和時間值 |
TIMESTAMP | 4 字節 | 1970-01-01 00:00:00/2038 結束時間是第 2147483647 秒,北京時間 2038-1-19 11:14:07,格林尼治時間 2038年1月19日 凌晨 03:14:07 | YYYYMMDD HHMMSS | 混合日期和時間值,時間戳 |
若定義一個字段爲timestamp,這個字段裏的時間數據會隨其餘字段修改的時候自動刷新,因此這個數據類型的字段能夠存放這條記錄最後被修改的時間。
字符串類型
類型 | 大小 | 用途 |
---|---|---|
CHAR | 0-255字節 | 定長字符串 |
VARCHAR | 0-65535 字節 | 變長字符串 |
TINYBLOB | 0-255字節 | 不超過 255 個字符的二進制字符串 |
TINYTEXT | 0-255字節 | 短文本字符串 |
BLOB | 0-65 535字節 | 二進制形式的長文本數據 |
TEXT | 0-65 535字節 | 長文本數據 |
MEDIUMBLOB | 0-16 777 215字節 | 二進制形式的中等長度文本數據 |
MEDIUMTEXT | 0-16 777 215字節 | 中等長度文本數據 |
LONGBLOB | 0-4 294 967 295字節 | 二進制形式的極大文本數據 |
LONGTEXT | 0-4 294 967 295字節 | 極大文本數據 |
char和varchar:
varchar 和 text:
總結
MySql
數據關聯型數據庫,使用Sql
語句對數據庫進行操做。Sql
語句不區分大小寫,不管是關聯型數據庫仍是非關聯型數據庫都各有優缺點。
在使用MySql
建立表時,須要多注意數據格式,會給數據庫查詢帶來一些性能的提高。
注:數據庫中若是使用大量索引,雖然查詢很快,可是會形成寫入過慢的狀況,使用的時候要稍加慎重。