日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql 9.0创建数据库_PHP与MySQL学习笔记9:创建Web数据库

發布時間:2025/3/20 数据库 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql 9.0创建数据库_PHP与MySQL学习笔记9:创建Web数据库 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1、在服務器上部署MySQL服務基本步驟合注意點

1)安裝MySQL(命令安裝、安裝包安裝等)

2)考慮是否需要一個獨立的操作系統用戶權限來運行MySQL程序。

3)路徑的設置

4)root密碼 (附錄A:沒有root密碼,系統是不安全的)

5)刪除

匿名用戶和僅供測試使用的數據庫

6)啟動MySQL服務器并將其設置為自動運行。

2、使用MySQL命令行或其他終端的幾點注意

1)在MySQL自帶控制臺命令行中,每個命令之間用分號(;)隔開,分號將告訴MySQL執行這個命令,如果漏掉分號,MySQL將不會執行。

漏掉分號的的結果是:可能在一個命令中間添加新行。因為MySQL提供了一個持續符號,是一個箭頭類似于->,如

mysql> grant select

-> 這個符號表示MySQL期待著更多的輸入,每次按Enter都會出現這些提示符,知道輸入分號才結束。

PS:這個問題,對于新手來說,很容易忽視,我剛開始的時候也感覺很萌比。

2)

SQL語句不區分大小寫,但數據庫和表的名稱區分大小寫。

3、登陸到MySQL

在機器命令行,調用mysql程序

mysql -h

hostname-u

username?-p

1)本機運行,可忽略?-h hostname

2)-u 只用于連接數據庫的用戶名稱,如果不指定,默認只是登錄該操作系統時使用的用戶名。

3)-p 命令選項用來用來告訴服務器要使用一個密碼來連接它,如果登錄所使用用戶名無密碼,就可以忽略此項。而且,我們不必在本行命令中包含密碼,MySQL服務器會向你詢問密碼的。實際上,沒有這樣做的更好。如果在命令行輸入密碼,它將以普通文本(明文)顯示在屏幕上。

4、基礎命令

create database

dbname; ? 創建數據庫

mysql -D

dbname-h

hostname

-u

username

-p ?也可以直接指定數據庫,

use

dbname; ?可以登陸后方便地選擇或切換當前數據庫。

show databases; 查看數據庫列表(你將只能看到當前登錄賬號權限方位內的)

show tables; 查看數據庫表

describe

tablename; ?查看特定表的詳細信息,將顯示在創建數據庫時提供的信息。

5、權限

備注:如果要建立一個Web數據庫,最好為每個網站應用程序單獨建立一個用戶,為什么?權限。

再強調下“最少權限原則”:一個用戶(或者一個進程)應該擁有能夠執行分配給他的任務的最低級別的權限。

6、MySQL權限系統

1) GRANT和REVOKE命令分別用來授予和取消MySQL用戶的權限,這些權限分為4個級別:

全局;

數據庫;

表;

GRANT命令常用來創建命令并賦予相應權限,常見形式是:

GRANT ?privileges[columns]

ON ?item

TO?user_name[IDENTIFIED BY 'password']

[REQUIRE ?ssl_options

]

[WITH [GRANT OPTION |?limit_options] ]

方括號[]內的子句是可選的,上例有很多占位符。幾點解釋:

>第一個占位符privileges應該是由逗號分開的一組權限。

>columns是可選的,用來對每一列指定權限(使用單列的名稱或者用逗號分開的一組列的名稱)。

>占位符item是新權限所應用于的數據庫或表。如果指定為*.*,將權限應用于所有數據庫,這叫賦予全局權限。 若沒使用特定數據庫,指定*也可完成全局權限賦予。常見的是以dbname.*指定數據庫中的所有表,dbname.tablename的形式指定單個表。

>user_name是數據庫的一個用戶,可以通過包含一個主機名來區分不同域的用戶。如ss@localhost ?和ss@somewhere.com?.也可以通過這個特性指定用戶從什么地方連接到本機,甚至可以指定他們在特定的地方可以訪問哪些表和數據庫,細粒度的權限控制可以有助于提高安全性。

>REQUIRE 子句允許指定用戶是否必須通過加密套接字鏈接,或者其他SSL選項。

>WITH GRANT OPTION選項,如果指定,表示允許指定的用戶向別人授予自己所擁有的權限。

也可以通過指定WITH子句指定每一個用戶每小時執行查詢、更新和連接的數量。(在共享的系統上限制單個用戶的負載時,這些子句非常有用)

如:MAX_QUERIES_PER_HOUR n ?;MAX_UPDATES_PER_HOUR n ;MAX_CONNECTIONS_PER_HOUR n ;

2)權限存儲在名為mysql的5個系統表中,分別是,mysql.user、mysql.db、mysql.host、mysql.tables_priv、mysql.columns_priv。(直接修改這些表,和用GRANT命令一個效果,互相替代)

3)權限的類型和類別

MySQL中存在3個基本類型的權限,適用于賦予一般用戶的權限、適用于賦予管理員的權限和幾個特定的權限。

除了表9-1中的權限,還有兩種已經不再使用的權限REFERENCES 和 EXECUTE權限。

大多數情況下,通常只需要常見的增刪改查基本功能,

插入(SELECT)、刪除(DELETE)、更新(UPDATE)、選擇(SELECT)

如:

grant select, insert, delete, update ? on books.* to bookeditor identified by 'book123456';

與 GRANT對應的命令時REVOKE,用法類似:

REVOKE

REVOKE

privileges[(columns)]

ON

item

FROM

user_name

如果給出了WITH GRANT OPTION,可以用如下方式撤銷,

REVOKE ALL PRIVILEGES,GRANT

FROM user_name

例子:

備注:輸入quit 命令退出MySQL自帶的監視程序,最好應該在以剛剛建立的Web用戶的身份登錄,測試每件事情是否正常。如果GRANT語句已經執行(應該要flush privileges),當嘗試登錄時,又被拒絕了,通常是因為安裝過程中沒有刪除匿名賬戶。

7、創建數據庫表

CREATE TABLE

tablename(

columns)

注意:MySQL提供了多個表類型和存儲引擎,其中包括一些事務安全的類型。

實例解說:

注意1:MySQL每個表只能有一個主鍵,但是這個主鍵可以由一個字段,也可以有多個字段組成。想text這種類型通常是不能設置成主鍵的,也不能加索引(這個特性和所選的數據引擎有關)

注意2:char(50),該數據類型將為姓名分配50個字符的存儲空間,雖然姓名通常沒有這么長,然后MySQL將用空格填充空余的部分,或者,可以選擇用 varchar類型,這種可以根據需要分配存儲空間(加一個字節),占用空間小,但是char類型數據速度更快。

注意3:NOT NULL,這是一個小小的優化措施,需要多解釋下,引用網上一段解釋如下:

為什么mysql字段要設置為not null?

現在 大師來跟大家解釋解釋

首先 我們創建一個表?asd字段為null,qwe字段為not null,都無默認值 CREATETABLE`tb` ( `id`INT(10) UNSIGNED NOT NULL AUTO_INCREMENT, `asd`VARCHAR(45) NULL, `qwe`VARCHAR(45) NOT NULL, PRIMARYKEY (`idtb`)

)

然后 insert tb(asd) values('123123123'); insert tb(qwe) values('123123123');

現在 我們來查看這個表

可以看出

not null?的qwe字段 未設置的時候是個空字符串

null?的asd字段 未設置的時候是個NULL

以上結果 大家應該都可以想像到的。

那么為什么要設置NOT NULL呢

因為MYSQL不是PHP,NULL不等于空字符串

比如我們查詢qwe為空的 select * from tb where qwe=''

可以找到

但是 select * from tb where asd=''

則什么都找不到

8、創建索引的基本方法

數據庫性能問題通常會在數據庫上沒有創建任何索引的情況下發生(創建沒有主鍵或索引的表是可能的)

CREATE INDEX語句常見形式如下:

CREATE [UNIQUE | FULLTEXT] INDEX index_name

ON table_name (index_column_name [ (length) ] [ASC | DESC], ... )

注意:FULLTEXT索引用來索引文本字段,可選的 length 字段允許指定該字段前length個字符將被索引,也可以指定一個索引升序或降序。

9、理解MySQL的標識符

在MySQL中,提供了5中類型的標識符:

Database(數據庫)、Table(表)、Column(列)、index(索引)和 Alias(別名)

注1:MySQL中的數據庫將被映射到具備某種文件結構的目錄,而表則映射到文件。這對賦予他們的名字有直接影響,它也可以影響這些名字的大小寫,如果操作系統區分目錄與文件的大小寫。

(目錄和包含數據的文件的位置需要在配置中設置,可以使用mysqladmin命令來查看它們在系統中位置,windows下的bin目錄有mysqladmin.exe這個程序)

注2:在MySQL標識符中不能使用ASCII(0)(null)、ASCII(255) (BLANK FF)或引號字符(這3個字符)

10、列數據類型

MySQL中3種基本的列數據類型:數字、日期和時間、字符串。每個類型又包含很多子類,這3中類型?不同的存儲空間,一般來說,選擇列數據類型的時候,基本原則是選可以滿足數據的最小類型。

注意:對于許多數據類型,創建該類型列時,可以指定最大的

顯示長度,下表中

就用M表示,M的最大值可為255,如果M是可選的,就放在方括號內.

1)數字類型

數字類型分為整形和浮點數

注1:整形數據,可以指定為無符號型。

注2:所有數字類型,可以指定ZEROFILL屬性,空余部分用前導0來補充。如果將一個字段指定為ZEROFILL,它將自動成為UNSIGNED數字類型。

2)日期和時間類型

使用MySQL的日期和時間類型,可以以字符串或數字格式輸入數據,如果不手動設置,特定行中的TIMESTAMP列將被設置為最近修改該行的時間,這對于事務記錄是有意義的。

3)字符串類型

第一類:普通字符串,即小短文本,包括CHAR(固定長度),VARCHAR(可變長度)類型。

注意:無論數據大小多啊胡搜啊,CHAR類型的列都會用空格填補多余空白,獲取CHAR類型數據,與存儲VARCHAR類型數據時,MySQL都會過濾多余空格。

第二類:TEXT和BLOB

分別適用于長文本或二進制數據。BLOB(binary large objects)全稱為打二進制數據,它支持任何數據,如圖像、聲音數據。

第三類:SET 和 ENUM

SET類型用來指定列中的值必須來自一個特定集合中的指定值,可以包含該集合的多個值。集合最大64個元素。

ENUM 就是枚舉,與SET類似,只是該類型的列只能容納所列值之一,或者NULL,枚舉中最大可以由65535個元素。

章節結束語:

如果你問我為什么要學習這么仔細,因為,我就是想去弄清楚它。

總結

以上是生活随笔為你收集整理的mysql 9.0创建数据库_PHP与MySQL学习笔记9:创建Web数据库的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。