日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

MySQL多表查询和事务安全

發(fā)布時(shí)間:2025/3/20 52 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MySQL多表查询和事务安全 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

目錄

一、DQL語(yǔ)句

1.條件查詢

(1)比較運(yùn)算符

(2)邏輯運(yùn)算符

(3)范圍

(4)模糊查詢

(5)排序

(6)聚合函數(shù)

(7)分組

(8)limit語(yǔ)句

二、數(shù)據(jù)庫(kù)的約束

1.主鍵(PRIMARY KEY)

(1)主鍵的作用

(2)主鍵的特點(diǎn)

(3)創(chuàng)建主鍵

(4)刪除主鍵

(5)主鍵自增

2.唯一(UNIQUE)

3.非空(NOT NULL)

4.默認(rèn)(DEFAULT)

5.外鍵(FOREIGN KEY)

(1)新建表時(shí)增加外鍵

(2)已有表增加外鍵

(3)刪除外鍵

(4)外鍵的級(jí)聯(lián)

三、多表查詢

1.多表查詢的分類

2.內(nèi)連接

(1)隱式內(nèi)連接

(2)顯示內(nèi)連接

3.外連接

(1)左外連接

(2)右外連接

4.子查詢

四、事務(wù)安全

1.操作事務(wù)

2.事務(wù)原理

3.回滾點(diǎn)

(1)作用

(2)設(shè)置回滾點(diǎn)語(yǔ)法

(3)回到回滾點(diǎn)語(yǔ)法

4.事務(wù)的四大特性

5.事務(wù)的隔離級(jí)別


一、DQL語(yǔ)句

1.條件查詢

準(zhǔn)備數(shù)據(jù)

CREATE TABLE student3 ( id INT, NAME VARCHAR(20), age INT, sex VARCHAR(5), address VARCHAR(100), math INT, english INT );INSERT INTO student3(id,NAME,age,sex,address,math,english) VALUES (1,'馬云',55,'男','杭 州',66,78),(2,'馬化騰',45,'女','深圳',98,87),(3,'馬景濤',55,'男','香港',56,77),(4,'柳 巖',20,'女','湖南',76,65),(5,'柳青',20,'男','湖南',86,NULL),(6,'劉德華',57,'男','香港',99,99), (7,'馬德',22,'女','香港',99,99),(8,'德瑪西亞',18,'男','南京',56,65);

(1)比較運(yùn)算符

大于 ?> ????小于??<? ? ? ? ?小于等于 <=

等于? = ???不等于<> 、!=

①查詢math分?jǐn)?shù)大于80分的學(xué)生

SELECT * FROM ?student3 ?WHERE math>80;

②查詢english分?jǐn)?shù)小于或等于80分的學(xué)生

SELECT * FROM student3 WHERE english<=80

③查詢age等于20歲的學(xué)生

SELECT * FROM student3 WHERE age=20

④查詢age不等于20歲的學(xué)生

SELECT * FROM student3 WHERE age!=20

(2)邏輯運(yùn)算符

and:多個(gè)條件同時(shí)滿足

or:多個(gè)條件滿足其中一個(gè)

not(!)不滿足

①查詢age大于35且性別為男的學(xué)生(兩個(gè)條件同時(shí)滿足)

SELECT * FROM student3 WHERE age>35 AND sex='男'

②查詢age大于35或性別為男的學(xué)生(兩個(gè)條件其中一個(gè)滿足)

SELECT * FROM student3 WHERE age>35 OR sex='男'

In關(guān)鍵字: select 字段名 from 表名 where 字段 in(數(shù)據(jù)1,數(shù)據(jù)2)

in里面的每個(gè)數(shù)據(jù)會(huì)作為一次條件,只要滿足條件就會(huì)顯示

In列表的值類型必須一致或兼容

In列表里的值不能使用模糊查詢

③查詢id是1或3或5的學(xué)生

SELECT * FROM student3 WHERE id IN(1,3,5)

④查詢id不是1或3或5的學(xué)生

SELECT * FROM student3 WHERE id NOT IN(1,3,5)

(3)范圍

BETWEEN 值1 AND 值2

①查詢english成績(jī)大于等于75,且小于等于90的學(xué)生

SELECT * FROM student3 WHERE english BETWEEN 75 AND 90

(4)模糊查詢

LIKE表示模糊查詢。

? ? ? ? ? SELECT * FROM 表名 WHERE 字段名 LIKE ‘通配符字符串’

通配符字符串有兩個(gè):

%:表示0個(gè)或多個(gè)字符

_:表示一個(gè)字符

①查詢姓馬的學(xué)生

SELECT * FROM student3 WHERE NAME LIKE '馬%'

②查詢姓名中包含'德'字的學(xué)生

SELECT * FROM student3 WHERE NAME LIKE'%德%'

③查詢姓馬,且姓名有三個(gè)字的學(xué)生

SELECT * FROM student3 WHERE NAME LIKE'馬__'

(5)排序

ORDER BY

? ? ? ? ? ? ??ASC:升序

? ? ? ? ? ? ?DESC:降序

①單列排序

查詢所有數(shù)據(jù),使用年齡降序排序

SELECT * FROM student3 ORDER BY age DESC

②組合排序

查詢所有數(shù)據(jù),在年齡降序排序的基礎(chǔ)上,如果年齡相同再以數(shù)學(xué)成績(jī)降序排序

SELECT * FROM student3 ORDER BY age DESC,age ASC

(6)聚合函數(shù)

count():統(tǒng)計(jì)指定列記錄數(shù),NULL的不統(tǒng)計(jì)

sum():計(jì)算指定列的數(shù)值和,如果不是數(shù)值類型,結(jié)果為0

max():計(jì)算指定列的最大值

min():計(jì)算指定列的最小值

avg():計(jì)算指定列的平均值

①查詢學(xué)生總數(shù)

SELECT COUNT(*) FROM student3

②查詢年齡大于40的總數(shù)

SELECT COUNT(*) FROM student3 WHERE age>40

③查詢數(shù)學(xué)成績(jī)總分

SELECT SUM(math) FROM student3

④查詢數(shù)學(xué)成績(jī)平均分

SELECT AVG(math) FROM student3

⑤查詢數(shù)學(xué)成績(jī)最高分

SELECT MAX(math) FROM student3

⑥查詢數(shù)學(xué)成績(jī)最低分

SELECT MIN(math) FROM student3

(7)分組

GROUP BY

? ? ? ? ? ? SELECT 字段1,字段2... FROM 表名

? ? ? ? ? ? GROUP BY 分組字段 [HAVING 條件];

①按性別分組

SELECT sex FROM student3 GROUP BY sex

②查詢男女各多少人

SELECT sex,COUNT(*) FROM student3 GROUP BY sex

③查詢年齡大于25歲的人,按性別分組,統(tǒng)計(jì)每組的人數(shù)

SELECT sex,COUNT(*) FROM student3 WHERE age>25 GROUP BY sex

④查詢年齡大于25歲的人,按性別分組,統(tǒng)計(jì)每組的人數(shù),并只顯示性別人數(shù)大于2的數(shù)據(jù)

SELECT sex,COUNT(*) FROM student3 WHERE age>25 GROUP BY sex HAVING COUNT(*)>2

having與where的區(qū)別:

①having是在分組后對(duì)數(shù)據(jù)進(jìn)行過(guò)濾,可以使用聚合函數(shù)

②where是在分組前對(duì)數(shù)據(jù)進(jìn)行過(guò)濾,不可以使用聚合函數(shù)

(8)limit語(yǔ)句

限制查詢記錄的條數(shù)

LIMIT offset,length ?

? ? ? ? ? ?offset是指偏移量,默認(rèn)為0

? ? ? ? ? ?length是指需要顯示的總記錄數(shù)

①查詢學(xué)生表中數(shù)據(jù),從第三條開(kāi)始顯示,顯示6條

SELECT * FROM student3 LIMIT 2,6

二、數(shù)據(jù)庫(kù)的約束

1.主鍵(PRIMARY KEY)

(1)主鍵的作用

唯一標(biāo)識(shí)一條記錄

(2)主鍵的特點(diǎn)

①唯一

②不能包含NULL值

(3)創(chuàng)建主鍵

①在創(chuàng)建表的時(shí)候給字段添加主鍵

? ? ? ? ? ? ? ? ? 字段名 字段類型 PRIMARY KEY

②在已有表中添加主鍵

? ? ? ? ? ? ? ? ? ALTER TABLE 表名 ADD PRIMARY KEY(字段名);

(4)刪除主鍵

? ? ? ? ? ? ? ? ? ALTER TABLE 表名 DROP PRIMARY KEY;

(5)主鍵自增

字段名 字段類型 PRIMARY KEY ?AUTO_INCREMENT

DELETE和TRUNCATE的區(qū)別:

①DELETE 刪除表中的數(shù)據(jù),但不重置AUTO_INCREMENT的值。

②TRUNCATE 摧毀表,重建表,AUTO_INCREMENT重置為1。

2.唯一(UNIQUE)

字段名 字段類型 UNIQUE

3.非空(NOT NULL)

字段名 字段類型 NOT NULL

4.默認(rèn)(DEFAULT)

字段名 字段類型 DEFAULT 默認(rèn)值

5.外鍵(FOREIGN KEY)

(1)新建表時(shí)增加外鍵

[CONSTRAINT] [外鍵約束名稱] FOREIGN KEY(外鍵字段名) REFERENCES 主表名(主鍵字段名)

(2)已有表增加外鍵

ALTER TABLE 從表 ADD [CONSTRAINT] [外鍵約束名稱] FOREIGN KEY (外鍵字段名) REFERENCES 主表(主鍵字段名);

(3)刪除外鍵

ALTER TABLE 從表 drop foreign key 外鍵名稱;

(4)外鍵的級(jí)聯(lián)

在修改和刪除主表的主鍵時(shí),同時(shí)更新或刪除副表的外鍵值,稱為級(jí)聯(lián)操作。

ON UPDATE CASCADE:級(jí)聯(lián)更新

ON DELETE CASCADE:級(jí)聯(lián)刪除

三、多表查詢

1.多表查詢的分類

2.內(nèi)連接

(1)隱式內(nèi)連接

看不到JOIN 關(guān)鍵字,條件使用WHERE 指定 SELECT 字段名 FROM 左表, 右表 WHERE 條件;

(2)顯示內(nèi)連接

使用INNER JOIN ... ON 語(yǔ)句, 可以省略INNER SELECT 字段名 FROM 左表 INNER JOIN 右表 ON 條件;

3.外連接

(1)左外連接

使用LEFT OUTER JOIN ... ON,OUTER 可以省略

在內(nèi)連接的基礎(chǔ)上保證左表的數(shù)據(jù)全部顯示

(2)右外連接

使用RIGHT OUTER JOIN ... ON , OUTER 可以省略

在內(nèi)連接的基礎(chǔ)上保證右表的數(shù)據(jù)全部顯示

4.子查詢

(1)子查詢的結(jié)果是一個(gè)值

(2)子查詢的結(jié)果是單列多行

(3)子查詢的結(jié)果是多列多行

?

總結(jié):子查詢結(jié)果只要是單列,肯定在WHERE 后面作為條件

? ? ? ? ? ? ? ? ? ? ?SELECT 查詢字段 FROM 表 WHERE 字段=(子查詢);

? ? ? ? ? ?子查詢結(jié)果只要是多列,肯定在FROM 后面作為表

? ? ? ? ? ? ? ? ? SELECT 查詢字段 FROM (子查詢) 表別名 WHERE 條件;

四、事務(wù)安全

1.操作事務(wù)

(1)手動(dòng)提交事務(wù)

start transaction:開(kāi)啟事務(wù)

commit:提交事務(wù)

rollback:回滾事務(wù)

(2)自動(dòng)提交事務(wù)

2.事務(wù)原理

事務(wù)開(kāi)啟之后, 所有的操作都會(huì)臨時(shí)保存到事務(wù)日志, 事務(wù)日志只有在得到commit命令才會(huì)同步到數(shù)據(jù)表中,其他任何情況都會(huì)清空事務(wù)日志(rollback,斷開(kāi)連接)。

3.回滾點(diǎn)

(1)作用

可以供后續(xù)操作返回到該位置,而不是返回所有操作,這個(gè)點(diǎn)稱為回滾點(diǎn)。

(2)設(shè)置回滾點(diǎn)語(yǔ)法

savepoint 回滾點(diǎn)名字;

(3)回到回滾點(diǎn)語(yǔ)法

rollback to 回滾點(diǎn)名字;

4.事務(wù)的四大特性

5.事務(wù)的隔離級(jí)別

事務(wù)在操作時(shí)的理想狀態(tài):多個(gè)事務(wù)之間互不影響,如果隔離級(jí)別設(shè)置不當(dāng)就可能引發(fā)并發(fā)訪問(wèn)問(wèn)題。


?

總結(jié)

以上是生活随笔為你收集整理的MySQL多表查询和事务安全的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。