mysql创建存储过程

MySQL 创建表

≯℡__Kan透↙ 提交于 2020-01-11 15:59:14
MySQL中create table语句的基本语法是: CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name [(create_definition,...)] [table_options] [select_statement] TEMPORARY:该关键字表示用MySQL create table新建的表为临时表,此表在当前会话结束后将自动消失。临时表主要被应用于存储过程中,对于目前尚不支持存储过程的MySQL,该关键字一般不用。 IF NOT EXISTS:实际上是在建表前加上一个判断,只有该表目前尚不存在时才执行create table操作。用此选项可以避免出现表已经存在无法再新建的错误。 tbl_name:你所要创建的表的表名。该表名必须符合标识符规则。通常的做法是在表名中仅使用字母、数字及下划线。例如titles、our_sales、my_user1等都应该算是比较规范的表名。 create_definition:这是MySQL create table语句中关键部分所在。在该部分具体定义了表中各列的属性。 create_definition的基本语句是: col_name type [NOT NULL | NULL] [DEFAULT default_value] [AUTO_INCREMENT] [PRIMARY KEY

MySQL 创建表

两盒软妹~` 提交于 2020-01-11 03:03:16
MySQL中create table语句的基本语法是: CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name [(create_definition,...)] [table_options] [select_statement] TEMPORARY:该关键字表示用MySQL create table新建的表为临时表,此表在当前会话结束后将自动消失。临时表主要被应用于存储过程中,对于目前尚不支持存储过程的MySQL,该关键字一般不用。 IF NOT EXISTS:实际上是在建表前加上一个判断,只有该表目前尚不存在时才执行create table操作。用此选项可以避免出现表已经存在无法再新建的错误。 tbl_name:你所要创建的表的表名。该表名必须符合标识符规则。通常的做法是在表名中仅使用字母、数字及下划线。例如titles、our_sales、my_user1等都应该算是比较规范的表名。 create_definition:这是MySQL create table语句中关键部分所在。在该部分具体定义了表中各列的属性。 create_definition的基本语句是: col_name type [NOT NULL | NULL] [DEFAULT default_value] [AUTO_INCREMENT] [PRIMARY KEY

MYSQL_ 语法 13 -----CREATE TRIGGER (15)

你。 提交于 2020-01-11 01:26:29
触发器 MySQL 数据库中触发器是一个特殊的存储过程,不同的是执行存储过程要使用 CALL 语句来调用,而触发器的执行不需要使用 CALL 语句来调用,也不需要手工启动,只要一个预定义的事件发生就会被 MySQL自动调用。 引发触发器执行的事件一般如下: 增加一条学生记录时,会自动检查年龄是否符合范围要求。 每当删除一条学生信息时,自动删除其成绩表上的对应记录。 每当删除一条数据时,在数据库存档表中保留一个备份副本。 触发程序的优点如下: 触发程序的执行是自动的,当对触发程序相关表的数据做出相应的修改后立即执行。 触发程序可以通过数据库中相关的表层叠修改另外的表。 触发程序可以实施比 FOREIGN KEY 约束、CHECK 约束更为复杂的检查和操作。 触发器与表关系密切,主要用于保护表中的数据。特别是当有多个表具有一定的相互联系的时候,触发器能够让不同的表保持数据的一致性。 在 MySQL 中,只有执行 INSERT、UPDATE 和 DELETE 操作时才能激活触发器。 在实际使用中,MySQL 所支持的触发器有三种:INSERT 触发器、UPDATE 触发器和 DELETE 触发器。 INSERT 触发器 在 INSERT 语句执行之前或之后响应的触发器。 使用 INSERT 触发器需要注意以下几点: 在 INSERT 触发器代码内,可引用一个名为 NEW(不区分大小写

Linq to MySQL 存储的使用

谁都会走 提交于 2020-01-10 10:42:01
下面主要介绍 Linq to MySQL (ALinq for MySQL),如果你还不知道 ALinq 是什么, 请点击这里 。 完整的 Sample 位于 ALinq 的安装目录下的子目录 Samples\CSharpe\OracleSamples.zip 或 Samples\VB\OracleSamples.zip 。 Sample 的使用:打开该工程,然后运行 Sample3_StoreProcedure ,然后点击 Create Procedure 按钮创建存储过程。 示例1: 步骤一:在数据库中创建存储过程,下面这个存储过程是用来添加一个 Category 到数据库中。 CREATE PROCEDURE ADD_CATEGORY(IN CATEGORY_NAME VARCHAR(30), IN CATEGORY_DESCRIPTION TEXT)BEGININSERT INTO CATEGORIES (CategoryName, Description)Values (category_name, category_description);END 步骤二:将存储过程映射到 DataContext 实体类中的方法函数。 [Function(Name = "ADD_CATEGORY")]public void AddCategory( [Parameter(Name =

mysql存储过程总结

霸气de小男生 提交于 2020-01-08 16:42:17
N年没写过存储过程了,突然要写存储一下都忘记完了,现在回顾总结。 先废话的说下mysql中的变量有1.系统变量 和 2.自定义变量 系统变量:变量由系统提供,不是用户定义,属于服务器层面 a.查看所有的系统变量: show global | session variables; b.查看满足条件的部分系统变量: show global | 【session】 variables like '%char%'; c.查看指定的某哥系统变量的值: select @@global | 【session】.系统变量名; d.为某个系统变量赋值 方法一: set global | 【session】 系统变量名 = 值; 方法二: set @@global | 【session】.系统变量名 = 值; e.全局变量 1.查看所有的全局变量: SHOW GLOBAL VARIABLES; 查看部分的全局变量: SHOW GLOBAL VARIABLES LIKE '%char%'; 3.查看指定的全局变量的值: SELECT @@global.autocommit; SELECT @@tx_isolation; 4.为某个指定的全局变量赋值: SET @@global.autocommit=0; f.会话变量 1.查看所有的会话变量 SHOW VARIABLES; SHOW SESSION

MySQL索引、视图、存储过程

自闭症网瘾萝莉.ら 提交于 2020-01-08 06:02:42
一、索引的概念 数据库中的索引与书籍中的目录类似 在一本书中,无需阅读整本书,利用目录就可以快速查找所需信息 书中的目录是一个词语列表,其中表明了包含各个词的页码 数据库索引 在数据库中,索引使数据库程序无须对整个表进行扫描,就可以在其中找到所需数据 数据库中的索引是某个表中一列或者若干列值得集合,以及物理标识这些值得数据页的逻辑指针清单 索引优点:可以快速找到数据 缺点:占用硬盘资源 二、索引的作用 设置了合适的索引之后,数据库利用各种快速的定位技术,能够大大加快查询速率 特别是当表很大时,或者查询涉及到多个表时,使用索引可使查询加快成千倍 可以降低数据库的IO读写成本,并且索引还可以降低数据库的排序成本 通过创建唯一性索引保证数据表数据的唯一性 可以加快表与表之间的连接 在使用分组和排序时,可大大减少分组和排序时间 三、索引的分类 普通索引 这是最基本的索引类型,而且它没有唯一性之类的限制 唯一性索引 这种索引和前面的“普通索引”基本相同,但有一个区别:索引列的所有值都只能出现一次,即必须唯一 唯一性索引允许为空,但是只能有一次为空 主键 主键是一种唯一性索引,但它必须指定为“PRIMARY KEY” 全文索引 MySQL从3.23.23版开始支持全文索引和全文检索。在MySQL中,全文索引的索引类型为FULLTEXT,全文索引可以在VARCHAR或者TEXT类型的列上创建

MySQL基础篇(04):存储过程和视图,用法和特性详解

偶尔善良 提交于 2020-01-06 21:06:45
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 本文源码: GitHub·点这里 || GitEE·点这里 一、存储过程 1、概念简介 存储程序是被存储在服务器中的组合SQL语句,经编译创建并保存在数据库中,用户可通过存储过程的名字调用执行。存储过程核心思想就是数据库SQL语言层面的封装与重用性。使用存储过程可以较少应用系统的业务复杂性,但是会增加数据库服务器系统的负荷,所以在使用时需要综合业务考虑。 2、基本语法格式 CREATE PROCEDURE sp_name ([proc_parameter[,...]]) [characteristic ...] routine_body 案例一:计算消费折扣 -- 创建存储过程 DROP PROCEDURE IF EXISTS p01_discount ; CREATE PROCEDURE p01_discount(IN consume NUMERIC(5,2),OUT payfee NUMERIC(5,2)) BEGIN -- 判断收费方式 IF(consume>100.00 AND consume<=300.00) THEN SET payfee=consume*0.8; ELSEIF (consume>300.00) THEN SET payfee=consume*0.6; ELSE SET payfee

mysql sys库使用功能

房东的猫 提交于 2020-01-06 20:18:14
MySQL5.7新库sys的一些实用功能 sys schema数据主要源自performance_schema。其目标是把查询performance_schema的复杂度降低,让DBA能更好地利用这个库里的数据,更快地了解MySQL的运行情况。sys schema包含了一些视图、函数和存储过程,sys schema用以帮助DBA及开发更方便的分析定位问题。 那么对于我们DBA来说,sys schema的一些主要用途有哪些? 1、哪个用户或者哪个IP的客户端使用了最多的资源? 2、数据库连接来自哪里,以及这些连接对数据库的请求情况是怎样的? 3、数据库中哪些SQL被频繁执行? 4、哪个文件产生了最多的IO,读多还是写多? 5、哪个表上的IO请求最多? 6、哪个表被访问的最多? 7、哪些语句延迟比较严重? 8、哪些SQL执行了全表扫描或执行了排序操作? 9、哪些SQL使用了临时表,又有哪些SQL用到了磁盘临时表? 10、哪个库/表占用了最多的buffer pool? 11、每个连接分配多少内存? 12、自增长字段的最大值和当前已经使用到的值? 13、索引使用情况如何?有哪些冗余索引和无用索引? 14、内部有多个线程在运行? 下面一一举例说明: 1、哪个用户或者哪个IP的客户端使用了最多的资源? mysql> select * from host_summary limit 1\G **

Mysql语句大全

三世轮回 提交于 2020-01-06 16:11:10
1、说明:创建数据库 CREATE DATABASE database-name 2、说明:删除数据库 drop database dbname 3、说明:备份sql server --- 创建 备份数据的 device USE master EXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1.dat' --- 开始 备份 BACKUP DATABASE pubs TO testBack 4、说明:创建新表 create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..) 根据已有的表创建新表: A:create table tab_new like tab_old (使用旧表创建新表) B:create table tab_new as select col1,col2… from tab_old definition only 5、说明:删除新表 drop table tabname 6、说明:增加一个列 Alter table tabname add column col type 注:列增加后将不能删除。DB2中列加上后数据类型也不能改变,唯一能改变的是增加varchar类型的长度。 7、说明

MySQL 存储过程参数IN OUT INOUT区别

谁说我不能喝 提交于 2020-01-05 21:08:02
MySQL 存储过程参数IN OUT INOUT对比 一、IN -- 创建测试存储过程 delimiter // create procedure p_in ( IN num int ) begin select num; set num=100; select num; end; // delimiter ; set @num=100; call p_in(@num) 二、OUT -- 创建测试存储过程 delimiter // create procedure p_out ( OUT num int ) begin select num; set num=100; select num; end; // delimiter ; set @num=100; call p_out(@num) 三、INOUT -- 创建测试存储过程 delimiter // create procedure p_inout ( INOUT num int ) begin select num; set num=100; select num; end; // delimiter ; set @num=100; call p_inout(@num) 总结: IN 输入参数 表示该参数的值必须在调用存储过程时指定,在存储过程中修改该参数的值不能被返回,为默认值 仅需要将数据传入存储过程