九色国产,午夜在线视频,新黄色网址,九九色综合,天天做夜夜做久久做狠狠,天天躁夜夜躁狠狠躁2021a,久久不卡一区二区三区

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

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

回顧

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

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

         取出所有文件:scandir

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

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

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

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

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

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

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

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


數(shù)據(jù)庫

知識(shí)體系

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

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

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

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

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

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

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

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

狹義:高效的存儲(chǔ)和處理數(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ù)對(duì)象)

非關(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ù)庫:memcachemongodb,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é)生,班級(jí)

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

學(xué)號(hào)

姓名

性別

年齡

Itcast0001

華萃文

23

Itcast0002

陳麗玲


Itcast0003

潘市遠(yuǎn)

20

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

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

班級(jí):班級(jí)號(hào),教室

班級(jí)編號(hào)

教室

PHP141115

A814

PHP140815

A806

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

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

學(xué)號(hào)

姓名

性別

年齡

班級(jí)編號(hào)

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ù)的存儲(chǔ)的結(jié)構(gòu),create

         DMLData Manipulation Language,數(shù)據(jù)操作語言,對(duì)數(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ù)端不在同一臺(tái)電腦上。(絕大部分的情況如此)

操作數(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ù)器對(duì)象

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

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

SQL基本操作

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

SQL基本操作:CRUD

CCreate,新增

RRead/Retrive,讀取

UUpdate,更新

Ddelete/Drop,刪除

庫操作

新增庫

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

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

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

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

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

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

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

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

文件創(chuàng)建

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

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

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

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

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

反引號(hào):鍵盤左上角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’;

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

_:匹配一個(gè)長度的字符

語法3:查看數(shù)據(jù)庫的創(chuàng)建語句:不是指 的用戶創(chuàng)建的時(shí)候自定義的SQL語句,而是系統(tǒng)執(zhí)行的時(shí)候,內(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); -- 一般用于修改字符集

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

刪除庫

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

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

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

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

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

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

表操作

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

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

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

增加表

語法

create table 表名(

字段名1 字段類型, -- 字段與字段之間使用逗號(hào)分隔

字段名N 字段類型最后一個(gè)子彈不需要逗號(hào)

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

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

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

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

錯(cuò)誤:數(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)建表時(shí),默認(rèn)的使用當(dāng)前數(shù)據(jù)庫

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

innodbmyisam的區(qū)別

1.      兩種存儲(chǔ)引擎結(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);

修改存儲(chǔ)引擎會(huì)修改對(duì)應(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 表名,表名;

可以一次性刪除多個(gè)表,使用逗號(hào)分隔。

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

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

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

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

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

語法

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

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

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

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

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

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

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

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

語法:

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

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

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

語法

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

更新多條記錄

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

語法

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

字符集

1.      什么是字符集?

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

字符集問題解決

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

show character set;

2.      了解服務(wù)器默認(rèn)的對(duì)外部客戶端的默認(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í)際上是GBK,GBK的確可以解析,只是解析成亂碼。

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

set character_set_results = gbk;

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

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

原理圖

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

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
聽說這是史上最簡單的 MySQL 教程(內(nèi)有圣誕節(jié)福利)
第一天
mysql和SQL Server的互相轉(zhuǎn)換
Mysql數(shù)據(jù)庫入門-基本操作
數(shù)據(jù)庫設(shè)計(jì)和SQL編寫規(guī)范
SQL基礎(chǔ)入門:第2課:環(huán)境搭建
更多類似文章 >>
生活服務(wù)
熱點(diǎn)新聞
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服