教做湘菜的視頻網(wǎng)站可靠的網(wǎng)站優(yōu)化
1. 數(shù)據(jù)庫(kù)基礎(chǔ)(重點(diǎn))
1.1 什么是數(shù)據(jù)庫(kù)
存儲(chǔ)數(shù)據(jù)用文件就可以了,為什么還要弄個(gè)數(shù)據(jù)庫(kù)?
文件保存數(shù)據(jù)有以下幾個(gè)缺點(diǎn):
文件的安全性問題
文件不利于數(shù)據(jù)查詢和管理
文件不利于存儲(chǔ)海量數(shù)據(jù)
文件在程序中控制不方便
數(shù)據(jù)庫(kù)存儲(chǔ)介質(zhì):
磁盤
內(nèi)存
為了解決上述問題,專家們?cè)O(shè)計(jì)出更加利于管理數(shù)據(jù)的東西——數(shù)據(jù)庫(kù),它能更有效的管理數(shù)據(jù)。數(shù)據(jù)庫(kù)的水平是衡量一個(gè)程序員水平的重要指標(biāo)。
1.2 主流數(shù)據(jù)庫(kù)
SQL Sever: 微軟的產(chǎn)品,.Net程序員的最愛,中大型項(xiàng)目。
Oracle: 甲骨文產(chǎn)品,適合大型項(xiàng)目,復(fù)雜的業(yè)務(wù)邏輯,并發(fā)一般來(lái)說(shuō)不如MySQL。
MySQL:世界上最受歡迎的數(shù)據(jù)庫(kù),屬于甲骨文,并發(fā)性好,不適合做復(fù)雜的業(yè)務(wù)。主要用在電商,SNS,論壇。對(duì)簡(jiǎn)單的SQL處理效果好。
PostgreSQL :加州大學(xué)伯克利分校計(jì)算機(jī)系開發(fā)的關(guān)系型數(shù)據(jù)庫(kù),不管是私用,商用,還是學(xué)術(shù)研究使用,可以免費(fèi)使用,修改和分發(fā)。
SQLite: 是一款輕型的數(shù)據(jù)庫(kù),是遵守ACID的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),它包含在一個(gè)相對(duì)小的C庫(kù)中。它的設(shè)計(jì)目標(biāo)是嵌入式的,而且目前已經(jīng)在很多嵌入式產(chǎn)品中使用了它,它占用資源非常的低,在嵌入式設(shè)備中,可能只需要幾百K的內(nèi)存就夠了。
H2: 是一個(gè)用Java開發(fā)的嵌入式數(shù)據(jù)庫(kù),它本身只是一個(gè)類庫(kù),可以直接嵌入到應(yīng)用項(xiàng)目中。
以上的這些數(shù)據(jù)庫(kù)都是屬于關(guān)系型數(shù)據(jù)庫(kù),還有一種非關(guān)系型數(shù)據(jù)庫(kù)NoSQL, 例如:MongoDB,Redis等。
1.3 基本使用
1.3.1 連接服務(wù)器
輸入:mysql -h 127.0.0.1 -P 3306 -u root -p
輸出:
登錄成功
注意:
如果沒有寫 -h 127.0.0.1 默認(rèn)是連接本地
如果沒有寫 -P 3306 默認(rèn)是連接3306端口號(hào)、
1.3.2 服務(wù)器管理
在Windows操作系統(tǒng)上執(zhí)行以下操作:
- 執(zhí)行 win+r 輸入 services.msc 打開服務(wù)管理器
- 通過(guò)下圖左側(cè)停止,暫停,重啟動(dòng)按鈕進(jìn)行服務(wù)管理
1.3.3 服務(wù)器,數(shù)據(jù)庫(kù),表關(guān)系
所謂安裝數(shù)據(jù)庫(kù)服務(wù)器,只是在機(jī)器上安裝了一個(gè)數(shù)據(jù)庫(kù)管理系統(tǒng)程序,這個(gè)管理程序可以管理多個(gè)數(shù)據(jù)庫(kù),一般開發(fā)人員會(huì)針對(duì)每一個(gè)應(yīng)用創(chuàng)建一個(gè)數(shù)據(jù)庫(kù)。
為保存應(yīng)用中實(shí)體的數(shù)據(jù),一般會(huì)在數(shù)據(jù)庫(kù)中創(chuàng)建多個(gè)表,以保存程序中實(shí)體的數(shù)據(jù)。
數(shù)據(jù)庫(kù)服務(wù)器、數(shù)據(jù)庫(kù)和表的關(guān)系如下:
1.3.4 使用案例
- 創(chuàng)建數(shù)據(jù)庫(kù)
create database helloworld;
- 使用數(shù)據(jù)庫(kù)
use helloworld;
- 創(chuàng)建數(shù)據(jù)庫(kù)表
mysql> create table student(-> name varchar(20),-> age int,-> gender varchar(2)-> );
Query OK, 0 rows affected (0.01 sec)
4. 表中插入數(shù)據(jù)
mysql> insert into student (name, age, gender) values ('張三', 17, '男');
Query OK, 1 row affected (0.01 sec)mysql> insert into student (name, age, gender) values ('李四', 20, '男');
Query OK, 1 row affected (0.00 sec)mysql> insert into student (name, age, gender) values ('王五', 20, '女');
Query OK, 1 row affected (0.00 sec)
查詢表中的數(shù)據(jù)
mysql> select * from student;
+--------+------+--------+
| name | age | gender |
+--------+------+--------+
| 張三 | 17 | 男 |
| 李四 | 20 | 男 |
| 王五 | 20 | 女 |
+--------+------+--------+
3 rows in set (0.00 sec)
1.3.4 服務(wù)器,數(shù)據(jù)庫(kù),表關(guān)系
所謂安裝數(shù)據(jù)庫(kù)服務(wù)器,只是在機(jī)器上安裝了一個(gè)數(shù)據(jù)庫(kù)管理系統(tǒng)程序,這個(gè)管理程序可以管理多個(gè)數(shù)據(jù)庫(kù),一般開發(fā)人員會(huì)針對(duì)每一個(gè)應(yīng)用創(chuàng)建一個(gè)數(shù)據(jù)庫(kù)。
為保存應(yīng)用中實(shí)體的數(shù)據(jù),一般會(huì)在數(shù)據(jù)庫(kù)中創(chuàng)建多個(gè)表,以保存程序中實(shí)體的數(shù)據(jù)。
數(shù)據(jù)庫(kù)服務(wù)器、數(shù)據(jù)庫(kù)和表的關(guān)系如下:
1.3.6 數(shù)據(jù)邏輯存儲(chǔ)
1.4 MySQL架構(gòu)
MySQL 是一個(gè)可移植的數(shù)據(jù)庫(kù),幾乎能在當(dāng)前所有的操作系統(tǒng)上運(yùn)行,如 Unix/Linux、Windows、Mac 和 Solaris。各種系統(tǒng)在底層實(shí)現(xiàn)方面各有不同,但是 MySQL 基本上能保證在各個(gè)平臺(tái)上的物理體系結(jié)構(gòu)的一致性。
1.5 SQL分類
DDL【data definition language】 數(shù)據(jù)定義語(yǔ)言,用來(lái)維護(hù)存儲(chǔ)數(shù)據(jù)的結(jié)構(gòu)
代表指令: create, drop, alter
DML【data manipulation language】 數(shù)據(jù)操縱語(yǔ)言,用來(lái)對(duì)數(shù)據(jù)進(jìn)行操作
代表指令: insert,delete,update
DML中又單獨(dú)分了一個(gè)DQL,數(shù)據(jù)查詢語(yǔ)言,代表指令: select
DCL【Data Control Language】 數(shù)據(jù)控制語(yǔ)言,主要負(fù)責(zé)權(quán)限管理和事務(wù)
代表指令: grant,revoke,commit
1.6 存儲(chǔ)引擎
1.6.1 存儲(chǔ)引擎
存儲(chǔ)引擎是:數(shù)據(jù)庫(kù)管理系統(tǒng)如何存儲(chǔ)數(shù)據(jù)、如何為存儲(chǔ)的數(shù)據(jù)建立索引和如何更新、查詢數(shù)據(jù)等技術(shù)的實(shí)現(xiàn)方法。
MySQL的核心就是插件式存儲(chǔ)引擎,支持多種存儲(chǔ)引擎。
1.6.2 查看存儲(chǔ)引擎
show engines;