一廷蓉、引入
瀏覽器訪問HTML靜態(tài)頁面:
-
瀏覽器訪問動態(tài)網(wǎng)頁的流程:
二、學(xué)習(xí)數(shù)據(jù)庫的重要性
web開發(fā)的本質(zhì)就是對數(shù)據(jù)庫的操作粘室。
PHP開需要操作大量的字符串榄檬。數(shù)組,這兩個數(shù)據(jù)來源一大部分是來源于數(shù)據(jù)庫衔统。
web優(yōu)化鹿榜,服務(wù)器架構(gòu)需要對數(shù)據(jù)庫進行調(diào)優(yōu)。
三锦爵、數(shù)據(jù)庫課程體系
在我們?nèi)珬W(xué)科的整個過程中舱殿,數(shù)據(jù)庫分為三個部分:
基礎(chǔ)階段:6天時間 MySQL基本操作。SQL語言(增刪改查(CURD))险掀。數(shù)據(jù)庫的高級操作(視圖沪袭,觸發(fā),函數(shù)樟氢,變量枝恋,過程)。
高級階段:服務(wù)器的時候嗡害,SQL優(yōu)化焚碌,數(shù)據(jù)庫的主從。
部署階段:項目上線的時候霸妹,生產(chǎn)環(huán)境服務(wù)器數(shù)據(jù)庫的搭建十电。負載均衡,數(shù)據(jù)庫的集群。
四鹃骂、數(shù)據(jù)庫基礎(chǔ)概念
1.什么是數(shù)據(jù)庫
數(shù)據(jù)庫:database DB台盯。數(shù)據(jù)的存儲倉庫。車庫畏线,糧庫静盅,倉庫,優(yōu)衣庫寝殴。
文件蒿叠。數(shù)據(jù)庫存儲數(shù)據(jù)也是文件的方式進行存儲的。
數(shù)據(jù)庫的專業(yè)定義:高效的數(shù)據(jù)存儲以及數(shù)據(jù)處理軟件蚣常。
2.?dāng)?shù)據(jù)庫的分類
數(shù)據(jù)庫大致分為三種:層次式數(shù)據(jù)庫市咽,網(wǎng)絡(luò)式數(shù)據(jù)庫,關(guān)系式數(shù)據(jù)庫抵蚊。不同種類的數(shù)據(jù)庫存儲數(shù)據(jù)的方式是不一樣的施绎。
數(shù)據(jù)庫有類型之分:關(guān)系型數(shù)據(jù)庫,非關(guān)系型數(shù)據(jù)庫贞绳。
參考網(wǎng)站:<u>http://www.mamicode.com/info-detail-314758.html</u>
1) 網(wǎng)狀數(shù)據(jù)庫
處理以記錄類型為節(jié)點的網(wǎng)狀數(shù)據(jù)模型的數(shù)據(jù)庫
2)層級式數(shù)據(jù)庫
層級數(shù)據(jù)庫是將數(shù)據(jù)組織成有序的樹狀結(jié)構(gòu)數(shù)據(jù)谷醉。并使用一對多的結(jié)構(gòu)鏈接不同層級的數(shù)據(jù)。
2)關(guān)系式數(shù)據(jù)庫
當(dāng)前使用最廣泛的數(shù)據(jù)庫
3.不同類型的數(shù)據(jù)庫的主要產(chǎn)品
1)關(guān)系型數(shù)據(jù)庫:
大型:DB2 .Oracle
中型:SQL server, mysql, mariaDB,postgreSQL .
小型:access 冈闭,sqllite
2)非關(guān)系型數(shù)據(jù)庫:
memcached
redis
mongodb
4.兩種數(shù)據(jù)庫類型的區(qū)別:
關(guān)系型數(shù)據(jù)庫是存儲在磁盤中的俱尼。相對來說比較安全,進行復(fù)雜的查詢拒秘,支持事務(wù)号显。
非關(guān)系型數(shù)據(jù)庫存儲在內(nèi)存。相對來說不安全躺酒,耦合度比較低押蚤,水平擴展比較好。速度比較快羹应。性能比較好揽碘。
五、關(guān)系型數(shù)據(jù)庫
1.什么是關(guān)系型數(shù)據(jù)庫
關(guān)系型數(shù)據(jù)庫就是建立在關(guān)系模型(數(shù)學(xué)模型)上的數(shù)據(jù)庫园匹。
關(guān)系型數(shù)據(jù)庫其實就相當(dāng)于一張Excel表格雳刺。
銀行實例:
用戶賬號信息表:
流水信息表:
游戲解釋數(shù)據(jù)庫:
1)實體、實體集與屬性
實體:客觀存在的事物裸违,對應(yīng)的是數(shù)據(jù)庫當(dāng)中的一條記錄掖桦。
實體集:抽象出來的,具體實體的一個抽象概念供汛,所對應(yīng)的的是數(shù)據(jù)庫的一張表宿稀。
屬性:實體具有很多的屬性,對應(yīng)到數(shù)據(jù)庫中是表當(dāng)中的一個字段搬味。
2)數(shù)據(jù)庫的組織架構(gòu)
一個數(shù)據(jù)庫由多張數(shù)據(jù)表組成,每一張表中可以有多條記錄骑歹。每一個表中也具有多個字段锈麸。
六僧凰、MySQL數(shù)據(jù)庫介紹
MySQL是一個關(guān)系型數(shù)據(jù)庫纱兑,是瑞典的MySQLAB公司的產(chǎn)品倒信。MySQL目前屬于oracle瘾带。
MySQL是web最好用的一款數(shù)據(jù)庫允蚣,由于其開源的特點于颖,在開源社區(qū)具有非常高的活躍度。
MySQL分為兩個版本嚷兔,社區(qū)版和企業(yè)版森渐。社區(qū)版是開源的做入,免費的。但是企業(yè)版是收費同衣。
MySQL具有很好的支持竟块,特別是對PHP的支持,PHP有專門的的MySQL擴展耐齐。lamp以及l(fā)nmp都是非常流行的服務(wù)器架構(gòu)浪秘。
七、SQL語句
1.概念
SQL:(structured query language )結(jié)構(gòu)化查詢語言埠况。同時這個sql也是數(shù)據(jù)庫文件的腳本的后綴名耸携。
是數(shù)據(jù)庫客戶端與數(shù)據(jù)庫服務(wù)器通信的語言。SQL語言是一種SQL通信的規(guī)范辕翰。美國國家標(biāo)準(zhǔn)協(xié)會(1986)制定了標(biāo)準(zhǔn)夺衍,幾乎所有的關(guān)系型數(shù)據(jù)庫都支持SQL語言。
2.SQL語句分類
根據(jù)數(shù)據(jù)庫的操作對象進行劃分(數(shù)據(jù)庫喜命,表沟沙,數(shù)據(jù))。
?DCL:數(shù)據(jù)庫控制語言:主要是進行權(quán)限以及數(shù)據(jù)庫用戶的管理渊抄。
?DDL:數(shù)據(jù)庫定義語句尝胆。創(chuàng)建表丧裁,創(chuàng)建庫护桦。
?DML:數(shù)據(jù)操作語言(對數(shù)據(jù)的增刪改查)。
DQL:數(shù)據(jù)庫查詢語言煎娇。
八二庵、訪問數(shù)據(jù)庫服務(wù)器
1.訪問步驟
1)開啟服務(wù)器
2)連接服務(wù)器
3)進行操作
2.開啟MySQL服務(wù)器的方式
1)使用系統(tǒng)服務(wù)開啟
使用window系統(tǒng)服務(wù)界面操作》
2)使用命令行模式開啟
開啟命令:
net start mysql
關(guān)閉命令:
net stop mysql
3.使用客戶端連接數(shù)據(jù)庫
1)客戶端方式
mysql提供了一個自己的客戶端軟件:MySQL command line client
2)命令行模式
mysql [-h主機名] [-p端口號] -u用戶名 -p(密碼)
-h:h表示主機,默認(rèn)的是localhost缓呛。
-p:p表示port催享,是端口的意思。默認(rèn)的端口是3306.
-u:u表示user哟绊,是用戶的意思因妙。mysql 安裝好之后只有一個用戶root,是管理員賬號票髓。
-p:p表示password攀涵,是密碼的意思。管理員root賬號的密碼是在安裝的時候設(shè)置洽沟。
3)使用工具
4)退出
使用\q或者quit退出以故。
九、數(shù)據(jù)庫操作
1.查看數(shù)據(jù)庫
1)查看數(shù)據(jù)庫管理軟件中的所有數(shù)據(jù)庫裆操。
show databases;
系統(tǒng)的三個數(shù)據(jù)庫一定不要刪掉
2)查看數(shù)據(jù)庫的建庫語句
show create database database_name;
2.創(chuàng)建數(shù)據(jù)庫
1)創(chuàng)建語法
create database [if not exists] database_name [charset 字符集];
不能創(chuàng)建一個已經(jīng)存在的數(shù)據(jù)庫:
可以使用if not exists進行判斷怒详,在判斷沒有這樣的數(shù)據(jù)庫時再添加炉媒。
在創(chuàng)建數(shù)據(jù)庫的時候是可以指定字符編碼。
創(chuàng)建gbk編碼的數(shù)據(jù)庫:
2)判斷數(shù)據(jù)庫是否已經(jīng)存在
3)可以指定數(shù)據(jù)庫的字符集:
4)數(shù)據(jù)庫名稱的命名規(guī)則
數(shù)據(jù)庫的名字有字母昆烁,數(shù)字吊骤,下劃線組成。
不能以數(shù)字開頭静尼,也不能為純數(shù)字水援。
當(dāng)使用系統(tǒng)的關(guān)鍵字命名的時候要是用反撇號(`)包起來。盡量不要使用系統(tǒng)的關(guān)鍵字茅郎,否則會產(chǎn)生莫名其妙的問題蜗元。
名稱的長度一般不超過64個字符。
起名字一定要有意義系冗。
3.刪除數(shù)據(jù)庫
drop database [if exists] database_name;
再刪除數(shù)據(jù)庫之前要判斷數(shù)據(jù)庫是否存在奕扣。
看圖說話:
不能直接刪除不存在的數(shù)據(jù)庫。
刪除的數(shù)據(jù)如果是使用系統(tǒng)關(guān)鍵字命名的掌敬。那么再刪除的語法當(dāng)中也應(yīng)該將名稱使用反撇號括起來惯豆。
4.修改數(shù)據(jù)庫
主要是修改數(shù)據(jù)庫的字符集。
alter database database_name charset 新字符集奔害;
5.選擇數(shù)據(jù)庫
use databases_name;
\s可以查看到當(dāng)前的用戶楷兽,當(dāng)前的數(shù)據(jù)庫主機,當(dāng)前操作的數(shù)據(jù)庫
十华临、數(shù)據(jù)表的操作
1.查看數(shù)據(jù)表
1)查看所有數(shù)據(jù)表
show tables;
當(dāng)數(shù)據(jù)庫沒有數(shù)據(jù)表的時候芯杀,顯示的是空或者empty set。雅潭,
2)查看表結(jié)構(gòu)
desc table_name;
3)數(shù)據(jù)類型簡單介紹
整形 int
浮點型 float
字符串 char varchar
日期類型 time 揭厚,datetime
2.建數(shù)據(jù)表
1)基本語法
create table table_name(
字段1 數(shù)據(jù)類型 字段屬性,
字段2 數(shù)據(jù)類型 字段屬性
)charset 字符集扶供;
注意:如果是最后一個字段筛圆,字段的最后的逗號要省略钞瀑。
create table hreo(
id int comment ‘英雄ID號’,
name varchar(30) comment ‘名稱’努释,
skill varchar(20) comment ‘技能’
)charset utf8;
2)查看數(shù)據(jù)表的創(chuàng)建語句
show create tabel table_name ;
3.刪除數(shù)據(jù)表
drop table table_name;
4.修改數(shù)據(jù)表
1)修改表的名字
alter table table_name rename [to] new_name;
十一魔眨、數(shù)據(jù)操作
數(shù)據(jù)的操作也叫(CURD)暇务,也就是數(shù)據(jù)的增刪改查躏救。
1.插入數(shù)據(jù)
insert into table_name(字段1姑食,字段2宰僧,烛亦。左腔。唧垦。) values (值1,值2液样,振亮。巧还。。);
--數(shù)據(jù)的插入
insert into hero(id,name,skill) values(2,'豬頭人','腦殘');
insert into hero(id,name,skill) values(3,'牛頭人','殺豬');
insert into hero(id,name,skill) values(5,'羊頭人','殺牛');
insert into hero(id,name,skill) values(8,'喜洋洋','白胖胖'),
(9,'灰太狼','吃平底鍋');
注意:輸入的時候坊秸,值得順序一定要和字段的順序保持一致麸祷。如果說知道表字段的順序,并且知道表字段的數(shù)據(jù)類型和限制條件褒搔。那么也可以使用下面這種語法:
insert into table_name values(值1阶牍,值2.。星瘾。);
2.查詢數(shù)據(jù)
數(shù)據(jù)查詢使用select 關(guān)鍵字進行數(shù)據(jù)表的掃描走孽。
1)查詢指定字段的內(nèi)容
select 字段1,字段2.琳状。 from table_name;
select name from hero;
2)查詢所有的列數(shù)據(jù)
select * from table_name;
-
表示所有的字段磕瓷,菊花表示查詢數(shù)據(jù)庫所有字段。
3)按照條件查詢
select (字段/*) from table_name where 條件念逞;
--查詢ID為3的英雄的技能
select skill from hero where id=3;
3.修改數(shù)據(jù)
修改數(shù)據(jù)也是網(wǎng)頁操作中比較常見操作困食。
update table_name set 字段=值,字段2=值2.翎承。硕盹。 where 條件;
注意:
update更新操作一般都是由where條件的叨咖,如果要運行的是一個沒有where條件的SQL更新語句瘩例,那么一定要小心小心再小心。update操作在沒有where條件的時候會修改整個表當(dāng)中的所有數(shù)據(jù)芒澜。
4.刪除數(shù)據(jù)
delete from table_name where 條件仰剿;
同樣的,刪除操作一般也是具有where條件的痴晦,如果沒有where條件,一定要再三確認(rèn)琳彩。
十二誊酌、字符集以及校對規(guī)則
1.亂碼問題
1)產(chǎn)生原因
數(shù)據(jù)庫表的字符編碼與客戶端通信使用的字符編碼不一致。數(shù)據(jù)庫采用的是utf8保存的露乏”套牵客戶端使用的是gbk獲取的,所以產(chǎn)生亂碼瘟仿。
2)解決辦法
客戶端的編碼是無法改變的箱锐。只能設(shè)置數(shù)據(jù)的字符集編碼。
查看當(dāng)前數(shù)據(jù)庫關(guān)于字符集的一些變量:
show varables like ‘%character%’劳较;
第一種解決辦法:
設(shè)置使用gbk通信:
set names gbk;
[圖片上傳中...(image.png-5787af-1556110158288-0)]
第二種解決辦法:
單獨去設(shè)置影響顯示的系統(tǒng)變量:
set 變量名 = 值驹止;
set character_set_client = utf8;
2.字符集
1)概念
字符集:字符的編碼浩聋。
2)常用的字符集編碼
ASCII:美國的通用信息編碼。
gbk/gb2312:漢字編碼臊恋。
utf8:萬國碼衣洁,本質(zhì)上是使用8位可變長度的字節(jié)的字符編碼,幾乎支持所有的文字抖仅。
3)數(shù)據(jù)庫中的編碼:
數(shù)據(jù)庫編碼默認(rèn)的是使用utf編碼坊夫。數(shù)據(jù)表的編碼默認(rèn)使用數(shù)據(jù)庫的編碼。
設(shè)置了新的數(shù)據(jù)庫編碼之后撤卢,已有的表還保持之前的字符編碼环凿,新建的表采用新的編碼方式。
4)字符集統(tǒng)一規(guī)則
只有以下幾個方面的字符編碼方式一致放吩,最終文字的顯示才會準(zhǔn)確拷邢。
- 數(shù)據(jù)庫的編碼
- 數(shù)據(jù)表的編碼
- PHP文件存數(shù)據(jù)的編碼
- PHP文件取數(shù)據(jù)的編碼
- HTML顯示的編碼
5)查看數(shù)據(jù)庫支持的編碼
show charset;
3.校對規(guī)則(排序規(guī)則)
1)概念
校對集:同一個字符編碼當(dāng)中,字符串的比較規(guī)則就叫校對集屎慢。
2)查看服務(wù)器支持的校對規(guī)則
show collaction;
3)校對規(guī)則命名特點
ci:表示不區(qū)分大小寫:A===a
cs:表示區(qū)分大小寫 A瞭稼!=a
bin: 表示按照二進制編碼順序排序。
utf8一般使用 utf8_general_ci 這種校對集規(guī)則腻惠。
校對規(guī)則是針對一種字符編碼的环肘,一種字符編碼可以有多種校對集。
默認(rèn)的校對規(guī)則在查看建表語句的時候是不顯示的集灌。