mysql深入

来源:互联网 发布:二阶张量的散度 知乎 编辑:程序博客网 时间:2024/06/05 00:49

使用存储过程

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

0 0