mysql 事务 数量_MySQL 数据查询语言(DQL) 事务控制语言(TCL)详解
一、 數(shù)據(jù)查詢語言(DQL)(重中之重)
完整語法格式:
select 表達(dá)式1|字段,....
[from 表名 where 條件]
[group by 列名]
[having 條件]
[order by 列名 [asc|desc]]
[limit 位置,數(shù)量]
<1> 普通查詢
select 查詢表達(dá)式; // 最簡單的sql語句,是一個(gè)函數(shù)
select database();
select version();
select now();
<2> 條件查詢
where 條件表達(dá)式, 支持運(yùn)算符和函數(shù)
MySQL支持的運(yùn)算符:
=、 !=、 >、 >=、
and、 or、 not
is null、 is not null
between...and... (區(qū)間查詢,多少到多少之間)
in(set);
like 通配符和占位符: % _ (模糊查詢)
%: 表示0個(gè)或者多個(gè)字符
_: 表示占位一個(gè)
-- 查詢所有的老師信息
select * from teacher;
-- 查詢id 大于2的老師信息
select * from teacher where id>2;
-- 查詢姓名為空的老師信息 在數(shù)據(jù)庫中null永遠(yuǎn)都不等于null,那么怎么去判斷null值?通過 is null / is not null
-- select * from teacher where name=null; # 錯(cuò)誤
select * from teacher where name is not null;
-- 查詢id為1 并且 姓名是 "xiaosi"的老師信息
select * from teacher where id=1 and name='xiaosi';
-- 查詢id為1 并且 姓名是 "xiaosi"的老師信息
select * from teacher where id=1 or name='xiaosi';
-- 查詢薪水在2000到10000之間的老師信息
select * from teacher where sal >=2000 and sal <=10000;
select * from teacher where sal between 2000 and 10000; # 這種方式等同于上面
-- 查詢姓名中有 ‘塵’ 字的老師信息
select * from teacher where name like '%塵%';
-- 查詢姓名是三個(gè)字的
select * from teacher where name like '___';
-- 查詢姓 '小' 的老師信息
select * from teacher where name like '小%';
-- 查詢名字中含有下劃線的老師信息 '\' 轉(zhuǎn)義
-- select * from teacher where name like '%_%'; # 錯(cuò)誤
select * from teacher where name like '%\_%';
<3> 分組查詢
語法格式:
[group by 列名] [haveing 條件]
一般情況分組查詢結(jié)合聚合函數(shù)一起使用
max()
min()
sum()
avg()
count()
-- 查詢每個(gè)部門的平居薪資
# select * from teacher GROUP BY dname
# 記住:分組的正確使用方式,group by 后面沒有出現(xiàn)的列名不能出現(xiàn)在select 和from 的中間,
# 雖然不報(bào)錯(cuò),但是不是分組的正確使用方式
# 聚合函數(shù)中出現(xiàn)的列名group by后面沒有無所謂
select dname from teacher GROUP BY dname;
select dname, avg(sal) from teacher GROUP BY dname;
<4> 排序查詢
語法格式:
order by 列名 asc|desc 默認(rèn)升序(asc)
-- 查詢老師信息,根據(jù)薪資進(jìn)行排序,要求從大到小進(jìn)行排序
select * from teacher order by sal desc; # 根據(jù)sal進(jìn)行降序排序
select * from teacher order by sal asc; # 根據(jù)sal進(jìn)行升序排序
select * from teacher order by sal; # 根據(jù)sal進(jìn)行升序排序, 利用默認(rèn)排序
<5> 限制結(jié)果集數(shù)量的查詢(分頁)
編號????商品名稱????商品價(jià)格????操作 1?????????玩具娃娃????100.0?????????刪除 修改 2?????????玩具汽車????200.0?????????刪除 修改 3?????????玩具飛機(jī)????300.0?????????刪除 修改 ................................ 首頁????上一頁????1 2 3 4 5????下一頁???尾頁
語法格式
limit n條數(shù);-------從第一條開始取n條數(shù)據(jù)(了解)
limit start開始下標(biāo)索引,count條數(shù); ---- 從起始位置start取count條數(shù)據(jù)(起始位置是從0開始的) (推薦使用)
分頁(每頁顯示兩條數(shù)據(jù))
第一頁:select * from teacher limit 0,2;
第二頁:select * from teacher limit 2,2;
第三頁:select * from teacher limit 4,2;
第四頁:select * from teacher limit 6,2;
第五頁:select * from teacher limit 8,2;
分頁公式:
開始下標(biāo)索引(起始位置) = (當(dāng)前頁-1)*每頁顯示條數(shù);
-- 每頁顯示3條
-- 顯示第二頁
select * from teacher limit 3,3;
<6> 擴(kuò)展
別名
select * from teacher; # 查詢表中所有字段記錄
select name, sal, dname from teacher; # 查詢表中指定字段記錄
-- 給查詢的字段設(shè)置別名 同時(shí)也可以給表設(shè)置別名 通過as 關(guān)鍵字實(shí)現(xiàn)別名
select name as '姓名', sal '薪資', dname '部門名稱' from teacher
二、 事務(wù)控制語言(TCL)
MySQL事務(wù)默認(rèn)自動(dòng)開啟的
在MySQL數(shù)據(jù)庫中只有使用了Innodb數(shù)據(jù)庫引擎的數(shù)據(jù)表或庫才會(huì)支持事務(wù)
通過事務(wù)來管理 insert、update、delete語句
事務(wù)必須滿足4個(gè)條件(ACID):
原子性(不可分割性): 要么全部完成,要么全部不完成,不會(huì)結(jié)束在中間的某個(gè)環(huán)節(jié)。在執(zhí)行的過程中一旦出現(xiàn)錯(cuò)誤/異常,會(huì)被回滾(Rollback)到事務(wù)開始前的狀態(tài),就像這個(gè)事務(wù)從來沒有執(zhí)行過一樣。
一致性: 事務(wù)處理前后數(shù)據(jù)保持一致
隔離性: 事務(wù)處理必須是獨(dú)立的彼此隔離
持久性: 事務(wù)對數(shù)據(jù)的修改永久保存
<1> 為什么使用事務(wù)
銀行轉(zhuǎn)賬
事務(wù)廣泛使用:訂單系統(tǒng),銀行系統(tǒng)等....
<2> MySQL事務(wù)控制
commit(提交)
rollback(回滾)
savepoint(事務(wù)節(jié)點(diǎn))
<3> 實(shí)戰(zhàn)操作
create table student(
id int,
name varchar(32),
age int,
money double
);
insert into student values(1, '老王', 18, 60000);
select * from student;
rollback;
手動(dòng)關(guān)閉事務(wù)提交語法:
set autocommit = false|true; // 設(shè)置事務(wù)的提交方式
rollback; // 事務(wù)回滾
commit; // 事務(wù)提交
savepoint 節(jié)點(diǎn)名稱; // 設(shè)置回滾的節(jié)點(diǎn)
rollback to 節(jié)點(diǎn)名稱; // 回滾到具體的某個(gè)節(jié)點(diǎn)
set autocommit = false; # 設(shè)置事務(wù)手動(dòng)提交
select * from student;
delete from student where id=1; # 刪除id為1 的信息
rollback; # 事務(wù)回滾
commit; # 事務(wù)提交
update student set money = money-30000 where id=1;
savepoint t1; # 設(shè)置事務(wù)節(jié)點(diǎn)
update student set money = money-20000 where id=1;
rollback to t1; # 回滾到t1節(jié)點(diǎn)位置
commit; # 事務(wù)提交
總結(jié)
以上是生活随笔為你收集整理的mysql 事务 数量_MySQL 数据查询语言(DQL) 事务控制语言(TCL)详解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: vs远程编译linux程序,使用Visu
- 下一篇: mysql clickhouse_通过m