久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

PHP教程(8)遞歸遍歷+MYSQL介紹+MYSQL基本操作

 知識書館 2022-07-17 發(fā)布于廣東

回顧

文件操作:包含文件夾和文件

         文件夾操作:獲取路徑資源opendir,,讀取資源數(shù)據(jù)readdir,,釋放資源closedir,重置指針rewinddir

         取出所有文件:scandir

         遞歸:函數(shù)內(nèi)部自己調(diào)用自己(為了解決與父問題相同的子問題)

                  遞歸點(diǎn):什么時候調(diào)用函數(shù)自己,,遍歷出來的文件是一個文件夾

                  遞歸出口:什么時候終止函數(shù)調(diào)用,,如果子文件是文件/如果整個文件夾遍歷結(jié)束都沒有子文件夾

         文件操作:PHP5PHP5以前(fopen:代開,;fgetc/fgets/fread:讀;fwrite/fputs:寫入,;fclose:關(guān)閉)

         文件操作函數(shù),文件下載

1.      遍歷文件夾及其子目錄:所有的內(nèi)容都讀入到數(shù)組

2.      站點(diǎn)統(tǒng)計(jì):輸出用戶訪問次數(shù),,第幾位訪客,,最近的訪問時間

作業(yè)見代碼:homework1_dir_iterate.php/homework2_#php


數(shù)據(jù)庫

知識體系

數(shù)據(jù)分為三個階段

第一階段:SQL基礎(chǔ),mysql的基礎(chǔ)知識,,視圖,,函數(shù),觸發(fā)器,,存儲過程,,5+1+1

5天基礎(chǔ)+1PHP+mysql編程+1PDO(面向?qū)ο螅?/span>

第二階段:mysql優(yōu)化,索引+分頁

第三階段:mysql部署,,服務(wù)器集群,,讀寫分離,負(fù)載均衡

數(shù)據(jù)庫基本知識

1.      什么是數(shù)據(jù)庫,?

廣義:凡是能夠存儲和處理數(shù)據(jù)的媒介(介質(zhì))都是數(shù)據(jù)庫

狹義:高效的存儲和處理數(shù)據(jù)的媒介

2.      數(shù)據(jù)庫分類

關(guān)系型數(shù)據(jù)庫:建立在關(guān)系模型上的數(shù)據(jù)庫,。

關(guān)系模型:二維表,關(guān)系模型是通過關(guān)系數(shù)據(jù)結(jié)構(gòu),,關(guān)系的操作指令和關(guān)系約束三部分組成,。

關(guān)系型數(shù)據(jù)庫:維護(hù)實(shí)體內(nèi)部的聯(lián)系以及實(shí)體和實(shí)體之間的聯(lián)系的數(shù)據(jù)庫(實(shí)體:自然界中存在的各種數(shù)據(jù)對象)

非關(guān)系型數(shù)據(jù)庫:所有不是關(guān)系型數(shù)據(jù)庫的數(shù)據(jù)庫都是非關(guān)系型數(shù)據(jù)庫

關(guān)系型數(shù)據(jù)庫與非關(guān)系型數(shù)據(jù)庫的區(qū)別

1.      運(yùn)行的介質(zhì)部一樣:關(guān)系型數(shù)據(jù)庫數(shù)據(jù)保存在磁盤,非關(guān)系型數(shù)據(jù)運(yùn)行在內(nèi)存

2.      效率區(qū)別:非關(guān)系型數(shù)據(jù)庫效率高

3.      安全區(qū)別:關(guān)系型數(shù)據(jù)庫安全

3.      數(shù)據(jù)庫產(chǎn)品

關(guān)系型數(shù)據(jù)庫:mysql,,Oracle,,DB2SqlServer,,access

非關(guān)系型數(shù)據(jù)庫:memcache,,mongodb,,redis

4.      數(shù)據(jù)庫名詞

數(shù)據(jù):data,攜帶有用信息的字符

數(shù)據(jù)庫:database,,存放數(shù)據(jù)的“倉庫”

數(shù)據(jù)庫管理系統(tǒng):DBMSdatabase Management System),,管理數(shù)據(jù)庫的系統(tǒng)

數(shù)據(jù)庫系統(tǒng):DBSdatabase system = DBMS + DB

數(shù)據(jù)庫管理員:DBADatabase Administrator),專門維護(hù)數(shù)據(jù)庫系統(tǒng)

關(guān)系型數(shù)據(jù)庫

維護(hù)數(shù)據(jù)的內(nèi)部聯(lián)系和數(shù)據(jù)與數(shù)據(jù)之間的關(guān)系,。

關(guān)系型數(shù)據(jù)庫都是通過二維表來進(jìn)行數(shù)據(jù)的維護(hù)的,。

學(xué)員管理系統(tǒng):學(xué)生,班級

學(xué)生:學(xué)號,,姓名,,性別,年齡

學(xué)號

姓名

性別

年齡

Itcast0001

華萃文

23

Itcast0002

陳麗玲


Itcast0003

潘市遠(yuǎn)

20

維護(hù)的數(shù)據(jù)內(nèi)部的關(guān)系

關(guān)系型數(shù)據(jù)庫:即便數(shù)據(jù)不存在,,也要分配空間和位置來用于數(shù)據(jù)存放,。比較浪費(fèi)磁盤空間。

班級:班級號,,教室

班級編號

教室

PHP141115

A814

PHP140815

A806

維護(hù)的數(shù)據(jù)內(nèi)部的關(guān)系

班級與學(xué)生關(guān)系

學(xué)號

姓名

性別

年齡

班級編號

Itcast0001

華萃文

23

PHP141115

Itcast0002

陳麗玲


PHP141115

Itcast0003

潘市遠(yuǎn)

20

PHP140815

維護(hù)實(shí)體與實(shí)體之間的關(guān)系

典型的關(guān)系型數(shù)據(jù)庫概念

行和記錄

         行:row,,行是從表的結(jié)構(gòu)角度出發(fā)

         記錄:record,記錄是從數(shù)據(jù)的角度出發(fā)

列和字段

         列:column,,結(jié)構(gòu)角度

         字段:field,,數(shù)據(jù)角度

SQLStructured Query Language,結(jié)構(gòu)化的查詢語言,,是據(jù)庫的編程語言

         DDLData Define Language,,數(shù)據(jù)定義語言,專門用于定義數(shù)據(jù)的存儲的結(jié)構(gòu),,create

         DMLData Manipulation Language,,數(shù)據(jù)操作語言,對數(shù)據(jù)進(jìn)行增刪改查,,

                  DQLData Query Language,,數(shù)據(jù)查詢語言

         DCLData Control Language,數(shù)據(jù)控制語言,,控制用戶的權(quán)限,,revoke

mysql數(shù)據(jù)庫

mysql數(shù)據(jù)庫是一款c/s結(jié)構(gòu)的軟件。意味著訪問服務(wù)器必須通過客戶端來實(shí)現(xiàn),。

假設(shè):客戶端與服務(wù)端不在同一臺電腦上,。(絕大部分的情況如此)

操作數(shù)據(jù)庫的步驟:

1.      保證客戶端和服務(wù)端都已經(jīng)運(yùn)行,開始服務(wù)了,。

2.      運(yùn)行客戶端:連接服務(wù)器,。連接認(rèn)證。

a)        –hhost,主機(jī)地址,,ip或者域名:-hlocalhost,,可以省略

b)        –Pport,服務(wù)器的服務(wù)監(jiān)聽端口:-P3306,,可以省略

c)        –uusername,,登錄服務(wù)器的用戶名:-uroot

d)        –ppassword,登錄服務(wù)器的密碼:-p

利用mysql.exe,,需要借助cmd環(huán)境才能運(yùn)行

3.      準(zhǔn)備SQL語句

4.      發(fā)送SQL語句給服務(wù)器

5.      服務(wù)器:接收SQL語句

6.      服務(wù)器:執(zhí)行SQL語句

7.      服務(wù)器:將執(zhí)行結(jié)果返回給客戶端

8.      客戶端:解析結(jié)果

9.      客戶端:顯示結(jié)果

10.   退出服務(wù)器:斷開連接

exit/quit/\q

mysql服務(wù)器對象

整個服務(wù)器就是一個DBS:數(shù)據(jù)庫系統(tǒng)

系統(tǒng)是由DBMS進(jìn)行管理,,管理DBDB管理Table,,表管理field

SQL基本操作

SQL基本操作分為三類:庫操作,,表操作(字段操作),數(shù)據(jù)操作

SQL基本操作:CRUD

CCreate,,新增

RRead/Retrive,,讀取

UUpdate,更新

Ddelete/Drop,,刪除

庫操作

新增庫

create database 數(shù)據(jù)庫名字 [庫選項(xiàng)];

庫選項(xiàng):字符集和校對集

charset/character set:字符集,,utf8/gbk/gb2312,表示當(dāng)前數(shù)據(jù)庫內(nèi)的數(shù)據(jù)按照指定的字符集進(jìn)行存儲

collate:校對集,,比較字符的大小的規(guī)范,,校對集依賴字符集

當(dāng)以上語句執(zhí)行的時候,系統(tǒng)發(fā)生了如下改變

1.      系統(tǒng)內(nèi)部創(chuàng)建一個叫做my_data1數(shù)據(jù)庫名字的數(shù)據(jù)庫,,字符集是utf8

2.      系統(tǒng)在服務(wù)器存儲數(shù)據(jù)的位置創(chuàng)建一個叫做my_data1的文件夾

my.ini中查看數(shù)據(jù)存儲目錄

文件創(chuàng)建

3.      文件夾內(nèi)部有一個opt文件:記住了當(dāng)前數(shù)據(jù)庫的庫選項(xiàng)

數(shù)據(jù)庫命名規(guī)范

1.      采用字母下劃線和數(shù)字構(gòu)成,通常建議使用英文單詞配合下劃線

2.      數(shù)據(jù)庫名字不能夠直接使用關(guān)鍵字

3.      不能直接使用中文作為數(shù)據(jù)庫名字,。如果要使用關(guān)鍵字或者中文,,對名字使用反引號

反引號:鍵盤左上角1鍵左邊的鍵在英文狀態(tài)的輸出

中文需要先設(shè)定字符集

中文數(shù)據(jù)庫在操作系統(tǒng)下使用十六進(jìn)制命名,并不是中文

注意:不建議使用中文作為數(shù)據(jù)庫名字,,關(guān)鍵字也不建議,,保留字也一樣

查看庫

語法1:查看所有

show databases;

語法2:查看部分相關(guān)數(shù)據(jù)庫,使用匹配模式:%_

show databases like 'pattern’;

%:代表匹配任意長度的任意字符

_:匹配一個長度的字符

語法3:查看數(shù)據(jù)庫的創(chuàng)建語句:不是指 的用戶創(chuàng)建的時候自定義的SQL語句,,而是系統(tǒng)執(zhí)行的時候,,內(nèi)部整理后的SQL語句

show create database 數(shù)據(jù)庫名字;

修改庫

修改數(shù)據(jù)庫不能夠修改數(shù)據(jù)庫名字

修改數(shù)據(jù)庫只能修改庫選項(xiàng)

語法:修改結(jié)構(gòu)的語法都是alter

alter database 數(shù)據(jù)庫名字 要修改的庫選項(xiàng); -- 一般用于修改字符集

雖然只修改了字符集,但是校對集也被修改

刪除庫

刪除指定的數(shù)據(jù)庫,,只能一個一個的刪除,,刪除數(shù)據(jù)庫會連帶的將數(shù)據(jù)庫內(nèi)部的所有數(shù)據(jù)表都刪除。(慎用)

語法:所有的結(jié)構(gòu)刪除都使用drop

drop database 數(shù)據(jù)庫名字;

執(zhí)行刪除語句之后,,發(fā)生了什么,?

1.      數(shù)據(jù)庫不存在了

2.      數(shù)據(jù)庫對應(yīng)的文件夾也被刪除了

表操作

對數(shù)據(jù)表的增刪改查,以及表中的字段的操作。

數(shù)據(jù)表不能脫離字段,,字段不能獨(dú)立存在,。

SQL是一種強(qiáng)類型語言,所有的字段都必須指定數(shù)據(jù)類型

增加表

語法

create table 表名(

字段名1 字段類型, -- 字段與字段之間使用逗號分隔

字段名N 字段類型最后一個子彈不需要逗號

) [表選項(xiàng)];

表選項(xiàng):字符集和存儲引擎

字符集:表中數(shù)據(jù)存儲的字符集,,可以與數(shù)據(jù)庫的不一致

存儲引擎:engine,,數(shù)據(jù)的存儲方式,默認(rèn)的是InnoDB,,低版本的myisam

錯誤:數(shù)據(jù)表是由數(shù)據(jù)庫來管理,,所以必須先指定數(shù)據(jù)庫

如何指定數(shù)據(jù)庫?

1.      顯示指定數(shù)據(jù)庫:在創(chuàng)建表的表名前面使用數(shù)據(jù)庫名字.表名

2.      隱式的指定數(shù)據(jù)庫:事先進(jìn)入到數(shù)據(jù)庫環(huán)境,,再創(chuàng)建表時,,默認(rèn)的使用當(dāng)前數(shù)據(jù)庫

語法:use 數(shù)據(jù)庫名字;

innodbmyisam的區(qū)別

1.      兩種存儲引擎結(jié)構(gòu)有區(qū)別

InnoDB的數(shù)據(jù)和索引都在外部的ibdata1文件中

查詢表

查看表以及結(jié)構(gòu),與數(shù)據(jù)庫的查看基本一致

語法1:查看所有表

show tables;

語法2:查看表的創(chuàng)建語句

show create table 表名;

語法3:查看表的結(jié)構(gòu)(字段)

desc/describe/show columns from 表名;

修改表

修改表分為兩種:修改表自己,,修改表內(nèi)部的字段

修改表自己:修改表名和表選項(xiàng)

修改表名

         rename table 表名 to 新表名;

修改表選項(xiàng)

alter table 表名 表選項(xiàng);

修改存儲引擎會修改對應(yīng)的數(shù)據(jù)庫文件夾下的文件

修改表字段:增刪改

alter table 表名 [add/drop/modify/change] 字段名字 數(shù)據(jù)類型 [位置]

位置:first/ after 字段名,,默認(rèn)的是本身或者所有的字段之后

添加字段

alter table 表名 add [colomn] 字段名 數(shù)據(jù)類型 [位置]

修改字段:修改名字和修改字段的數(shù)據(jù)類型

修改名字

alter table 表名 change 字段原名新名字 數(shù)據(jù)類型;

修改字段數(shù)據(jù)類型

alter table 表名 modify 字段名字數(shù)據(jù)類型 [位置];

刪除字段

alter table 表名 drop 字段名;

刪除表

將表刪除和表里面的數(shù)據(jù)也刪除

語法

drop table 表名,表名;

可以一次性刪除多個表,使用逗號分隔,。

注意:數(shù)據(jù)表不要輕易刪除,,刪除之前最好先備份。

數(shù)據(jù)操作

對表里面的數(shù)據(jù)進(jìn)行增刪改查

新增數(shù)據(jù)

數(shù)據(jù)與結(jié)構(gòu)有別,,SQL額外使用了關(guān)鍵字insert into

語法

insert into 表名 [(字段列表:字段使用逗號分隔)] values(值列表:必須完全對應(yīng)字段列表)[,(值列表)]

數(shù)據(jù)的新增方式有以下幾種

1.      部分字段添加數(shù)據(jù),,沒有添加的部分系統(tǒng)會自動的使用字段的默認(rèn)值填充,必須指定字段列表和值列表,,順序都必須一一對應(yīng)(字段列表里面的字段可以與表結(jié)構(gòu)中的字段不一樣)

注意:采用這種方式插入數(shù)據(jù)的話,,必須前提條件是沒有插入數(shù)據(jù)的字段有默認(rèn)值或者自增長

2.      給所有的字段都天劍數(shù)據(jù):可以沒有字段列表,如果沒有字段列表,,值列表里面數(shù)據(jù)的順序就必須與表結(jié)構(gòu)中的字段順序一致,。

3.      可以一次性插入多個數(shù)據(jù)(記錄),在values后面使用括號和逗號進(jìn)行分隔

查看數(shù)據(jù)

將表中的數(shù)據(jù)取出來查看

語法:

select */字段列表 from 表名 where 條件;

where條件用來篩選數(shù)據(jù)

更新數(shù)據(jù)

語法

update 表名 set 字段名 = [,字段 = …] where 條件;

更新多條記錄

刪除數(shù)據(jù)

語法

delete from 表名 where條件; -- 沒有條件就會刪除所有的數(shù)據(jù)

字符集

1.      什么是字符集,?

字符集是字符的集合,,不同的字符在進(jìn)行二進(jìn)制存儲的時候,應(yīng)當(dāng)遵循的某個轉(zhuǎn)換的規(guī)則,。

字符集問題解決

1.      了解服務(wù)器到底能支持哪些字符集,?

show character set;

2.      了解服務(wù)器默認(rèn)的對外部客戶端的默認(rèn)字符集支持

show variables like 'character_set%’;

mysql客戶端只支持GBK,而服務(wù)器默認(rèn)客戶端是utf8字符集

解決方案:將服務(wù)器認(rèn)為的客戶端發(fā)送的數(shù)據(jù)由utf8改成gbk

set character_set_client = gbk;

解決效果

查詢效果

矛盾:查詢出來的結(jié)果依然是亂碼,,原因是因?yàn)榉?wù)器認(rèn)為客戶端所能解析的結(jié)果的字符集是utf8的,,客戶端實(shí)際上是GBKGBK的確可以解析,,只是解析成亂碼,。

解決方案:修改服務(wù)器認(rèn)為的客戶端的所能接收的結(jié)果的字符集為gbk,;

set character_set_results = gbk;

set names gbk:所做的事情就是將服務(wù)器認(rèn)為的跟客戶端相關(guān)的字符集(clientresults)變成gbk,系統(tǒng)還會將connection也轉(zhuǎn)成gbk,;

connection只是為了數(shù)據(jù)在內(nèi)部進(jìn)行轉(zhuǎn)換時,,提升轉(zhuǎn)換的效率

原理圖

字符集的設(shè)置:根據(jù)客戶端自己的字符集進(jìn)行設(shè)置。

    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多