美文网首页
数据库第五天

数据库第五天

作者: 红颜心雨 | 来源:发表于2017-03-22 17:16 被阅读0次

//局部变量

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

相关文章

  • Android前五天总结

    总结: 第三天: 数据库 listview 第四天:网络编程 第五天 网络请求2 HttpClient ...

  • 数据库第五天

    一、JDBC中事务处理的步骤: 1、要取消掉JDBC的自动提交:void setAutoCommit(boolea...

  • 数据库第五天

    //局部变量 create procedure getNum() begin declare number int...

  • 数据库第五天

    查询每个部门每个岗位的工资总和 查询每个部门的部门编号,部门名称,部门人数,最高工资,最低工资,工资总和,平均工资...

  • 数据库

    今天是真正开始做数据库的第五天了,虽然每天都有在坚持写总结,但还是来系统总结一下这几天的收获吧! 第...

  • 悦读会第五天

    第五天啦! 第五天啦! 第五天啦! 快来欣赏一下同学们认认真真阅读的美照~ ...

  • Day5

    第五天

  • 练字

    第五天

  • 手账Day05|南方大澡堂子

    第五天

  • 戒撸啦~第五天

    第五天

网友评论

      本文标题:数据库第五天

      本文链接:https://www.haomeiwen.com/subject/gaoonttx.html