使用存储过程

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

mysql深入的更多相关文章

  1. Hadoop 中利用 mapreduce 读写 mysql 数据

    Hadoop 中利用 mapreduce 读写 mysql 数据   有时候我们在项目中会遇到输入结果集很大,但是输出结果很小,比如一些 pv.uv 数据,然后为了实时查询的需求,或者一些 OLAP ...

  2. mysql每秒最多能插入多少条数据 ? 死磕性能压测

    前段时间搞优化,最后瓶颈发现都在数据库单点上. 问DBA,给我的写入答案是在1W(机械硬盘)左右. 联想起前几天infoQ上一篇文章说他们最好的硬件写入速度在2W后也无法提高(SSD硬盘) 但这东西感 ...

  3. LINUX篇,设置MYSQL远程访问实用版

    每次设置root和远程访问都容易出现问题, 总结了个通用方法, 关键在于实用 step1: # mysql -u root mysql mysql> Grant all privileges o ...

  4. nodejs进阶(6)—连接MySQL数据库

    1. 建库连库 连接MySQL数据库需要安装支持 npm install mysql 我们需要提前安装按mysql sever端 建一个数据库mydb1 mysql> CREATE DATABA ...

  5. MySQL高级知识- MySQL的架构介绍

    [TOC] 1.MySQL 简介 概述 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司. MySQL是一种关联数据库管理系统,将数据保存在不同的表中,而 ...

  6. 闰秒导致MySQL服务器的CPU sys过高

    今天,有个哥们碰到一个问题,他有一个从库,只要是启动MySQL,CPU使用率就非常高,其中sys占比也比较高,具体可见下图. 注意:他的生产环境是物理机,单个CPU,4个Core. 于是,他抓取了CP ...

  7. 我的MYSQL学习心得(一) 简单语法

    我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(五) 运 ...

  8. Entity Framework Core 实现MySQL 的TimeStamp/RowVersion 并发控制

    将通用的序列号生成器库 从SQL Server迁移到Mysql 遇到的一个问题,就是TimeStamp/RowVersion并发控制类型在非Microsoft SQL Server数据库中的实现.SQ ...

  9. Docker笔记一:基于Docker容器构建并运行 nginx + php + mysql ( mariadb ) 服务环境

    首先为什么要自己编写Dockerfile来构建 nginx.php.mariadb这三个镜像呢?一是希望更深入了解Dockerfile的使用,也就能初步了解docker镜像是如何被构建的:二是希望将来 ...

  10. 当忘记mysql数据库密码时如何进行修改

    因为长时间没有使用数据库了,或者把密码改完之后就忘了数据库密码,不能正常进入数据库,也无法修改密码,有一个简单的常用修改密码方式: 1.首先找到和打开mysql.exe和mysqld.exe所在的文件 ...

随机推荐

  1. SignalR NuGet程序包

    最近公司有一个边看直播边聊天的需求,直播好搞,直接用腾讯的小直播,组装推流和播放地址,把推流地址拿出去就OK,只要一推流,就可以使用播放地址观看直播,看完后通过webclient去异步下载直播的视频到 ...

  2. 四. Python基础(4)--语法

    四. Python基础(4)--语法 1 ● 比较几种实现循环的代码 i = 1 sum = 0 while i <= 10: # 循环10-1+1=10次     sum += i     i ...

  3. Cracking The Coding Interview2.4

    删除前面的linklist,使用node来表示链表 // You have two numbers represented by a linked list, where each node cont ...

  4. 4.1 C++多态的概念及前提条件

    参考:http://www.weixueyuan.net/view/6370.html 总结: 而多态的功能则是将函数名动态绑定到函数入口地址,这样的动态绑定过程称为运行期绑定. 而在运行期绑定的函数 ...

  5. 自旋锁(Spin Lock)

    转载请您注明出处:    http://www.cnblogs.com/lsh123/p/7400625.html 0x01 自旋锁简介 自旋锁也是一种同步机制,它能保证某个资源只能被一个线程所拥有, ...

  6. Centos7部署kubernetes准备工作(一)

    一.准备工作: 1.创建三台虚拟机:(在node1配置好环境,然后关机克隆出node2.node3.并修改网卡.主机名即可) linux-node1.example.com 192.168.43.21 ...

  7. Gym - 100989M(dp)

    George met AbdelKader in the corridor of the CS department busy trying to fix a group of incorrect e ...

  8. ClientAsTemplate用法

    kbmMW提供了TkbmMWClientQuery查询组件,作为kbmMW开发者都知道,这是一个内存数据集,基于服务端的查询服务(Query Service),可以直接执行sql得取想要的记录,因为是 ...

  9. ajax参考增删改查

    AJAX做增删改查详细!   <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "htt ...

  10. python 正则进阶

    1.group 除了简单地判断是否匹配之外,正则表达式还有提取子串的强大功能.用()表示的就是要提取的分组(Group).比如:^(\d{3})-(\d{3,8})$分别定义了两个组,可以直接从匹配的 ...