mysql创建存储过程

mysql

匿名 (未验证) 提交于 2019-12-02 21:59:42
查看所以库大小 select TABLE_SCHEMA, concat(truncate(sum(data_length)/1024/1024,2),' MB') as data_size, concat(truncate(sum(index_length)/1024/1024,2),'MB') as index_size from information_schema.tables group by TABLE_SCHEMA order by data_length desc; 查询 表结构 show create tables tablename 查询视图结构 show create view viem.name 查询数据库中的存储过程和函数 select `name` from mysql.proc where db = 'xx' and `type` = 'PROCEDURE' //存储过程 select `name` from mysql.proc where db = 'xx' and `type` = 'FUNCTION' //函数 show procedure status; //存储过程 show function status; //函数 查看存储过程或函数的创建代码   show create procedure proc_name;   show

MySQL进阶

匿名 (未验证) 提交于 2019-12-02 21:59:42
索引 1、概述 MySQL索引的建立对于MySQL的高效运行是很重要的,索引可以大大提高MySQL的检索速度。 虽然索引大大提高了查询速度,同时却会降低更新表的速度,如对表进行INSERT、UPDATE和DELETE。因为更新表时,MySQL不仅要保存数据,还要保存一下索引文件。 建立索引会占用磁盘空间的索引文件。 2、索引种类 普通索引:仅加速查询 唯一索引:加速查询 + 列值唯一(可以有null) 主键索引:加速查询 + 列值唯一 + 表中只有一个(不可以有null) 组合索引:多列值组成一个索引, 索引合并:使用多个单列索引组合查询搜索 覆盖索引:select的数据列只用从索引中就能够取得,不必读取数据行,换句话说查询列要被所建的索引覆盖 a、普通索引 普通索引仅有一个功能:加速查询 create table in1( nid int not null auto_increment primary key, name varchar(32) not null, email varchar(64) not null, extra text, index ix_name (name) ) 创建表+索引 create index index_name on table_name(column_name) 创建索引 drop index_name on table_name;

MYSQL存储过程以及结果集

◇◆丶佛笑我妖孽 提交于 2019-12-02 19:49:09
#存储过程 delimiter // create procedure p1() begin select * from t1; end// delimiter ; #执行存储过程 call p1() #创建存储过程 delimiter \\ create procedure p1( in i1 int, in i2 int, inout i3 int, out rl int ) BEGIN DECLEAR temp1 int; DECLEAR temp2 int default 0; set temp1 = 1; set rl = i1 + i2 + temp1 + temp2; set i3 = i3 + 100; end\\ delimiter ; --执行存储过程 set @t1 = 4; set @t2 = 0; CALL p1 (1, 2, @t1, @t2); SELECT @t1, @t2; #结果集 delimiter // create procedure p1() begin select * from v1; end // delimeiter; #结果集+out值 delimiter // create procedure p2( in n1 int, inout n3 int, out n2 int, ) begin declear temp1 int;

mysql基础

怎甘沉沦 提交于 2019-12-02 18:35:11
1、描述视图,存储过程,函数,触发器分别是什么并实践 视图(view)是一种虚拟存在的表,是一个逻辑表,本身并不包含数据。表现为对实体表的查询结果,查完之后存储在视图。方便下次查询   通过视图,可以展现基表的部分数据;视图数据来自定义视图的查询中使用的表,使用视图动态生成。 创建视图 create view v_students as select stuid,name,age from students; 创建视图,将查询结果存储成视图。可方便查询 原始表 视图生成的表 查看表状态。comment表示了是view表。表示为视图 函数 create function hello() returns varchar(20) return "hello world!"; 创建一个无参数的函数。返回字符串。具体返回为 hello world 实现一个打印字符串功能 查看函数定义 创建有参数的函数 MariaDB [hellodb]> delimiter // #将命令执行;号变成 //方便区分。在定义函数内部要执行的命令时。如果出现;号将不会执行 MariaDB [hellodb]> create function del(uid int unsigned) returns varchar(20) #创建函数。添加一个个uid参数,并指定类型为数字。返回结果为字符串 -> begin

10.28 总结

夙愿已清 提交于 2019-12-02 16:05:33
1.数据安全问题: 限于目前的硬件水平,一台机器性能是有限的,所以垂直进行扩展也是有限的。于是只能通过水平扩展增强我们的整体性能,将数据与应用程序分离,把文件存放于一台机器,多台机器通过网络去访问这台机器上的文件(用socket实现),共享数据以防数据不安全需要加锁处理。 2.数据库的分类 关系型数据库:对每一列的数据类型会有限定。 MySQL SqlServer Oracle sqlite,maridb等 非关系型数据库:redis,mongodb(可以解决断电即消失的问题) 它们最大区别:关系型数据库把数据存在硬盘中;非关系型数据库存在内存中。 3.mysql的架构: 类似于socket套接字的C/S架构。 流程:1.mysql服务端先启动,监听在某一个特定的端口(3306);2.mysql客户端连接服务端;3.MySQL客户端就可以发送相关的操作命令,去操作服务端存储的数据。 4.数据库服务器、数据管理系统、数据库、表与记录的关系 记录:1 刘海龙 324245234 22(多个字段的信息组成一条记录,即文件中的一行内容) 表:student,school,class_list(即文件) 数据库:oldboy_stu(即文件夹) 数据库管理系统:如mysql(是一个软件) 数据库服务器:一台计算机(对内存要求比较高) 总结: 数据库服务器-:运行数据库管理软件 数据库管理软件

mysql创建使用存储过程

醉酒当歌 提交于 2019-12-02 14:48:53
mysql存储过程详解 1. 存储过程简介 我们常用的操作数据库语言 SQL 语句在执行的时候需要要先编译,然后执行,而存储过程( Stored Procedure )是一组为了完成特定功能的 SQL 语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给定参数(如果该存储过程带有参数)来调用执行它。 一个存储过程是一个可编程的函数,它在数据库中创建并保存。它可以有 SQL 语句和一些特殊的控制结构组成。当希望在不同的应用程序或平台上执行相同的函数,或者封装特定功能时,存储过程是非常有用的。数据库中的存储过程可以看做是对编程中面向对象方法的模拟。它允许控制数据的访问方式。 存储过程通常有以下优点: (1). 存储过程增强了 SQL 语言的功能和灵活性。存储过程可以用流控制语句编写,有很强的灵活性,可以完成复杂的判断和较复杂的运算。 (2). 存储过程允许标准组件是编程。存储过程被创建后,可以在程序中被多次调用,而不必重新编写该存储过程的 SQL 语句。而且数据库专业人员可以随时对存储过程进行修改,对应用程序源代码毫无影响。 (3). 存储过程能实现较快的执行速度。如果某一操作包含大量的 Transaction-SQL 代码或分别被多次执行,那么存储过程要比批处理的执行速度快很多。因为存储过程是预编译的。在首次运行一个存储过程时查询,优化器对其进行分析优化

MySQL-------存储过程与存储函数(3)

限于喜欢 提交于 2019-12-02 08:43:44
10.2.1 调用存储过程 存储过程必须使用CALL语句来调用。如果要调用其它数据库的存储过程,需要指定数据库名称。例如 CALL dbname.spname DROP TABLE IF EXISTS t_student; CREATE TABLE t_student ( id INT(11) PRIMARY KEY AUTO_INCREMENT, name VARCHAR(255) NOT NULL, age INT(11), address VARCHAR(255), sex CHAR(2) ); INSERT INTO t_student VALUES(NULL,'大宇',22,'苏州','男'); INSERT INTO t_student VALUES(NULL,'小宇',20,'盐城','男'); INSERT INTO t_student VALUES(NULL,'小雨',20,'盐城','女'); DELIMITER // --存储过程分隔符设定为// CREATE PROCEDURE CountStu(IN stu_sex CHAR,OUT num INT) --stu_sex表示输入,num表示输出 BEGIN SELECT COUNT(*) INTO num FROM t_student WHERE sex = stu_sex; --结果存入num

MySQL-------存储过程与存储函数(4)

|▌冷眼眸甩不掉的悲伤 提交于 2019-12-02 08:43:24
存储过程与存储函数的补充 MySQL的存储过程与存储函数有什么区别? 存储函数只能通过return语句返回单个值或者表对象。 存储过程不能用return,但是可以使用多个out参数返回多个值。 存储过程如何修改代码? 虽然提供了ALTER PROCEDURE sp_name [存储特性],但是只能修改存储过程的存储特性,不能修改SQL。需要删除并重新创建。 存储过程中能调用其它存储过程吗? 可以在存储过程中的SQL中通过CALL调用其它存储过程,但是不能用DROP删除其它存储过程。 IN、OUT等参数与字段名相同了怎么办? 需要将它们区别开来,否则将会出现错误。 存储过程的IN参数可能是中文怎么办? 在定义存储过程的时候,加上character set gbk。 DELIMITER // CREATE PROCEDURE getAddressByName(IN u_name VARCHAR(50) character set gbk , OUT address VARCHAR(50)) BEGIN SQL; END// DELIMITER ; 来源: https://blog.csdn.net/qq_18975791/article/details/102722249

MySQL权限详解

倖福魔咒の 提交于 2019-12-02 05:10:40
MySQL权限详解 MySQL权限级别介绍 MySQL权限级别 全局性的管理权限,作用于整个MySQL实例级别 数据库级别的权限,作用于某个指定的数据库上或者所有的数据库上 数据库对象级别的权限,作用于指定的数据库对象上(表、视图等)或 者所有的数据库对象上 权限存储在mysql库的user, db, tables_priv, columns_priv, and procs_priv这几个系统表中,待MySQL实例启动后就加载到内存中 MySQL权限级别介绍 对比root用户在几个权限系统表中的数据 mysql> select * from user where user=‘root’ and host=‘localhost’; ##都是’Y’ mysql> select * from db where user=‘root’ and host=‘localhost’; ##无记录 mysql> select * from tables_priv where host=‘localhost’ and user=‘root’; ##无记录 mysql> select * from columns_priv where user=‘root’ and host=‘localhost’; ##无记录 mysql> select * from procs_priv where user=

MySQL 主从复制

醉酒当歌 提交于 2019-12-02 05:09:44
背景 公司内部 MySQL 只有一部,现在需要添加一个从库。办法把现有的 MySQL变成主库,新搭建一台 MySQL从库,组成一主一从让开发配置读写分离。 操作系统 CentOS 7.4 64bit MySQL主库 192.168.0.237 MySQL从库 192.168.0.227 MySQL 主从复制图解 1. 从库执行 change master to ,ip pot user password binlog position 信息写入到 master.info 2. 从库执行 start slave 时,从库会启动 IO 线程 和 SQL 线程 3. IO_T 会读取 master.info 信息,获取主库信息连接主库 4. 主库会生成一个准备 binlog 的 DUMP 线程,来响应从库 5. IO_T 根据 master.info 记录的 binlog 文件名和 position 号,请求主库 DUMP 线程最新的日志 6. DUMP 线程检查主库的 binlog 日志,如果有新的,TP(传送)给从从库的 IO_T 7. IO_T 将收到的日志存储到了 TCP/IP 缓存,立即返回 ACK 给主库,主库工作完成 8. IO_T 将缓存中的数据,存储到 relay-log 日志文件, 更新 master.info 文件 binlog 文件名和 postion,IO_T