【技術(shù)干貨】作為測(cè)試,你必須知道的MySQL知識(shí)(一)

一、安裝

1、Windows上安裝

① 下載鏈接:https://downloads.mysql.com/archives/installer/

② 安裝:下載后直接雙擊即可安裝(按照步驟,操作簡(jiǎn)單,此處不細(xì)講)。

2、Linux上安裝

以Centos7為例,可以使用yum進(jìn)行安裝,相關(guān)命令如下:

wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
rpm -ivh mysql-community-release-el7-5.noarch.rpm
yum update
yum install mysql-server

3、默認(rèn)端口與用戶名

?① 默認(rèn)端口3306;

?② 默認(rèn)用戶root。


二、客戶端連接MySQL的方式

1、命令行

????以Windows下MySQL為例,安裝后可在安裝目錄下找到bin目錄,需要在該目錄下使用命令行工具執(zhí)行mysql.exe。

①【連接命令】:?

mysql?[OPTIONS]

【常見(jiàn)OPTIONS】:

-h:指定連接的服務(wù)器名或IP。當(dāng)連接為本地服務(wù)器時(shí)可以不寫;

-P:指定連接的MySQL端口。默認(rèn)是3306,當(dāng)默認(rèn)時(shí)可不寫;

-u:指定用戶,默認(rèn)是root;

-p:指定密碼。如只加-p,不指定密碼,則按Enter鍵后會(huì)提示輸入密碼,建議使用這種方式;

-D:指定連接的數(shù)據(jù)庫(kù)。如不指定,連接后,需要使用use命令選擇;

->【舉個(gè)栗子】:以用戶名為root,連接的服務(wù)器為本地IP,端口為默認(rèn)的3306,此時(shí)端口與IP都不需要指定,只需要指定用戶名root,-p后按Enter鍵后輸入password,即可完成連接:

【備注】:如果服務(wù)器IP為192.168.233.2,端口為8888,那么命令行應(yīng)該輸入:mysql -u root -h?192.168.233.2?-P 8888 -p

②【退出命令】: exit

2、常用的GUI工具

?SQLyog、Navicat等;

3、編程語(yǔ)言的SDK

① Java:使用JDBC;

② Python:使用PyMySQL模塊。

三、快速使用

1、創(chuàng)建/刪除/查看數(shù)據(jù)庫(kù)

①【創(chuàng)建數(shù)據(jù)庫(kù)(create)】

create?database?<數(shù)據(jù)庫(kù)名稱>;

②【查看已有的數(shù)據(jù)庫(kù)(show)】

show databases;

③【刪除數(shù)據(jù)庫(kù)(drop)】

drop?database?<數(shù)據(jù)庫(kù)名稱>;

2、創(chuàng)建/查看數(shù)據(jù)表

在創(chuàng)建表之前,需要先了解【常用的數(shù)據(jù)類型】:

① int :整形

② bigint:長(zhǎng)整形

③ float:?jiǎn)尉雀↑c(diǎn)型

④ double:雙精度浮點(diǎn)型

⑤ char:定長(zhǎng)字符串

⑥ varchar:變長(zhǎng)字符串(相當(dāng)于oracle的 varchar2)

⑦ timestamp:混合日期和時(shí)間值,時(shí)間戳

⑧ datetime:混合日期和時(shí)間類型(YYYY-MM-DD HH:MM:SS)

⑨ date:日期類型(YYYY-MM-DD)

⑩ time:時(shí)間類型(HH:MM:SS)

????在數(shù)據(jù)庫(kù)操作時(shí),需要用use命令選擇要操作的數(shù)據(jù)庫(kù),使用后,后續(xù)操作都是基于這個(gè)庫(kù)進(jìn)行的,后續(xù)如果想操作其他數(shù)據(jù)庫(kù),則再使用use進(jìn)行切換,如use online_shop。

①?創(chuàng)建數(shù)據(jù)表(create):

create table?<數(shù)據(jù)表名稱>?(column_name?column_type);

②?查詢已存在的表(show):

show tables;

->【舉個(gè)栗子】:創(chuàng)建一張t_user的表,需要包含用戶id、姓名、體重、用戶生日,則創(chuàng)建表的SQL如下:

create table if not exists t_user(id int primary key auto_increment comment '用戶id',name varchar(30) not null comment '姓名',weight double comment'體重',birthday datetime comment '用戶生日')ENGINE=InnoDB?DEFAULT?CHARSET=utf8;

【實(shí)例關(guān)鍵字解析】:primary key:用于定義列為主鍵。auto_increment:自增的屬性,一般用于主鍵,數(shù)值會(huì)自動(dòng)加1。not null:不允許為空,在操作數(shù)據(jù)庫(kù)時(shí)如果輸入該字段的數(shù)據(jù)為NULL,就會(huì)報(bào)錯(cuò)。comment:備注??梢越o每個(gè)字段備注說(shuō)明。ENGINE:設(shè)置存儲(chǔ)引擎,CHARSET 設(shè)置編碼。if not exists:如果要?jiǎng)?chuàng)建的表不存在,則會(huì)創(chuàng)建,反之,則不會(huì)創(chuàng)建。

3、查看表結(jié)構(gòu)/刪除數(shù)據(jù)表

① 查看表結(jié)構(gòu)(desc):

desc <數(shù)據(jù)表名稱>;

② 刪除數(shù)據(jù)表:

drop table?<數(shù)據(jù)表名稱>?;

->【舉個(gè)栗子】:先創(chuàng)建一張t_goods表,再查看該表的結(jié)構(gòu),最后將該表刪除,如下:

--------創(chuàng)建t_goods表---------
create table if not exists t_goods(
id int primary key auto_increment comment '商品id',
name varchar(100) not null comment '商品名稱',
price double not null comment '商品價(jià)格',
create_time datetime not null comment '訂單創(chuàng)建時(shí)間'
)ENGINE=InnoDB DEFAULT CHARSET=utf8;

-------查看表結(jié)構(gòu)------------
desc t_goods;

-------刪除表----------------
drop? table? t_goods;

4、修改表(alter)

① 修改表名:

alter table <舊表名> rename <新表名>;

②表中修改列名:

alter table <表名> change column <舊列名>?<新列明>?<類型>;

③?表中修改列類型:

alter table <表名> modify <列名>?<新類型>;

④?表中添加列:

alter table <表名> add column <新列名>?<類型>;

⑤ 表中刪除列:

alter table <表名> drop column <列名>;

? 【注意】:實(shí)際工作中,生產(chǎn)環(huán)境創(chuàng)建庫(kù)都是由DBA/運(yùn)維執(zhí)行的。千萬(wàn)不要執(zhí)行drop相關(guān)操作(不過(guò)一般情況下,DBA不會(huì)授予其他人該操作的權(quán)限,但是也不要去嘗試,萬(wàn)一沒(méi)有做限制呢~)。

四、數(shù)據(jù)庫(kù)CRUD語(yǔ)句

1、插入數(shù)據(jù)(INSERT)

----【格式1】:指定所要插入數(shù)據(jù)的列

insert?into?<數(shù)據(jù)表名稱>?(?field1,?field2,...fieldN?)?values(?value1,?value2,...valueN?);

->【舉個(gè)栗子】:

insert?into?t_user?(name,weight,birthday)?values('xcc',100.5,now());

insert?into?t_user?(name,weight,birthday)?values('aa',110.6,'2020-10-12');

insert?into?t_user?(name,weight,birthday)?values('bb',120.7,'2020-11-11?11:11:11');

----【格式2】:不指定列名的方式,該種格式需要按照表中列名的順序?qū)憊alue值

insert?into?<數(shù)據(jù)表名稱>?values(?value1,?value2,...valueN?);

->【舉個(gè)栗子】:

insert?into?t_user?values(10,'zz',150,'2022-12-03')

2、修改數(shù)據(jù)(UPDATE)

update table_name SET field1=new-value1, field2=new-value2[WHERE Clause]

->【舉個(gè)栗子】:

update?t_user?set?weight?=?90?where?name?=?'zz';

3、刪除數(shù)據(jù)(DELETE)

deletefrom<數(shù)據(jù)表名稱>?[WHEREClause]

->【舉個(gè)栗子】:

delete?from?t_user?where?name?=?'zz';

4.查詢數(shù)據(jù)(select)

SELECT column_name,column_nameFROM?<數(shù)據(jù)表名稱>

[WHERE Clause]

[LIMIT N]

->【舉個(gè)栗子】:

①查詢用戶表的所有數(shù)據(jù):

select * from t_user;

② 查詢用戶表中的id、name:

select id,name from t_user;

????以上的select只是最基本的演示,實(shí)際工作中,測(cè)試人員使用最多的是select語(yǔ)句,也是最重要的。但是筆者在面試中發(fā)現(xiàn),很多有多年工作經(jīng)驗(yàn)的工程師其實(shí)這塊都是比較弱的,所以我會(huì)在下一篇文章與大家分享更多關(guān)于select語(yǔ)句的使用。另外,關(guān)于MySQL的知識(shí),比如索引、備份、慢日志、查看執(zhí)行計(jì)劃等知識(shí),大家如果有興趣也可以留言給我,我會(huì)在后期的文章中分享,在實(shí)操過(guò)程中,如遇到問(wèn)題也歡迎在公眾號(hào)留言,我收到后會(huì)盡快回復(fù)。


五、小貼士

1、DDL

Data Definition Language 數(shù)據(jù)定義語(yǔ)言:用于操作對(duì)象及對(duì)象本身,這種對(duì)象包括數(shù)據(jù)庫(kù)、表對(duì)象及視圖對(duì)象。包含操作語(yǔ)句:

create:創(chuàng)建數(shù)據(jù)庫(kù)和數(shù)據(jù)庫(kù)的一些對(duì)象;drop:刪除數(shù)據(jù)表、索引、觸發(fā)程序、條件約束以及數(shù)據(jù)表的權(quán)限等;
alter:修改數(shù)據(jù)表定義及數(shù)據(jù)屬性;

2、DML

Data Manipulation Language 數(shù)據(jù)操控語(yǔ)言:用于操作數(shù)據(jù)庫(kù)對(duì)象對(duì)象中包含的數(shù)據(jù)。包含操作語(yǔ)句:

insert:向數(shù)據(jù)庫(kù)插入一條數(shù)據(jù);
delete:刪除表中的一條或多條記錄;
update:用于修改表中的數(shù)據(jù);

3、DQL

Data Query Language 數(shù)據(jù)查詢語(yǔ)言:用于查詢數(shù)據(jù)。包含操作語(yǔ)句:select

4、DCL

Data Control Language 數(shù)據(jù)控制語(yǔ)句:用于操作數(shù)據(jù)庫(kù)對(duì)象的權(quán)限。包含操作語(yǔ)句:

greate:分配權(quán)限給用戶
revoke:廢除數(shù)據(jù)庫(kù)中某用戶的權(quán)限





【愛(ài)測(cè)試·愛(ài)分享】


更多內(nèi)容可關(guān)注公眾號(hào):測(cè)試專享

專注于性能、自動(dòng)化、接口測(cè)試、中間件等技術(shù),與您分享測(cè)試技術(shù)點(diǎn)滴,內(nèi)容涵蓋:Jmeter、PTS、Python、Selenium、小程序自動(dòng)化、Linux等熱門測(cè)試技術(shù),讓您在實(shí)戰(zhàn)中提升自我。在手機(jī)上閱讀所有文章,隨時(shí)隨地都能學(xué)習(xí)。


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容