美文网首页
使用 MySQL 写了一个简单存储过程

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

作者: 秋名山菜车手 | 来源:发表于2016-09-29 11:27 被阅读0次

    昨天晚上,受朋友之托解决一个 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 名称

    调用存储过程

    小功告成!

    相关文章

      网友评论

          本文标题:使用 MySQL 写了一个简单存储过程

          本文链接:https://www.haomeiwen.com/subject/eubkyttx.html