-
互聯(lián)網(wǎng)安全法,互聯(lián)網(wǎng)凈網(wǎng)行動
-
”凈網(wǎng)2020”落實好維護網(wǎng)絡(luò)安全責(zé)任
-
關(guān)于端午節(jié)放假通知-宇眾網(wǎng)絡(luò)
-
宇眾網(wǎng)絡(luò)春節(jié)放假通知
-
關(guān)于公司收款銀行賬戶變更通知函-宇眾網(wǎng)絡(luò)
-
關(guān)于網(wǎng)上有人冒充我公司名義進行詐騙的公告。
-
關(guān)于端午節(jié)放假通知,節(jié)日放假,但是我們業(yè)務(wù)不“放假”-宇眾網(wǎng)絡(luò)
-
工信部進一步加強未備案網(wǎng)站管理工作的通知-宇眾網(wǎng)絡(luò)
-
關(guān)于東莞市宇眾網(wǎng)絡(luò)科技有限公司香港數(shù)據(jù)中心(香港機房)路由優(yōu)化通知
-
宇眾網(wǎng)絡(luò)慶祝五·一勞動節(jié)快樂
-
東莞東城機房網(wǎng)絡(luò)升級通知
-
臨近過年,互聯(lián)網(wǎng)IDC貴圈也有被騙的,請認準宇眾網(wǎng)絡(luò)公司官方聯(lián)系方式
-
我司已獲得ISP/ICP/IDC三證資格,更好的為客戶服務(wù)
-
關(guān)于浙江金華高防機房網(wǎng)絡(luò)線路切割通知
-
工信部近日下發(fā)關(guān)于進一步規(guī)范域名備案工作的通知
行業(yè)資訊
- 首頁
- 新聞中心
- 行業(yè)資訊
服務(wù)器:mysql 查詢+事務(wù)
DQL排序查詢
/*
默認升序排序
desc -- 降序排序
asc -- 升序排序
*/
select * from emp order by sal;
- 1
- 2
- 3
- 4
- 5
- 6
- 7
DQL聚合函數(shù)
- 作用:將一列數(shù)據(jù)作為一個整體,進行縱向的計算
- 語法格式: select 聚合函數(shù)(字段名) from 表名 [where 條件]
/*
- count() 統(tǒng)計個數(shù)
- sum() 求和
- max() 求最大值
- min() 求最小值
- avg() 求平均數(shù)
*/
select avg(sal) as '平均薪資' from emp where deptno = 20;
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
DQL分組查詢
/*
分組查詢 使用group by 子句
語法格式: select 分組字段/聚合函數(shù) from 表名 group by 分組字段
*/
//查詢平局薪資大于2000的部門
select deptno, avg(sal)
from emp where deptno is not null group by deptno
having avg(sal) > 2000;
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
limit關(guān)鍵字
通過limit關(guān)鍵字去指定要查詢數(shù)據(jù)的條數(shù),行數(shù)
select 字段 from 表名 limit offset,length;
`offset: 起始行數(shù),默認從0開始計數(shù)
length: 返回的行數(shù)(要查尋幾條數(shù)據(jù))
約束
約束名 | 約束關(guān)鍵字 |
---|---|
主鍵 | primary key |
唯一 | unique |
非空 | not null |
外鍵 | foreign key |
主鍵約束 primary key
特點 | 不可重復(fù) 唯一 非空 |
---|---|
作用 | 用來表示數(shù)據(jù)庫中的每一條記錄 |
/*
* 約束是指對數(shù)據(jù)進行一定的限制,來保證數(shù)據(jù)的完整性、有效性、正確性
**/
//主鍵約束--第一種寫法
create table student(
sid int(4) primary key,
sname varchar(20)
);
//主鍵約束--第二種寫法
create table student(
sid int(4),
sname varchar(20),
primary key(sid) //--指定sid為主鍵約束
);
//主鍵約束--第二種寫法
create table student(
sid int(4),
sname varchar(20)
);
/*通過DDL語句添加主鍵約束*/
alter table student add primary key(sid);
/*通過DDL語句刪除主鍵*/
alter table student drop primary key;
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
/**
* 主鍵自增
* 關(guān)鍵字: auto_increment 主鍵的自動增長 ,字段類型必須是整數(shù)類型
*/
create table student(
sid int(4) primary key auto_increment,
sname varchar(20)
) auto_increment=100; //自定義自增的起始位置,不寫默認從1開始
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
delete 和 truncate對自增長得影響
- delete 刪除表中的所有數(shù)據(jù),將表中的數(shù)據(jù)逐條刪除
- truncate 刪除表中的所有數(shù)據(jù),是將整個表刪除,然后在創(chuàng)建一個結(jié)構(gòu)相同表
/*delete 刪除所有數(shù)據(jù)*/
delete from student; //刪除對自增是沒有影響的
/*truncate 刪除所有數(shù)據(jù)*/
truncate table student;
- 1
- 2
- 3
- 4
非空約束 not null
/*添加非空約束*/
create table student(
sid int(4) primary key auto_increment,
sname varchar(20) not null //sname這列數(shù)據(jù)不可以為null
) ;
- 1
- 2
- 3
- 4
- 5
唯一約束 unique
/*表中的某一列不可以重復(fù)(對null值,不做唯一判斷)*/
create table student(
sid int(4) primary key auto_increment,
sname varchar(20) unique
) ;
- 1
- 2
- 3
- 4
- 5
- 6
主鍵約束: 唯一并且不可以為null
唯一約束: 唯一但是可以為null
默認值:字段名 字段類型 default 默認值
MySQL事務(wù)操作
事務(wù),是一個有一條或者多條sql語句組成的整體,事務(wù)中的操作,要么全部成功,要么全部失敗。
手動提交事務(wù)
功能 | 語句 |
---|---|
開啟事務(wù) | start transaction; 或者begin |
提交事務(wù) | commit |
回滾事務(wù) | rollback |
-
start transaction
這個語句顯示的標記一個事務(wù)的起始點 -
commit
表示提交事務(wù), 即提交事務(wù)的所有操作,具體的說,就是講事務(wù)中所有對數(shù)據(jù)庫的更新都寫到磁盤上的物理數(shù)據(jù)庫中,事務(wù)正常結(jié)束。 -
rollback
表示撤銷事務(wù),即在事務(wù)運行的過程中發(fā)生了某種故障,事務(wù)不能繼續(xù)進行,系統(tǒng)將事務(wù)中對數(shù)據(jù)庫所有已完成的操作全部撤銷,回滾到事務(wù)開始時的狀態(tài)。
事務(wù)的自動提交
/**
* 查看事務(wù)是否手動提交 (平常默認就是自動提交)
* 如果 autocommit 為on 則表示自動提交
*/
show variables like 'autocommit';
/*修改為手動提交*/
set @@autocommit = off;
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
事務(wù)的四大特性
特性 | 含義 |
---|---|
原子性 | 每個事務(wù)都是一個整體,不可以在拆分,事務(wù)中所有的SQL語句要么都執(zhí)行成功,要么都失敗。 |
一致性 | 事務(wù)在執(zhí)行前數(shù)據(jù)庫的狀態(tài)與執(zhí)行后數(shù)據(jù)庫的狀態(tài)保持一致。如:轉(zhuǎn)賬前兩人的總金額是10000, 轉(zhuǎn)賬后兩人的總金額還是10000 |
隔離性 | 事務(wù)與事務(wù)之間不應(yīng)該相互影響,執(zhí)行時保持隔離的狀態(tài) |
持久性 | 一但事務(wù)執(zhí)行成功,對數(shù)據(jù)庫的修改是永久的 ,就算關(guān)機,數(shù)據(jù)也是要保存下來的 |
事務(wù)的隔離級別
-
數(shù)據(jù)并發(fā)訪問
一個數(shù)據(jù)庫可能擁有多個訪問客服端,這些客服端都可以并發(fā)方式訪問數(shù)據(jù)庫。數(shù)據(jù)庫的相同事務(wù)可能被多個事務(wù)同時訪問,如果不采取隔離措施,就會導(dǎo)致各種問題,破壞事務(wù)的完整性。 -
并發(fā)訪問會產(chǎn)生的問題
事務(wù)在操作時的理想狀態(tài):所有事務(wù)之間保持隔離,互不影響。因為并發(fā)操作,多個用戶同時訪問同一個數(shù)據(jù),可能引起并發(fā)訪問的問題。
并發(fā)訪問的問題 | 說明 |
---|---|
臟讀 | 一個事務(wù)讀取到了另一個事務(wù)中尚未提交的數(shù)據(jù) |
不可重復(fù)讀 | 一事務(wù)中兩次讀取的數(shù)據(jù)內(nèi)容不一致,要求的是在一個事務(wù)中多次讀取時數(shù)據(jù)是一致的。這一般是update操作時引發(fā)的問題 |
幻讀 | 一個事務(wù)中,某一次的 select 操作所得到的結(jié)果所表征的數(shù)據(jù)狀態(tài),無法支撐后序的業(yè)務(wù)操作。查詢得到的數(shù)據(jù)狀態(tài)不準確,導(dǎo)致幻讀 |
四種隔離級別
-
read uncommitted--------讀未提交
可以防止哪些問題: 無 -
read committed--------讀已提交(Oracle 默認隔離級別)
可以防止哪些問題: 臟讀 -
repeatable read-------可重復(fù)讀(MySQL 默認隔離級別)
可以防止哪些問題: 臟讀,不可重復(fù)讀 -
serializable ------- 串行化
可以防止哪些問題: 臟讀,不可重復(fù)讀,幻讀 -
注意: 隔離級別從小到大,安全性是越來越高,但是效率是越來越低的,根據(jù)不同的情況來選擇不同的隔離級別
隔離級別的相關(guān)命令
/*
*查看隔離級別--mysql中默認顯示為 repeatable-read
**/
select @@tx_isolation;
/*
*設(shè)置隔離級別--新開鏈接才能查看隔離級別成功設(shè)置
**/
set global transaction isolation level 隔離級別
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
解決臟讀的問題
臟讀是非常危險的,比如張三向李四購買商品,張三開啟事務(wù)后向李四轉(zhuǎn)賬500塊錢,然后李四查詢這個錢已經(jīng)到賬了就把貨物交給了張三,張三收到貨后回滾事務(wù),李四再查時這500塊錢沒了。
- 解決方案:
一般來說,這應(yīng)該是隔離級別較低,比如read uncommitted級別,這時將級
別提高到read committed及以上就好了
- 1
- 2
- 3
- 4
解決不可重復(fù)讀的問題
不可重復(fù)讀就相當(dāng)于我第一次查詢時手機上短信顯示為1000元,然后我給卡里邊充了500,然后在電腦屏幕端顯示1500元,在我不知道已經(jīng)充了錢的情況下我不知道該選擇哪條短信。
- 解決方案:
和臟讀差不多,將全局的隔離級別提高到repeatable read 及以上
就好了
- 1
- 2
- 3
解決幻讀的問題
幻讀還是一樣,將隔離級別提到最高就好了,當(dāng)然也可深入了解