MySQL入門

簡介:MySQL數(shù)據(jù)庫簡稱MySQL,是一款由瑞典MySQL AB公司開發(fā)并且應(yīng)用廣泛的數(shù)據(jù)管理系統(tǒng),MySQL數(shù)據(jù)庫因其體積小、速度快、總體擁有成本低受到很多的熱捧?,F(xiàn)在,MySQL的所有者世界上最著名的數(shù)據(jù)庫企業(yè)——Oracle所有。

MySQL的應(yīng)用,在國內(nèi)的企業(yè)包括:百度、阿里、騰訊、新浪、搜狐、網(wǎng)易等等企業(yè),全部都在使用MySQL數(shù)據(jù)庫。

??? MySQL是一種開放源代碼的關(guān)系型數(shù)據(jù)庫管理系統(tǒng)(RDBMS),MySQL數(shù)據(jù)庫系統(tǒng)使用最常用的數(shù)據(jù)庫管理語言--結(jié)構(gòu)化查詢語言(SQL)進行數(shù)據(jù)庫管理。

??? 由于MySQL是開放源代碼的,因此任何人都可以在GPL的許可下下載并根據(jù)個性化的需要對其進行修改。MySQL因為其速度、可靠性和適應(yīng)性而備受關(guān)注。大多數(shù)人都認為在不需要事務(wù)化處理的情況下,MySQL是管理內(nèi)容最好的選擇。

? PHP與很多數(shù)據(jù)庫結(jié)合都很緊密。由于,PHP和MySQL都是開源免費的。所以PHP一直對于MySQL等數(shù)據(jù)庫都有很好的支持。

Oracle數(shù)據(jù)庫的默認端口:1521

MySQL數(shù)據(jù)庫的默認端口:3306

sqlserver數(shù)據(jù)庫的默認端口號為:1433

1,數(shù)據(jù)庫的五個基本單位

數(shù)據(jù)庫服務(wù)器,數(shù)據(jù)庫,數(shù)據(jù)表,數(shù)據(jù)字段,數(shù)據(jù)行

我們現(xiàn)在來對上面的五個基本單位進行說明:

數(shù)據(jù)庫服務(wù)器:是指用來運行數(shù)據(jù)庫服務(wù)的一臺電腦。在中小型企業(yè)通常為一臺。在數(shù)據(jù)存儲量計算量很大的時候可以存在多臺。多臺數(shù)據(jù)庫服務(wù)器共同來存儲或計算。由于數(shù)據(jù)安全非常重要,我們經(jīng)常會對數(shù)據(jù)庫服務(wù)器里面的數(shù)據(jù)進經(jīng)備份。

數(shù)據(jù)庫:一個數(shù)據(jù)庫服務(wù)器里面有可以有多個數(shù)據(jù)庫。主要用來分類使用。我們可以建立交通信息數(shù)據(jù)庫、游戲數(shù)據(jù)庫、酒店開房數(shù)據(jù)庫... ... 主要用來將各個不同用途的數(shù)據(jù),按照業(yè)務(wù)進行大塊的劃分。

數(shù)據(jù)表:例如在游戲數(shù)據(jù)庫中。根據(jù)這一款游戲又分為了不同的數(shù)據(jù)表。專門用來區(qū)分游戲不同的數(shù)據(jù)。例如:用戶數(shù)據(jù)(用戶、密碼);人物數(shù)據(jù);所有裝備和裝備信息;用戶的充值信息;藥品、魔力藥水信息... ...等

數(shù)據(jù)字段:也叫數(shù)據(jù)列。就是我們?nèi)粘K姳砀窭锩娴牧?。在表格中,我們會將一張用戶表分成多個列。如下(表一)所示:用戶編號、用戶名、性別、年齡是字段。在真正的數(shù)據(jù)庫中數(shù)據(jù)字段需要換成英文需要寫成:id、username、sex、年齡。

數(shù)據(jù)行:真正的數(shù)據(jù)存在每一個表的行里面。字段(列)劃分出來了一個表應(yīng)該按照什么樣的格式存數(shù)據(jù)。而行,是真正的數(shù)據(jù)。每一行需要遵循數(shù)據(jù)字段(列)的規(guī)范和要求進行存入數(shù)據(jù)。

2,Mysql連接數(shù)據(jù)庫

方法一

安裝后,可以在開始菜單的列表中找到MySQL Command Line 點擊操作的命令行終端操作。效果如圖:

方法二

如果加入到了windows的環(huán)境變量中,可以在命令行下直接操作。

在命令行下,通過以下命可以連接到數(shù)據(jù)庫服務(wù)器:

mysql -h localhost -u root -p

上面的命令中: mysql 表示 mysql數(shù)據(jù)庫啟動工具。

參數(shù)說明

-h? ?表示數(shù)據(jù)庫連接地址,連接本機可不填

-u? ? 表示要登錄的用戶

-p? ? ?表示使用密碼登錄

一、創(chuàng)建數(shù)據(jù)庫

基本語法create database +數(shù)據(jù)庫名;

示例???create database php;

????????創(chuàng)建?數(shù)據(jù)庫

二、查看數(shù)據(jù)庫

show databases;

顯示??數(shù)據(jù)庫

三、選中數(shù)據(jù)庫

use php;

使用 庫名

四、查看數(shù)據(jù)庫中的表

show tables;

?顯示表

五、刪除數(shù)據(jù)庫

drop database +庫名;

示例?drop database php

1.2 Mysql數(shù)據(jù)表操作

一、創(chuàng)建表

create table 表名(字段名1字段類型,......字段名n 字段類型n);

示例create table user(usernamevarchar(20),password varchar(32));

示例說明 創(chuàng)建一個表名叫user的表,第一個字段為username、表的

字段類型位varchar長度為32個長度。第二個字段為password,類型

也為varchar,長度也為32個長度。

注釋:

int,代表整型。float,代表浮點。char和varchar代表字符串即可。

其他示例:

mysql> create table emp(

ename varchar(10),

hiredate date,

sal float(10,2),

deptno int(2)


二、查看表的創(chuàng)建語句

show create table 表名\G;

示例show create table emp\G;


三、刪除表

drop table 表名;

示例drop table emp;

1.3 Mysql數(shù)據(jù)字段操作

一、查看表結(jié)構(gòu)

desc +表名;

示例desc emp;

二、修改表字段類型

?alter table表名modify 字段名varchar(20);

示例?alter table user modify username varchar(20);

示例說明?????? 將user表的username的類型改為varchar(20)

三、增加表字段

alter table 表名add

column 字段名 類型;

示例?alter table user add column age int(3);

示例說明?添加一個字段為age ,類型為整型長度為3

四、增加字段時控制字段順序

alter table 表名add 字段名字段類型after 字段名;

示例alter table user add email varchar(60) aftercreateip;

示例說明?user表中,在createip 后增加一個字段為email,

類型為varchar, 長度為60

五、刪除表字段

??alter table表名drop

column 字段名;

?示例?alter table user dropcolumn age;

示例說明?在user 表中刪除字段age

六、表字段改名

??alter table表名change 字段原名字段新名 字段類型;

示例?alter table user change email em varchar(60);

示例說明?在user 表中將字段中的email 字段名字改為em

七、修改表字段排列順序

在前的字段增加和修改語句(add/change/modify)中,最后都可以加一個可選項 first|after。

?????? 增加表字段時我們已經(jīng)學過了如何調(diào)整順序。我們現(xiàn)在來看看另外的change或modify如何來調(diào)整順序

示例?alter table user modify em varchar(60) first;

八、修改表名

alter table 舊表名rename 新的表名;

示例?????? altertable user rename new_user;

示例說明?????? 將user表名改為new_user




1.4 Mysql數(shù)據(jù)類型

整型

MySQL數(shù)據(jù)類型所占字節(jié)值范圍

tinyint1字節(jié)-128~127

smallint2字節(jié)-32768~32767

mediumint3字節(jié)-8388608~8388607

int4字節(jié)范圍-2147483648~2147483647

bigint8字節(jié)+-9.22*10的18次方

整型的長度不同,在實際使用過程也就不同。

?

浮點類型

MySQL數(shù)據(jù)類型所占字節(jié)值范圍

float(m, d)4字節(jié)單精度浮點型,m總個數(shù),d小數(shù)位

double(m, d)8字節(jié)雙精度浮點型,m總個數(shù),d小數(shù)位

decimal(m, d)decimal是存儲為字符串的浮點數(shù)


字符類型

MySQL數(shù)據(jù)類型所占字節(jié)值范圍

CHAR0-255字節(jié)定長字符串

VARCHAR0-255字節(jié)變長字符串

TINYBLOB0-255字節(jié)不超過255個字符的二進制字符串

TINYTEXT0-255字節(jié)短文本字符串

BLOB0-65535字節(jié)二進制形式的長文本數(shù)據(jù)

TEXT0-65535字節(jié)長文本數(shù)據(jù)

MEDIUMBLOB0-16 777 215字節(jié)二進制形式的中等長度文本數(shù)據(jù)

MEDIUMTEXT0-16 777 215字節(jié)中等長度文本數(shù)據(jù)

LOGNGBLOB0-4 294 967 295字節(jié)二進制形式的極大文本數(shù)據(jù)

LONGTEXT0-4 294 967 295字節(jié)極大文本數(shù)據(jù)

VARBINARY(M)允許長度0-M個字節(jié)的定長字節(jié)符串值的長度+1個字節(jié)

BINARY(M)M允許長度0-M個字節(jié)的定長字節(jié)符串


時間類型

MySQL數(shù)據(jù)類型所占字節(jié)值范圍

date3字節(jié)日期,格式:2014-09-18

time3字節(jié)時間,格式:08:42:30

datetime8字節(jié)日期時間,格式:2014-09-18 08:42:30

timestamp4字節(jié)自動存儲記錄修改的時間

year1字節(jié)年份


復合類型

MySQL數(shù)據(jù)類型說明舉例

set集合類型set(“member”, “member2″, …

? “member64″)

enum枚舉類型enum(“member1″, “member2″,

? … “member65535″)

一個 ENUM 類型只允許從一個集合中取得一個值;而 SET 類型允許從一個集合中取得任意多個值。

1.5 Mysql字符集

英文字符集:

字符集說明字節(jié)長度

ASCII美國標準信息交換代碼單字節(jié)

GBK漢字內(nèi)碼擴展規(guī)范雙字節(jié)

unicode萬國碼4字節(jié)

UTF-8Unicode的可變長度字符編碼1到6個字節(jié)

注意:

?mysql在寫utf-8的時候?qū)懙氖莡tf8。不加中間的中橫線。

1.6 Mysql索引

一、MySQL的索引類型

普通索引:最基本的索引,它沒有任何限制

唯一索引:某一行啟用了唯一索引則不準許這一列的行數(shù)據(jù)中有重復的值。針對這一列的每一行數(shù)據(jù)都要求是唯一的

主鍵索引:它是一種特殊的唯一索引,不允許有空值。一般是在建表的時候同時創(chuàng)建主鍵索引,常用于用戶ID。類似于書中的頁碼

全文索引:對于需要全局搜索的數(shù)據(jù),進行全文索引

?

普通索引

基本語法?????? altertable表? add index(字段)

示例?????? ALTERTABLE money ADD INDEX(username);

示例解釋?????? 為money表的username字段增加索引

唯一索引

類型?????? 詳細說明

基本語法?????? altertable表? addUNIQUE(字段)

示例?????? ALTERTABLE money ADD UNIQUE(email);

示例解釋?????? 為money表的email字段增加唯一索引


全文索引

類型?????? 詳細說明

基本語法?????? altertable表? addFULLTEXT(字段)

示例?????? ALTERTABLE money ADD FULLTEXT(content);

示例解釋?????? 為money表的content字段增加唯一索引


主鍵索引

類型?????? 詳細說明

基本語法?????? altertable表? addPRIMARY KEY(字段)

示例?????? ALTERTABLE money ADD PRIMARY KEY(id);

示例解釋?????? 為money表的id字段增加主鍵索引

創(chuàng)建表時也可以聲明索引

創(chuàng)建表時可在創(chuàng)建表語句后加上對應(yīng)的類型即可聲明索引:


PRIMARY KEY(字段)

?INDEX [索引名] (字段)

?FULLTEXT [索引名] (字段)

?UNIQUE[索引名] (字段)

注:中括號中的索引名,代表可選。


整體示例如下:

CREATE TABLE?test?(


id?INT NOT NULL ,?


username?VARCHAR(20) NOT NULL ,?


password?INT NOT NULL ,?


content?VARCHAR(20) ,?

? ? ?PRIMARY KEY (

id),?

? ? ?INDEX pw (

password),?

? ? ?UNIQUE (

username),

? ? ?FULLTEXT (

content)

) ENGINE = InnoDB;

1.7增刪改查之插入記錄

一、插入記錄有兩種個基本語法

插入基本語法一

基本語法?????? insertinto表 values(值1,值2,值n);

示例?????? INSERTINTO user values(2,'php中文網(wǎng)','男')

示例說明?????? 向user表中插入值id為2,姓名為李文凱,性別為男

插入基本語法二

基本語法?????? insertinto表(字段1,字段2,字段n) values(值1,值2,值n);

示例?????? INSERTINTO user(id,username,sex) values(213,'小沈陽',1);

示例說明?????? 向user表中插入id為213,username為小沈陽,性別為1

說明:

基本語法1和基本語法2的區(qū)別是:

?????? 基本語法1的插入語句,表中有多少個字段就必須要插入多少個值。

一個不能多,一個也不能少。若有默認值,不想傳,可以寫上null。

?????? 基本語法2中,除非有必填字段必須要寫入值外。如果有默認值的

不想寫可以忽略不寫。mysql會自動補主默認值。

基本語法2中,以user(id,username,sex)字段順序為值的順序。

二、基礎(chǔ)查詢

基本語法?????? select* from表;

示例?????? select* from money;

示例說明?????? 查詢money表中所有字段中的所有結(jié)果

注:”*” 是一種正則表達式的寫法,表示匹配所有,上面的查詢語句和下面的是等價:

三、指定字段查詢

基本語法?????? select字段 from 表;

示例?????? selectid,username, balance from money;

示例說明?????? 查詢money表中id,username, balance字段中的所有結(jié)果

四、查詢單個字段不重復記錄distinct

基本語法?????? selectdistinct字段 from 表;

示例?????? selectdistinct age deptno from money;

示例說明?????? 查詢money表中年齡唯一的所有結(jié)果

五、條件查詢where

基本語法?????? select? 字段 from 表 where where條件;

示例?????? select* from money where age = 29;

示例說明?????? 查詢money表中年齡為29的所有結(jié)果

除此之外,還可以使用>、<、>=、<=、!=等比較運算符;

六、邏輯運算符

where多個條件還可以使用 or(或者) 、 and(并且) 等邏輯運算符進行多條件聯(lián)合查詢

七、結(jié)果集排序

基本語法?????? select字段 from 表order? by字段 排序關(guān)鍵詞

示例?????? selectid,username, balance from money order by balance desc;

示例說明?????? 查詢money表中的id,username,balance字段,按照余額進行降序排序

排序用到的關(guān)鍵詞:

asc? 升序排列,從小到大(默認)

desc 降序排列,從大到小

八、結(jié)果集限制

?????? 對于查詢或者排序后的結(jié)果集,如果希望只顯示一部分而不是全部,

使用 limit 關(guān)鍵字結(jié)果集數(shù)量限制。

基本語法?????? select字段 from 表? limit數(shù)量;

示例?????? selectid,username, balance from money limit 5;

示例說明?????? 顯示前五個用戶

九、限制結(jié)果集并排序

基本語法?????? select字段 from 表order by 字段 關(guān)鍵詞 limit 數(shù)量

示例?????? selectid,username, balance from money order by balance desc limit 5;

示例說明?????? 按照錢來排序,顯示前五個最有錢的用戶

十、統(tǒng)計類函數(shù)使用

函數(shù)?????? 說明

sum??????? 求和

count???? 統(tǒng)計總數(shù)

max 最大值

min 最小值

avg? 平均值

基本語法?????? select函數(shù)(字段) from 表

示例?????? selectcount(id) from money

示例說明?????? 查詢money表的id總數(shù)

你還可以給字段取別名喲!使用as關(guān)鍵字。


例如mysql> select count(id) as zongshu

from money;

十一、分組group by

基本語法?????? select* from表 group by 字段

示例?????? select* from money group by province;

示例說明?????? 按照地區(qū)進行分組

統(tǒng)計分組(分類)各總數(shù):

mysql> select deptno,count(1) from emp group by deptno;

統(tǒng)計省份數(shù)量后再進行分組顯示

mysql> selectcount(province),province? from moneygroup by province;

在分組基礎(chǔ)上進行統(tǒng)計

with rollup用的很少。這個知識點設(shè)置為了解級別。

它的主要功能是對于分組的數(shù)據(jù)進行統(tǒng)計后,再進行一次總數(shù)統(tǒng)計。

類別?????? 詳細解示

基本語法?????? select* from表 group by 字段withrollup

示例?????? selectcount(province),province? from moneygroup by province with rollup;

示例說明?????? 對分組的數(shù)再次進行統(tǒng)計

在上面的基礎(chǔ)上統(tǒng)計總數(shù),下例結(jié)果中,最后多了一個12 NULL。

mysql> selectcount(province),province? from moneygroup by province with rollup;

結(jié)果再過濾having

having子句與where有相似之處但也有區(qū)別,都是設(shè)定條件的語句。

having 是篩選組 而where是篩選記錄。

類別?????? 詳細解示

基本語法?????? select* from表 group by 字段 having 條件

示例?????? selectcount(province) as result ,province? frommoney group by province having result >2;

示例說明?????? 對地區(qū)分組并統(tǒng)計總數(shù),將分組結(jié)果中大于2的分組地區(qū)顯示出來

mysql> select count(province) as result,province? from money group by provincehaving result >2;

整體使用SQL

?????? 我們現(xiàn)在將語句進行整合后,配合使用一次。整體的SQL語句配合使用的語法結(jié)構(gòu)如下:

SELECT

????[字段1 [as 別名1],[函數(shù)(字段2) ,]......字段n]

?FROM表名

?[WHERE where條件]

?[GROUP BY字段]

?[HAVING where_contition]

?[order條件]

?[limit條件]

注:上面的語句中可以[] 代表可選。最終的語法總結(jié)如下:

關(guān)鍵詞?? 說明

select???? 選擇的列

from?????? 表

where???? 查詢的條件

group by 分組屬性? having分組過濾的條件

order by 排序?qū)傩?/p>

limit 起始記錄位置,取記錄的條數(shù)

我們進行一次整體的給合使用,查詢money表字段:id,username,balance,province 要求id>1 余額大于50,使用地區(qū)進行分組。我們使用用戶id進行降序,要求只準顯示3條。最后將SQL語句寫成,查詢出來的結(jié)果如下:


mysql> selectid,username,balance,province from money where id > 1 and balance > 50group by province order by id desc limit 3;

1.8 Mysql多表聯(lián)合查詢

user表創(chuàng)建語句:

CREATE TABLE IF NOT EXISTS user (

??uid int(11) NOT NULL,

??username varchar(30) NOT NULL,

??password char(32) NOT NULL

?)ENGINE=InnoDB DEFAULT CHARSET=utf8;


CREATE TABLE IF NOT EXISTS order_goods (

??oid int(11) NOT NULL,

??uid int(11) NOT NULL,

??name varchar(50) NOT NULL,

??buytime int(11) NOT NULL

?)ENGINE=InnoDB DEFAULT CHARSET=utf8;


user表數(shù)據(jù):

INSERT INTO user(uid,username,password)values('1','jintian','123456');

INSERT INTO user(uid,username,password)values('2','zhangsha','1234f56');

INSERT INTO user(uid,username,password)values('3','wangwu','1234fs56');

INSERT INTO user(uid,username,password)values('4','lisi','123s456');

INSERT INTO user(uid,username,password)values('5','xiaotian','123d456');

INSERT INTO user(uid,username,password) values('6','wangfei','123f456');

INSERT INTO user(uid,username,password)values('7','oldboy','123w456');


order_goods數(shù)據(jù)如下:

INSERT INTOorder_goods(oid,uid,name,buytime) values('1','7','opper','12345622');

INSERT INTOorder_goods(oid,uid,name,buytime) values('2','2','iphone','1234356');

INSERT INTOorder_goods(oid,uid,name,buytime) values('3','4','xieli','12342s56');

INSERT INTOorder_goods(oid,uid,name,buytime) values('4','3','lisi','12322456');

INSERT INTOorder_goods(oid,uid,name,buytime) values('5','5','juzi','12344456');

INSERT INTOorder_goods(oid,uid,name,buytime) values('6','6','tianmiju','12322456');

INSERT INTOorder_goods(oid,uid,name,buytime) values('7','1','xiangjiao','12311456');

注意:在上表order_goods表中uid是指user表中的uid字段。上表中oid為1的數(shù)據(jù)行,uid為7的用戶。為user表中uid為7的用戶:oldboy。該用戶購買了商品為xiangjiao。購買時間buytime為一個unix時間戳。

mysql> select u.uid ,u.username as

username,o.oid,o.uid,o.name as shopname from user u,order_goods o ?where

u.uid = o.uid;

外連接

基本語法?????? select表1.字段 [as 別名],表n.字段? from表1 LEFT JOIN 表n on? 條件;

示例?????? select*? from user left join order_goods? on?user.uid = order_goods.uid;

示例說明?????? 以左邊為主,查詢哪些用戶未購買過商品,并將用戶信息顯示出來外連接又分為左連接和右鏈接,具體定義如下。


左連接:包含所有的左邊表中的記錄甚至是右邊表中沒有和它匹配的記錄

mysql> select *? from user left join order_goods? on?user.uid = order_goods.uid;

右連接:包含所有的右邊表中的記錄甚至是右邊表中沒有和它匹配的記錄

基本語法?????? select表1.字段 [as 別名],表n.字段? from表1 right JOIN 表n on? 條件;

示例?????? select*? from user right join order_goods? on?user.uid = order_goods.uid;

示例說明?????? 查詢商品表中哪些用戶購買過商品,并將用戶信息顯示出來

mysql> select *? from user right join order_goods? on? user.uid= order_goods.uid;

?

?

子查詢

?????? 有時候,當我們查詢的時候,需要的條件是另外一個select語句的結(jié)果,這時就需要使用子查詢。用于子查詢的關(guān)鍵字包括in、not in、=、!=、exists、not exists等。


基本語法?????? select字段? from表 where 字段 in(條件)

示例1??? select*? from user where uid in (1,3,4);

示例1說明?? 按照id 查詢指定用戶

示例2??? select*? from user where uid in (select uidfrom order_goods);

示例2說明?? 將購買過商品的用戶信息顯示出來

示例1:

mysql> select *? from user where uid in (1,3,4);

示例2:

mysql> select *? from user where uid in (select uid fromorder_goods);

記錄聯(lián)合

?????? 使用 union 和 union all 關(guān)鍵字,將兩個表的數(shù)據(jù)按照一定的查詢條件查詢出來后,將結(jié)果合并到一起顯示。兩者主要的區(qū)別是把結(jié)果直接合并在一起,而 union 是將 union all 后的結(jié)果進行一次distinct,去除重復記錄后的結(jié)果。

基本語法?????? select語句1 union[all] select語句2

示例?????? select*? from user where uid in (1,3,4);

示例說明?????? 將商品表中的用戶信息和用戶表中的用戶信息的結(jié)果組合在一起

mysql> select uid from user union selectuid from order_goods;

1.9 Mysql增刪改查之更新記錄

更新記錄

?????? 更新數(shù)據(jù)我們已經(jīng)說過。需要修改內(nèi)容,修改銀行卡余額,修改裝備信息的時候都需要使用到update,修改語句。

money表數(shù)據(jù)結(jié)構(gòu):

CREATE TABLE IF NOT EXISTS money (

??uid int(11) NOT NULL,

??username varchar(30) NOT NULL,

??balance DECIMAL(9,2) NOT NULL

?)ENGINE=InnoDB DEFAULT CHARSET=utf8;


money表數(shù)據(jù):

INSERT INTO money(uid,username,balance)values('1','zhangsai','15000.22');

INSERT INTO money(uid,username,balance)values('2','zhangsa','16000.22');

INSERT INTO money(uid,username,balance)values('3','lisi','17000.22');

INSERT INTO money(uid,username,balance)values('4','wangwu','18000.22');


修改(也叫更新)語句的基本語語法如下:

基本語法?????? update表名 set 字段1=值1,字段2=值2,字段n=值n where 條件

示例?????? updatemoney set? balance=balance-500 whereuserid = 15;

示例說明?????? 修改money表,將balance余額減500。要求userid為15

假設(shè)我們有下面這一個表,表結(jié)構(gòu)如下:

mysql> select * from money where username='lisi';

使用update 語句進行記錄更新

mysql>?update money set?balance=balance-500 where uid = 15;

同時對兩個表進行更新

基本語法?????? update表1,表2 set 字段1=值1,字段2=值2,字段n=值n where 條件

示例?????? updatemoney m,user u m.balance=m.balance*u.age where m.userid=u.id;

示例說明?????? 修改money,將money表的別名設(shè)置為m;user表的別名設(shè)置為u;將m表的余額改為m表的balance*用戶表的age。執(zhí)行條件是:m.userid = u.id

mysql> update money m,user um.balance=m.balance*u.password where m.uid=u.uid;

使用delete 刪除記錄

基本語法?????? DELETEFROM表 [where 條件];

示例?????? DELETEFROM user where id > 10;

示例說明?????? 刪除掉用戶表中id大于10的所有用戶

mysql> DELETE FROM money where uid='1';

?Query OK, 1 row affected (0.08 sec)

刪除掉了id為1的記錄。

清空表記錄

?????? delete和truncate是一樣的,但它們有一點不同,那就是DELETE可以返回被刪除的記錄數(shù),而TRUNCATE TABLE返回的是0。

?????? 如果一個表中有自增字段,使用truncate table 這個自增字段將起始值恢復成1.

基本語法?????? TRUNCATETABLE表名;

示例?????? TRUNCATETABLE user;

示例說明?????? 清空表的數(shù)據(jù),并且讓自增的id從1開始自增

【切記】

刪除時一定要記住加上where條件,不然會清空掉整個表的記錄。

刪除重要數(shù)據(jù)前一定要備份、備份、備份。

2.0 Mysql 權(quán)限操作

添加權(quán)限

類別?????? 詳細解示

基本語法?????? grant權(quán)限 on 庫.表 to '用戶'@'主機'

identified by '密碼';

示例?????? grantselect, insert on test.* to 'liwenkai'@'localhost' identified by '4311';

示例說明?????? 給予liwenkai用戶,在本機連接test庫所有表的權(quán)限。操作的這些表具有查詢和寫入權(quán)限

注:可以針對一個用戶增加多條權(quán)限。

刪除權(quán)限

基本語法?????? revoke權(quán)限 on 庫.表 from '用戶'@'主機';

示例?????? revokeselect, insert on test.* to 'liwenkai'@'localhost' identified by '4311';

示例說明?????? 給予liwenkai用戶,在本機連接test庫所有表的權(quán)限。操作的這些表具有查詢和寫入權(quán)限。

參數(shù)說明

grant all? 在grant后接all說明給予所有權(quán)限

revoke all?????? 在revoke后接all說明刪除所有權(quán)限

權(quán)限on .?????? .所明給予所有庫所有表的操作權(quán)限

'用戶'@'主機' 主機里面若為%。任意來源的主機均可以使用這個用戶來訪問

創(chuàng)建數(shù)據(jù)庫用戶liwenkai ,具有對test數(shù)據(jù)庫中所有標的 select / insert 權(quán)限


示例:增加權(quán)限

mysql> grant select, insert on test.* to'liwenkai'@'localhost' identified by '4311';

?Query OK, 0 rows affected (0.00 sec)


示例:移除權(quán)限

mysql> revoke insert on test.* from'liwenkai'@'localhost';

?Query OK, 0 rows affected (0.30 sec)

補充:

查看用戶權(quán)限

查看當前用戶權(quán)限:

show grants;

查看其它用戶權(quán)限:

show grants for'test'@'localhost';

刷新權(quán)限

flush privileges;

2.1 PHP操作mysql數(shù)據(jù)庫

注意:

?????? 從PHP7開始默認不再支持mysql擴展,即不再支持mysql_*系列函數(shù)。請使用mysqli連接數(shù)據(jù)庫。

?????? mysqli即支持php5也支持php7。

創(chuàng)建表結(jié)構(gòu):

CREATE TABLE IF NOT EXISTS users (

?? idINT(10) NOT NULL,

??username varchar(30),

??password varchar(30),

??createtime date not null,

??createip binary(16)

);

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

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