使用存储过程

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. dedecms中调用隐藏栏目的方法

    第一种情况用SQL标签如下: {dede:sql sql='Select * from dme_arctype where ishidden=1 and topid=2'} <span clas ...

  2. linux入门经验之谈

     一. 选择适合自己的linux发行版 谈到linux的发行版本,太多了,可能谁也不能给出一个准确的数字,但是有一点是可以肯定的,linux正在变得越来越流行, 面对这么多的Linux 发行版,打 ...

  3. :状态模式:GumballMachine

    #ifndef __STATE_H__ #define __STATE_H__ #include <iostream> #include<stdlib.h> using nam ...

  4. StringUtils详细介绍

    StringUtils详细介绍 public static void TestStr(){ #null 和 "" 操作~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ...

  5. linux执行可执行文件时报xxx:not found

    实际上是因为可执行文件执行时所依赖的动态链接库找不到,解决方法为在编译时加-static表示使用静态链接. 或者使用arm-linux-readelf -d +可执行文件,查看该可执行文件依赖的动态链 ...

  6. 2010年腾讯前端面试题学习(jquery,html,css部分)

    看了牛人写的回忆文章,里面有2010年腾讯的前端面试题,里面涉及到不少基础性的问题,js部分已学习,这是jquery,html和css部分,学习一下:) 原文地址:https://segmentfau ...

  7. python 爬虫数据准换时间格式

    timeStamp = 1381419600 dateArray = datetime.datetime.utcfromtimestamp(timeStamp) otherStyleTime = da ...

  8. scrapy中自动补全url

    url = "https:" + url 或者url = response.urljoin(url) #这里代表的是自动补全url

  9. yum配置Linux的Web服务器

    1.打开终端:输入su -root用于切换至root用户,目的是为了取得权限2.安装步骤如下(1)安装文件[root@localhost ~]# yum -y install httpd.i686[r ...

  10. Vue 之 Vue.nextTick()

    异步更新队列 可能你还没有注意到,Vue 异步执行 DOM 更新.只要观察到数据变化,Vue 将开启一个队列,并缓冲在同一事件循环中发生的所有数据改变.如果同一个 watcher 被多次触发,只会一次 ...