日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

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

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > 数据库 >内容正文

数据库

mysql 外键和事务_Mysql (五)事务和外键

發(fā)布時(shí)間:2023/12/3 数据库 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql 外键和事务_Mysql (五)事务和外键 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一、 什么是事務(wù):簡(jiǎn)單說(shuō),所謂事務(wù)就是一組操作,這組操作要么都成功執(zhí)行,要么都不執(zhí)行。

二、 事務(wù)的使用流程

1. 第一步:開(kāi)啟事務(wù),start transaction;

2. 第二步:正常操作SQL語(yǔ)句,但是這些SQL語(yǔ)句被沒(méi)有真正更改數(shù)據(jù)庫(kù)的數(shù)據(jù)信息

3. 第三步:提交事務(wù),commit,當(dāng)提交事務(wù)后,SQL語(yǔ)句會(huì)被真正執(zhí)行,數(shù)據(jù)庫(kù)中的信息會(huì)被改變,注意如果要取消第二步的所有操作,那么可以使用rollback(回滾)語(yǔ)句

三、 事務(wù)的特性:原子性(Atomicity)、一致性(Consistency)、隔離性(Isolation)、持久性(Durability)

1. 原子性:一個(gè)事務(wù)中的所有操作,要么全部完成,要么全部不完成,不會(huì)結(jié)束在中間某個(gè)環(huán)節(jié)。事務(wù)在執(zhí)行過(guò)程中發(fā)生錯(cuò)誤,會(huì)被回滾(Rollback)到事務(wù)開(kāi)始前的狀態(tài),就像這個(gè)事務(wù)從來(lái)沒(méi)有執(zhí)行過(guò)一樣。

2. 一致性:數(shù)據(jù)在事務(wù)前后保持一致

3. 隔離性:某個(gè)事務(wù)的操作對(duì)其他事務(wù)不可見(jiàn)

4. 持久性:當(dāng)事務(wù)完成后,其影響應(yīng)該保留下來(lái),不能撤銷(xiāo)

四、 事務(wù)使用的注意事項(xiàng):存儲(chǔ)引擎必須是innodb,因?yàn)閙yisam不支持事務(wù)

create table account(

id int,

name char(10),

money int

);

insert into account values

(1,'張三',3000),

(2,'李四',3000);

update account set money = money - 500 where id = 1;

update account set money =money +500 where id =2;

start transaction; 開(kāi)啟

update account set money = money - 500 where id = 1;

update account set money =money +500 where id =2;

commit;

五、 視圖

1. 定義:視圖是由查詢結(jié)果形成的一張?zhí)摂M表

2. 格式:create view 視圖名稱 as select語(yǔ)句;

create view v as select * from student where ssex ='男';

select * from department left join employee on department.did = employee.did;

select aname,id,age from (select employee.*,aname from department left join employee on department.did = employee.did) as a;

create view v2 as select * from department left join employee on department.did = employee.did; 不允許有重復(fù)字段,報(bào)錯(cuò)

create view v2 as select employee.*,aname from department left join employee on department.did = employee.did;

select * from v2;

select * from v2 where did =1;

3. 什么時(shí)候用視圖:如果某個(gè)查詢結(jié)果出現(xiàn)的非常頻繁,也就是,要經(jīng)常拿這個(gè)查詢結(jié)果做子查詢

4. 視圖的作用

(1)簡(jiǎn)化操作,不用進(jìn)行多表查詢

(2)可以進(jìn)行權(quán)限控制把表的權(quán)限封閉,但是開(kāi)放相應(yīng)的視圖權(quán)限,視圖里只開(kāi)放部分?jǐn)?shù)據(jù)列。比如我們的goods商品表,我們不想讓別人看到我們的銷(xiāo)售價(jià)格,這時(shí)候我們就可以把查看商品表的權(quán)限封閉,創(chuàng)建一張視圖create view showGoods as select goods_id,goods_name from goods;不出現(xiàn)銷(xiāo)售價(jià)格列就可以了。

5. 修改視圖:alter view 視圖名 as select語(yǔ)句;

6. 刪除視圖:drop view 視圖名1,視圖名2…;

7. 視圖與基本表的關(guān)系

(1) 視圖是表的查詢結(jié)果,基本表的數(shù)據(jù)變了,會(huì)影響視圖的結(jié)果

(2)從單表中獲取的視圖的增刪改會(huì)影響基本表

(3) 多表視圖時(shí),可以通過(guò)視圖給某個(gè)表插入數(shù)據(jù)

(4)多表視圖時(shí),不可以通過(guò)視圖刪除數(shù)據(jù)

(5)多表視圖時(shí),可以通過(guò)視圖更改數(shù)據(jù),注意:在更改時(shí),被更改的數(shù)據(jù)必須是在視圖中有所體現(xiàn)的,如果在視圖中沒(méi)有體現(xiàn)出來(lái),那么修改的語(yǔ)法沒(méi)有錯(cuò)誤,但是真實(shí)表中的數(shù)據(jù)不會(huì)被改變

注意:有些視圖時(shí)不可以更新的,如包含distinct、group by、having、union、union all、聚合函數(shù)等

select s1.*,cno,degree from s1 inner join s2 on s1.sno = s2.sno;

create view vv as select s1.*,cno,degree from s1 inner join s2 on s1.sno = s2.sno;

insert into vv values (111,'aaa','女','2018-01-01 00:00:00',99999,'6-110',100);

多表查詢不行

insert into vv (sno,sname,ssex,sbirthday,class) values (111,'aaa','女','2018-01-01 00:00:00',99999);

插入成功,但跟誰(shuí)都連不上,沒(méi)有。

select * from s1;

delete * from vv where sno =111; 4)多表視圖時(shí),不可以通過(guò)視圖刪除數(shù)據(jù)

update vv set sname = 'bbb' where sno =111; 沒(méi)變

update vv set ssex = '男' where sno =111; 還是沒(méi)變

在更改時(shí),被更改的數(shù)據(jù)必須是在視圖中有所體現(xiàn)的,如果在視圖中沒(méi)有體現(xiàn)出來(lái),那么修改的語(yǔ)法沒(méi)有錯(cuò)誤,但是真實(shí)表中的數(shù)據(jù)不會(huì)被改變

update vv set sname = 'ok' where sno =103; 變了

注意:有些視圖時(shí)不可以更新的,如包含distinct、group by、having、union、union all、聚合函數(shù)等

select * from s1;

alter view vv as select * from s1 union select * from s1;

update vv set sname = 'ok2' where sno =107; 不可修改

六、 MySQL常見(jiàn)操作

1. 創(chuàng)建用戶:Create user ‘用戶名’@’允許登錄的地址/服務(wù)器’ identified by ‘密碼’

2. 刪除用戶:drop user ‘用戶名’@’服務(wù)器地址’;注意:需要管理員才可以刪除

3. 更改密碼

1) 用戶更改自己的密碼:Set password=password(‘密碼’);

2) 管理員更改用戶密碼:Set password for ‘用戶名’@’允許登錄的地址’=password(‘密碼’);

4. 為用戶授予權(quán)限

1) 格式:grant 權(quán)限1,權(quán)限2.. on 某庫(kù).某個(gè)對(duì)象 to ‘用戶名’@’允許登錄的位置’ 【identified by ‘密碼’】;

2) 說(shuō)明:

l權(quán)限列表,就是,多個(gè)權(quán)限的名詞,相互之間用逗號(hào)分開(kāi),比如: select, insert, update

l也可以寫(xiě):all

l某庫(kù).某個(gè)對(duì)象,表示,給指定的某個(gè)數(shù)據(jù)庫(kù)中的某個(gè)“下級(jí)單位”賦權(quán);

l下級(jí)單位有:表名,視圖名等

l其中,有2個(gè)特殊的語(yǔ)法:

*.*: 代表所有數(shù)據(jù)庫(kù)中的所有下級(jí)單位;

某庫(kù).* :代表指定的該庫(kù)中的所有下級(jí)單位;

3,【identified by ‘密碼’】是可省略部分,如果不省略,就表示賦權(quán)的同時(shí),也去修改它的密碼;

但:如果該用戶不存儲(chǔ),此時(shí)其實(shí)就是創(chuàng)建一個(gè)新用戶;并此時(shí)就必須設(shè)置其密碼了

5. 剝奪權(quán)限:revoke 權(quán)限列表 on 某庫(kù).某個(gè)對(duì)象 from ‘用戶名’@’允許登錄的位置’

七、 忘記登錄密碼的解決方法

1. 進(jìn)入命令行界面,輸入net stop mysql

2. mysqld --skip-grant-tables

3. 此時(shí)可以免密碼登錄:mysql -u root –p

4. 登錄后設(shè)置新密碼:update mysql.user set authentication_string=password('msh8888') where user='root' and Host = 'localhost';

5. 刷新權(quán)限表flush privileges;

八、 SQL語(yǔ)句的分類(lèi)

1. 數(shù)據(jù)定義語(yǔ)言(DDL):用于創(chuàng)建、修改、和刪除數(shù)據(jù)庫(kù)內(nèi)的數(shù)據(jù)結(jié)構(gòu),如:

1) 創(chuàng)建和刪除數(shù)據(jù)庫(kù)(CREATE DATABASE || DROP DATABASE);

2) 創(chuàng)建、修改、重命名、刪除表(CREATE TABLE || ALTER TABLE|| RENAME TABLE||DROP TABLE);

3) 創(chuàng)建和刪除索引(CREATEINDEX || DROP INDEX)

2. 數(shù)據(jù)查詢語(yǔ)言(DQL):從數(shù)據(jù)庫(kù)中的一個(gè)或多個(gè)表中查詢數(shù)據(jù)(SELECT)

3. 數(shù)據(jù)操作語(yǔ)言(DML):修改數(shù)據(jù)庫(kù)中的數(shù)據(jù),包括插入(INSERT)、更新(UPDATE)和刪除(DELETE)

4. 數(shù)據(jù)控制語(yǔ)言(DCL):用于對(duì)數(shù)據(jù)庫(kù)的訪問(wèn),如:

1) 給用戶授予訪問(wèn)權(quán)限(GRANT);

2) 取消用戶訪問(wèn)權(quán)限(REMOKE)

總結(jié)

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

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