数据库第五天

//局部变量

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阅读 211,884评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,347评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,435评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,509评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,611评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,837评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,987评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,730评论 0 267
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,194评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,525评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,664评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,334评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,944评论 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,764评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,997评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,389评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,554评论 2 349

推荐阅读更多精彩内容

  • 一、JDBC中事务处理的步骤: 1、要取消掉JDBC的自动提交:void setAutoCommit(boolea...
    浅水姑娘柠檬泪_d411阅读 185评论 0 0
  • 什么是SQL数据库: SQL是Structured Query Language(结构化查询语言)的缩写。SQL是...
    西贝巴巴阅读 1,803评论 0 10
  • 什么是数据库? 数据库是存储数据的集合的单独的应用程序。每个数据库具有一个或多个不同的API,用于创建,访问,管理...
    chen_000阅读 4,032评论 0 19
  • MySQL 数据库常用命令 1、MySQL常用命令 create database name; 创建数据库 use...
    55lover阅读 4,780评论 1 57
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,598评论 18 399