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<voice.sql,输入密码即可。



posted on 2017-10-25 18:06  标配的小号  阅读(215)  评论(0编辑  收藏  举报

导航