使用 MySQL 写了一个简单存储过程

昨天晚上,受朋友之托解决一个 sql 问题。
然而。。。虽然是科班出身,对于 mysql 用的并不多。
问题倒是不难,由于对环境不够熟悉,花去了我一点时间。
如何在一个字段中插入100个 0-10 的随机数?


  • 这个问题一看是要采用循环的,被提示到 存储过程 这个名词。
  • 那么,存储过程怎么建立,怎么调用呢?
  • 尼玛,科班不能怂啊。赶紧查查。

一、 Ubuntu 环境

昨天晚上回家没带 win7,win10环境有点麻烦,就开了 ubuntu。
没想到被 mysql 的用户名密码给折腾了一下。
控制台输入 mysql -uroot -p,提示输入密码,然后怎么都输不对。
懵逼几秒中...


好吧,马上来解决这个问题。

问题:Ubuntu 系统忘记了 mysql 的用户名密码怎么进入?

解答:让我们来谷度一下。

  • 查看 /etc/mysql/debian.cnf 文件,命令为 vi /etc/mysql/debian.cnf,哇嘎达!找到了用户名密码!
  • 命令行输入 mysql -u刚才的用户名 -p,然后输入密码。


二、 Window7 环境

为什么又切换环境了呢?昨晚太困睡着了,没解决完问题。
早上一上班赶紧来弄。
好的,现在 Windows 有图了!

废话少说,先进数据库 mysql -uroot -p


三、 命令行的 mysql 咋用?

既然生疏了,重新用用就好了嘛。
朋友让表名写 ceshibiao,字段名写 time

提醒一下,以下的 sql 语句都要记得加分号,否则会错哦,特殊的我会说。

  1. 切换数据库
  • mysql>use mysql;
  • 查看数据库可以用 mysql>show databases;
  1. 先来建个表(至于英文还是拼音的名称就不要在意了)
  • mysql>create table ceshibiao(time real);
  • 查看表可以用 mysql>show tables;
  • sql 的类型科普:integer 表示整型,real 表示浮点型,text 表示文本类型
建表过程

这样,mysql 基本的命令行使用就了解了。


四、存储过程咋写?

我写完以后的长这样:

简单的存储过程实现
  1. 先来解释一下这个 delimiter
- 这个词其实是 `分隔符` 的意思,mysql 中默认为分号,分号结尾,回车后自动执行。
- 如果写一句加一个分号立即执行了,那就没法写存储过程啊。
- 所以,`mysql>delimiter //` 这句表示,将`;`转换为`//`,只有收到 `//` 这个符号时,才认为指令结束。
- 这样,我们在存储过程内部就可以尽情地使用分号啦!
  1. 然后解释下取随机数的式子 ceiling(rand()*10))
- `ceiling` 和 `floor` 对应,前者表示向上取整(天花板嘛),后者表示向下取整(地板咯)。
- `rand()` 函数表示在 0 和 1 之间产生一个随机数。
- 所以,这个表达式的意思是,在 1-10 之间产生随机数。
  1. 至于数据库基本的 CURD 操作,这里就不用介绍了吧:)


五、 看一下运行结果

调用存储过程,直接 call 名称

调用存储过程


小功告成!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容