GVKun编程网logo

复习 MySQL:函数 和 存储过程(mysql中函数和存储过程)

3

在本文中,我们将详细介绍复习MySQL:函数和存储过程的各个方面,并为您提供关于mysql中函数和存储过程的相关解答,同时,我们也将为您带来关于(MySQL)存储过程–循环结果、MSSQLMySQL数

在本文中,我们将详细介绍复习 MySQL:函数 和 存储过程的各个方面,并为您提供关于mysql中函数和存储过程的相关解答,同时,我们也将为您带来关于(MySQL)存储过程 – 循环结果、MSSQL MySQL 数据库分页(存储过程)、Mysql 使用小结:(1) 存储过程,循环,实现 Mssql Server 功能的 exec 的方法、mysql 启动报错Can''t connect to local MySQL server through socket ''/data/mysql/mysql/mysql.soc...的有用知识。

本文目录一览:

复习 MySQL:函数 和 存储过程(mysql中函数和存储过程)

复习 MySQL:函数 和 存储过程(mysql中函数和存储过程)

最近看了一个系统 ,253 张 table,2 张 view,190 个存储过程,18 个函数:

SHOW DATABASES;
SHOW TABLES;
SHOW TABLE STATUS;
SHOW PROCEDURE STATUS where db != ''sys'';
SHOW FUNCTION STATUS where db != ''sys'';

DESC `banners`;
DESCRIBE `banners`;
SHOW CREATE TABLE `banners`;
SELECT * FROM `banners`;

DESCRIBE `view-hdtongji`;
SHOW CREATE VIEW `view-hdtongji`;
SHOW CREATE TABLE `view-hdtongji`;
SELECT * FROM `view-hdtongji`;

SHOW CREATE PROCEDURE `API_AH_ACTIVITY_DETAIL`;
SHOW CREATE FUNCTION `func_get_multi_user`;

SELECT * from information_schema.VIEWS;
SELECT * from information_schema.TABLES;

发现我常用的只有 table、view,很少使用 function 和 procedure。

  • MySQL 函数:http://c.biancheng.net/view/2590.html
  • MySQL 存储过程:http://c.biancheng.net/view/2591.html


MySQL 常用命令

  • 使用SHOW语句找出在服务器上当前存在什么数据库:SHOW DATABASES。
  • 创建一个数据库 MYSQLDATA:CREATE DATABASE MYSQLDATA。
  • 选择你所创建的数据库:USE MYSQLDATA; (按回车键出现Database changed 时说明操作成功!)
  • 查看现在的数据库中存在什么表:SHOW TABLES。
  • 创建一个数据库表: CREATE TABLE MYTABLE (name VARCHAR(20), sex CHAR(1))。
  • 显示表的结构: DESCRIBE MYTABLE。
  • 往表中加入记录:mysql> insert into MYTABLE values (”hyq”,”M”)。
  • 用文本方式将数据装入数据库表中(例如D:/mysql.txt):LOAD DATA LOCAL INFILE “D:/mysql.txt” INTO TABLE MYTABLE。
  • 导入sql文件命令(例如D:/mysql.sql):use database;source d:/mysql.sql。
  • 删除表:drop TABLE MYTABLE。
  • 清空表:delete from MYTABLE。
  • 更新表中数据:update MYTABLE set sex=”f” where name=’hyq’。

(MySQL)存储过程 – 循环结果

(MySQL)存储过程 – 循环结果

我们正在从Postgresql迁移和应用到MySQL.
基本上,我想在MysqL中循环一个结果.

SELECT col1 FROM table1; < ---(1)从此查询中获取结果.

LOOP THROUGH col1Result

SELECT myCol FROM table2 WHERE thisCol = col1Result< ---等于上一个查询的每个结果.

END LOOP;

我也找到了这个参考
http://dev.mysql.com/doc/refman/5.0/en/cursors.html
但是,我坚持这条线.

FETCH cur1 INTO a,b;

这不是将cur1的每一个结果都变成变量a和b吗?
我如何确保我目前在变量a的第一个索引?

这是一个关于如何在我的结尾使用结果的例子(写在Postgresql中).

FOR my_record IN

   SELECT disTINCT col1
   FROM            table1
   WHERE           col2 = param1;

LOOP

   SELECT disTINCT col4
   FROM            table2
   WHERE           col3 = my_record.col1;

   IF true THEN
      RAISE EXCEPTION '%','ERROR MESSAGE' || my_record.col1;
   END IF

   SELECT disTINCT col5
   FROM            table3
   WHERE           col6 = my_record.col1;

   IF true THEN
      RAISE EXCEPTION '%',ERROR MESSAGE' || my_record.col1;
   END IF;

END LOOP;
最佳答案
cur1会读取每行的结果.每次循环它都会得到下一行.所以它第一次循环就会得到第一行.
这将一直持续到循环中断或没有更多行可用(在这种情况下会出现无数据条件).

有关更多信息,请参见this希望能帮助到你.

MSSQL MySQL 数据库分页(存储过程)

MSSQL MySQL 数据库分页(存储过程)

先看看单条 sql 语句的分页 sql 吧。 方法1:
适用于 sql Server 2000/2005
<div><adata="91204"id="copybut91204" onclick="doCopy('code91204')"> 代码如下:

Mysql 使用小结:(1) 存储过程,循环,实现 Mssql Server 功能的 exec 的方法

Mysql 使用小结:(1) 存储过程,循环,实现 Mssql Server 功能的 exec 的方法

Mysql 使用小结:(1) 存储过程,循环,实现 Mssql Server 功能的 exec 的方法


最近开始总结自己学习的 Mysql 的经验,在这里跟大家分享。很希望大家很拍板砖,谢谢。

 

先说说,为什么我要学习 Mysql 的存储过程,因为 Mysql 在单纯的 Script(脚本)里面,不支持循环。大家可以参考相关的文档。

 

先给出代码:

复制代码

DELIMITER $$

DROP PROCEDURE IF EXISTS `dowhile` $$

CREATE PROCEDURE  `dowhile`()

DETERMINISTIC

BEGIN

  
DECLARE v1 INT DEFAULT 1000;
  
declare tablename varchar(10default ''testTable'';
  
declare createString varchar(1000);

  
while v1 <> 0 DO
      
set @nextTable = concat(tablename,v1);
      
set createString = concat("create table `",@nextTable);
      
set createString = concat(createString,"` ( `id` int null, `name` varchar(200null); ");
      
set @mytable = createString;
      
select @mytable;
      
PREPARE stmt_name FROM @mytable;
      
EXECUTE stmt_name ;
      
DEALLOCATE PREPARE stmt_name;

      
set v1 = v1 -1;
  
END while;

END$$

DELIMITER ;

复制代码

 

 

第一步:建立一个 Mysql 存储过程,必须要注意的地方是:一定要使用 DELIMITER (定界符这个) 关键字,否则会产生 ErrorNum:1064。这点无论是使用命令行还是 Mysql Tools (Workbench) 都必须遵守。 

具体参考:http://dev.mysql.com/doc/refman/5.1/en/stored-programs-defining.html ,又一次证明了,仔细阅读文档很重要。

更多参考:http://dev.mysql.com/doc/refman/5.1/en/stored-routines.html

 

第二步:使用循环,必须在 Mysql 存储过程中,希望 Mysql 新版本可以进行改进。

 

原文

be used in the body of stored programs: Stored procedures and functions, triggers, and events. These objects are defined in terms of SQL code that is stored on the server for later invocation

 

 

具体参考:http://dev.mysql.com/doc/refman/5.1/en/sql-syntax-compound-statements.html

 

第三步:使用 PREPARE 命令,打开一个 Stmt,不要忘记关上。

具体参考:http://dev.mysql.com/doc/refman/5.1/en/sql-syntax-prepared-statements.html 

 

 小结:

 

我这里使用循环,但是实际完成建表过程,只实现了 300 次。是不是在存储过程中,循环有限制? 

探索 1:循环限制,设置 while 循环最大循环数为 100000,没有任何问题。时间:0.406 秒 。(双核 2.47) 

探索 2:                                      循环数为 10000000,没有任何问题。时间:27.753 秒。

探索 3:                                      循环数为 20000000,没有任何问题。时间:48.578 秒。

超过 30 秒的限制。

 

当超过 10 分钟之后,连接断开。主要分析,发现 Workbench 有一个自己的数据库连接时间,10 分钟。 

通过阅读发现了 Mysql 的超时设置是 interactive_timeout = wait_timeout:28800s (480min) 6 小时。

 

mysql 启动报错Can''t connect to local MySQL server through socket ''/data/mysql/mysql/mysql.soc...

mysql 启动报错Can''t connect to local MySQL server through socket ''/data/mysql/mysql/mysql.soc...

1:首先mysql本地连接报错:

  Can''t connect to local MySQL server through socket ''/data/mysql/mysql/mysql.sock''(111)

  解决:

    1:删除 文件:/data/mysql/mysql/mysql.sock

  此时又会报错:Can''t connect to local MySQL server through socket ''/var/lib/mysql/mysql.sock'' (2)

  进入到目录:/data/mysql2/bin/

    使用命令:mysqld start

    此时报错:[ERROR] Too many arguments (first extra is ''start'')

    于是将命令修改:mysqld --user=mysql

感谢:

  https://www.cnblogs.com/invban/p/5824796.html

  https://blog.csdn.net/u010416101/article/details/80490536

 

 

 

 

2:19年7月4日,mysql不是自己安装的,也不晓得是怎么安装的.在启动时依然报这个错误,按照前面的方法还是解决不了.

然后我又使用如下命令,启动依然报错

./mysqld --defaults-file=/data/mysql/mysql01/my.cnf --basedir=/data/mysql/mysql01 --datadir=/data/mysql/mysql01/data  --user=zabbix

  

 

今天关于复习 MySQL:函数 和 存储过程mysql中函数和存储过程的介绍到此结束,谢谢您的阅读,有关(MySQL)存储过程 – 循环结果、MSSQL MySQL 数据库分页(存储过程)、Mysql 使用小结:(1) 存储过程,循环,实现 Mssql Server 功能的 exec 的方法、mysql 启动报错Can''t connect to local MySQL server through socket ''/data/mysql/mysql/mysql.soc...等更多相关知识的信息可以在本站进行查询。

本文标签: