數據庫第五天

//局部變量

create procedure getNum()

begin

declare number int;

set number = 10;

select number;

end

(1)查詢任意id的圖書信息

注意:參數的名稱不能和表中字段名相同

select * from books where id = ?;

create procedure getBooksByID(in bid int)

begin

select * from books where id = bid;

end

(2)查詢任意圖書類型的圖書信息

注意:varchar,char類型需要定義長度

select * from books where type_id = (select type_id from book_type where type_name = '黑客');

方法一

create procedure getBooksByName(in tname varchar(50))

begin

select * from books where type_id = (select type_id from book_type where type_name = tname);

end

方法二

create procedure getBooksByName2(in tname varchar(50))

begin

declare tid int;

set tid = (select type_id from book_type where type_name = tname);

select * from books where type_id = tid;

end

insert into comment (aid,com_content,com_time)

values(13,'回復內容13',null);

//獲取最近一次存入數據表的ID

注意:必須保證id是自動增長;不能指定下一個遞增的ID值

last_insert_id();

(3)在評論表insert一條評論之后,實現article表中的評論數量+1

create procedure getComs(a int,b text,c datetime)

begin

declare pid int;//評論表id

declare wid int;//文章表id

//向評論表存入一條數據

insert into comment(aid,com_content,com_time)

values(a,b,c);

//獲取剛存入的評論id

set pid =(select last_insert_id());

//根據評論id獲取到文章id

set wid = (select aid from comment where cid = pid);

//根據上一步獲取到的文章id,更新文章表的評論數量

update article set coms = coms + 1 where aid = wid;

end

call getComs(10,'太棒了','2017-1-1');

//在學生表存入一條數據之后,在成績表中存入一條此學生的語文成績

//用存儲過程向一個表中存入100條數據

create procedure pro_add100()

begin

declare i int;

declare max int;

set i = 0;

set max = 100;

while i <= 100 do

insert into course(co_name) values('course');

set i = i+1;

end while;

end

//刪除存儲過程

drop procedure 存儲過程的名字;

//總結

(1)存儲過程包含單條或者多條sql,都需要寫在begin end之間

(2)在存儲過程中的每條sql語句結束時都要加';';

(3)存儲過程中的參數沒有默認值,在調用時,不能省略這個參數,可以用null代替

//事務

定義:MySQL 事務主要用于處理操作量大,復雜度高的數據。

一句話概括:可以回滾,可以提交,程序沒有問題,則提交,有問題就回滾

一般來說,事務是必須滿足4個條件(ACID): Atomicity(原子性)、Consistency(穩定性)、Isolation(隔離性)、Durability(可靠性)

1、事務的原子性:一組事務,要么成功;要么撤回。

2、穩定性 : 有非法數據(外鍵約束之類),事務撤回。

3、隔離性:事務獨立運行。一個事務處理后的結果,影響了其他事務,那么其他事務會撤回。事務的100%隔離,需要犧牲速度。

4、可靠性:軟、硬件崩潰后,InnoDB數據表驅動會利用日志文件重構修改。可靠性和高速度不可兼得, innodb_flush_log_at_trx_commit選項 決定什么時候吧事務保存到日志里。

事務(transaction)的語法:

(1)開啟事務:begin; //start transaction;

(2)進行相關的操作

(3)提交事務:commit;

(4)撤銷事務(回滾):rollback;

使用事務的注意事項:

(1)表必須是innodb存儲引擎

(2)常用于金額、庫房等行業,一般行業不使用

mysql中的存儲引擎:

mysql數據類型很多,表很多,在處理數據上存在差異

針對不同的處理要求,mysql提供多種不同的存儲引擎

(1)innodb

a)事務型存儲引擎,支持事務,有崩潰恢復能力

b)表只有一個.frm文件,索引和數據是緊密相連的,降低mysql運行效率

c)mysql版本是5.5及之后的,默認存儲引擎是innodb

(2)myisam

a)表分成三個文件存儲(.frm,.myd,.myi),索引和數據是分開的,提高mysql運行效率

b)不支持事務

c)mysql版本是5.5之前,默認存儲引擎是myisam

mysql根據功能不同,劃分了一些類型:

DCL:mysql用戶的管理、權限分配、數據庫的備份、還原

(1)mysql用戶管理

a)root是mysql默認的用戶(超級管理員),才有權限去創建其他mysql用戶

b)mysql用戶信息是存儲在mysql庫中的user表中

//如何創建mysql用戶

create user 用戶名@服務器名稱 identified by '密碼';

create user xiaoming@localhost identified by '123';

//修改密碼(root或者當前登錄用戶都可以修改密碼)

set password for 用戶名@服務器名稱 = password('新密碼');

set password for xiaoming@localhost = password('12345');

//刪除用戶(在root賬戶下)

drop user 用戶名@服務器名稱

drop user xiaoming@localhost;

//用戶權限(在root賬戶下)

//賦予權限

grant 權限列表 on 對象列表 to 用戶列表;

權限列表:

(1)All:所有權限(增刪改查)

(2)Create 創建權限

(3)drop 刪除權限

(4)alter 修改權限

(5)select 查詢權限

(6)insert 數據的添加權限

(7)update

(8)delete

對象列表(數據庫或數據表)

*.*? //第一個*是數據庫,第二個*是數據表

數據庫名稱.*? //數據庫中的所有表

數據庫名稱.表名 //一個數據中的某個表

grant All on *.* to xiaoming@localhost;

grant All on demo.* to xiaoming@localhost;

收回權限(在root賬戶下)

revoke 權限列表 on 對象列表 from 用戶列表;

revoke All on *.* from xiaoming@localhost;

revoke All on demo.* from xiaoming@localhost;

(2)mysql數據的備份與還原(導出導入),不需要登錄數據庫

返回上一級:cd ..或cd ../

進入下一級: cd 文件夾名字

在mysql/bin目錄下:

備份:

mysqldump -uroot -p 數據庫名稱>路徑(存放sql文件)

mysqldump -uroot -p demo>c:/demo.sql

還原(不用dump):

mysql -uroot -p demo4

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,763評論 6 539
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,238評論 3 428
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 177,823評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,604評論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,339評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,713評論 1 328
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,712評論 3 445
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,893評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,448評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,201評論 3 357
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,397評論 1 372
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,944評論 5 363
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,631評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,033評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,321評論 1 293
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,128評論 3 398
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,347評論 2 377

推薦閱讀更多精彩內容

  • 一、JDBC中事務處理的步驟: 1、要取消掉JDBC的自動提交:void setAutoCommit(boolea...
    淺水姑娘檸檬淚_d411閱讀 197評論 0 0
  • 什么是SQL數據庫: SQL是Structured Query Language(結構化查詢語言)的縮寫。SQL是...
    西貝巴巴閱讀 1,833評論 0 10
  • 什么是數據庫? 數據庫是存儲數據的集合的單獨的應用程序。每個數據庫具有一個或多個不同的API,用于創建,訪問,管理...
    chen_000閱讀 4,051評論 0 19
  • MySQL 數據庫常用命令 1、MySQL常用命令 create database name; 創建數據庫 use...
    55lover閱讀 4,815評論 1 57
  • 1. Java基礎部分 基礎部分的順序:基本語法,類相關的語法,內部類的語法,繼承相關的語法,異常的語法,線程的語...
    子非魚_t_閱讀 31,733評論 18 399