mysql深入_mysql深入

使用存储过程

create procedure productpricing() begin select avg(prod_price) as priceaverage from products; end;   创建一个新的存储过程productpricing

执行存储过程

call productpricing();

删除存储过程

drop procedure productpricing;不需要后面的()了

存储过程使用参数

create procedure productpricing(

out pl decimal(8,2),

out ph decimal(8,2),

out pa decimal(8,2)

)

begin

select min(prod_price)

into p1

from products;

select max(prod_price)

into ph

from products;

select  avg(prod_price)

into pa

from products;

end;

注释:关键字out指出相应的参数用来从存储过程传出一个值(返回给调用者),decimal是定义精度用的,第一个参数可存储的十位进制数总数,第二个是小数点右侧最大十进制位数,into 值传入值

调用存储过程

call productpricing(@pricelow,@pricehigh,@priceaverage);

select @priceaverage;显示平均价格

create procedure ordertotal(

int onumber int,

out ototal decimal(8,2)

)

begin

select sum(item_price*quantity)

from orderitems

where order_num=onumber

into ototal;

end;

调用上面的存储过程

call ordertotal(2017,@total);

select @total;显示结果

游标:

create procedure processorders()

begin

declare ordernumbers cursor

for

select order_num from orders;

open ordernumbers;

close ordernumbers;

end;

注释:定义游标cursor为ordernumbers,open打开游标,close关闭游标

使用游标

create procedure processorders()

begin

declare o int;

declare ordernumbers cursor

for

select order_num from orders;

open ordernumbers;

fetch ordernumbers into o;

close ordernumbers;

end;

注释;fetch 分别访问游标的每一行

创建触发器

create trigger insert_check before insert on student for each row insert into bp(id,name) values(111,'111');在对student执行插入操作前,对bp表插入数据,因为版本问题加入begin和end可能会提示错误

drop trigger newproduct;删除触发器

管理事物处理

select * from student;

start transaction;

delete from student;删除student表全部数据

select * from student;

rollback;回滚

select * from student;

commit;在后面加上这句话的话,如果上面的操作没有错误,那么将rollback没有效果

使用保留点

savepoint delete1;

rollback to delete1;我的显示找不到,神奇

全球化和本地化

show character set;查看支持哪些字符集

show collation; 查看支持校对的完整列表

show variables like 'character%';查看默认字符集

show variables like 'collation%';查看默认校对

create table mytable(

id int,

name varchar(20),

addr varchar(20) character set latin1 collate latin1_general_ci

)default character set hebrew collate hebrew_general_ci;

用户管理

use mysql;

select user from user;

create user bp identified by 'p@123456';创建一个bp用户,密码为123456

rename user bp to user1;重命名bp用户为user1

drop user user1;删除user1用户

show grants for user1;显示user1的权限

grant select on test.* to user1;授权bp对test数据库下的所有表有select权限

revoke select on test.* from user1;收回user1对tset数据库下的所以表的select权限

set password for user1=password('你的密码');修改user1的密码,如果不指定用户,就是修改当前登录用户密码

数据库维护

analyze table student;查看表键是否正常

check table mytable,student;发现和修复问题

导出数据库:mysqldump -u 用户名 -p 数据库名 > 导出的文件名

例如mysqldump -u root -p news > news.sql   (输入后会让你输入进入MySQL的密码)

(如果导出单张表的话在数据库名后面输入表名即可)

1,将要导入的.sql文件移至bin文件下,这样的路径比较方便

2,同上面导出的第1步

3,进入MySQL:mysql -u 用户名 -p

如我输入的命令行:mysql -u root -p   (输入同样后会让你输入MySQL的密码)

4,在MySQL-Front中新建你要建的数据库,这时是空数据库,如新建一个名为news的目标数据库

5,输入:mysql>use 目标数据库名

如我输入的命令行:mysql>use news;

6,导入文件:mysql>source 导入的文件名;

如我输入的命令行:mysql>source news.sql;

或者mysql -u root -p voice

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值