mysql创建存储过程

MySql 和Server Sql的差异

雨燕双飞 提交于 2019-12-25 03:11:21
MySql 和 Server Sql 的差异 1 、自增长列的插入: SQLServer 中可以不为自动增长列插入值, MySQL 中需要为自动增长列插入值。 2 、获取当前时间函数 : SQLServer 写法: getdate() MySQL 写法: now() 3 、从数据库定位到表。 Sqlserver 写法:库名 .dbo. 表名 ;或者:库名 .. 表名 (注:中间使用两个点) select password from Info.dbo.users where userName='boss' 或者 select password from Info..users where userName='boss' mysql 写法:库名 . 表名 select password from Info.users where userName='boss' 4 、判断是否存在某个数据库,若存在,则删除 Sqlserver 写法: IF DB_ID('users') IS NOT NULL DROP DATABASE users Mysql 写法: Drop DATABASEif exists users 拓展:若 sqlserver 数据库正在使用中,删除之前,先要把数据库变成 “ 单一用户 ” ,再删除 ALTER DATABASE users SET SINGLE_USER

MYSQL存储过程及事件

你离开我真会死。 提交于 2019-12-24 10:46:29
关于mysql下的存储过程以及事件的创建 以下这个存储过程主要实现的功能就是查询表里面半年前的数据,假设有就存到文件。然后将数据删除。 CREATE DEFINER = `root`@`localhost` PROCEDURE `NewProc`() BEGIN select COUNT(*) INTO @count from S_ACCOUNT where date_add(registerTime, interval 6 month)<=NOW(); IF @count>0 THEN set @today=TIME_TO_SEC(now()); set @select_sql=concat("select * from S_ACCOUNT where date_add(registerTime, interval 6 month)<=NOW() INTO OUTFILE 'C:/\\",@today,".txt' FIELDS TERMINATED BY ',';"); PREPARE charu FROM @select_sql; EXECUTE charu; delete from S_ACCOUNT where date_add(registerTime, interval 6 month)<=NOW() ; commit; END IF; END; FIELDS

python3操作mysql教程

百般思念 提交于 2019-12-24 07:17:15
一、下载\安装\配置 1. python3 Python3下载网址: http://www.python.org/getit/ 当前最新版本是python3.2,下载地址是 http://www.python.org/ftp/python/3.2.3/python-3.2.3.msi 安装过程就不用说了,默认安装到C:\Python32目录中。 安装好后,将安装目录C:\Python32添加到环境变量中。然后打开命令提示符窗口,输入python,如果能返回python版本说明安装成功以及环境变量设置成功。 C:\>python Python 3.2.3 (default, Apr 11 2012, 07:15:24) [MSC v.1500 32 bit (Intel)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>> 2. MySQL MySQL下载地址: http://www.mysql.com/downloads/mysql/ MySQL有很多种类型的版本,这里我们选择MySQL Community Server,最新版本5.5.25a 下载地址:http://cdn.mysql.com/Downloads/MySQL-5.5/mysql-5.5.25a

mysql基础学习二

帅比萌擦擦* 提交于 2019-12-24 04:00:39
视图 视图概念 视图是存储的查询语句,当调用的时候,产生结果集,视图充当的是虚拟表的角色。其实视图可以理解为一个表或多个表中导出来的表,作用和真实表一样,包含一系列带有行和列的数据 视图中,用户可以使用SELECT语句查询数据,也可以使用INSERT,UPDATE,DELETE修改记录,视图可以使用户操作方便,并保障数据库系统安全,如果原表改名或者删除则视图也失效。 视图操作 创建视图 语法结构: CREATE [ OR REPLACE ] VIEW [ view_name ] AS [ SELECT_STATEMENT ] ; 释义: CREATE VIEW : 创建视图 OR REPLACE : 可选,如果添加原来有同名视图的情况下会覆盖掉原有视图 view_name : 视图名称 SELECT_STATEMENT : SELECT 语句 e . g . create view c1 as select name , age from class_1 ; 视图表的增删改查操作 视图的增删改查操作与一般表的操作相同,使用insert update delete select即可,但是原数据表的约束条件仍然对视图产生作用。 删除视图 drop view [IF EXISTS] 视图名; IF EXISTS 表示如果存在,这样即使没有指定视图也不会报错。 drop view c1 ;

PDO防sql注入原理分析

感情迁移 提交于 2019-12-24 03:13:27
使用pdo的预处理方式可以避免sql注入。 在php手册中'PDO--预处理语句与存储过程'下的说明: 很多更成熟的数据库都支持预处理语句的概念。什么是预处理语句?可以把它看作是想要运行的 SQL 的一种编译过的模板,它可以使用变量参数进行定制。预处理语句可以带来两大好处: 查询仅需解析(或预处理)一次,但可以用相同或不同的参数执行多次。 当查询准备好后,数据库将分析、编译和优化执行该查询的计划。对于复杂的查询,此过程要花费较长的时间,如果需要以不同参数多次重复相同的查询,那么该过程将大大降低应用程序的速度。通过使用预处理语句,可以避免重复分析/编译/优化周 期。简言之, 预处理语句占用更少的资源,因而运行得更快。 提供给预处理语句的参数不需要用引号括起来,驱动程序会自动处理。 如果应用程序只使用预处理语句,可以确保不会发生SQL 注入。 (然而,如果查询的其他部分是由未转义的输入来构建的,则仍存在 SQL 注入的风险)。 预处理语句如此有用,以至于它们唯一的特性是在驱动程序不支持的时PDO 将模拟处理。这样可以确保不管数据库是否具有这样的功能,都可以确保应用程序可以用相同的数据访问模式。 下边分别说明一下上述两点好处: 1.首先说说mysql的存储过程,mysql5中引入了存储过程特性,存储过程创建的时候,数据库已经对其进行了一次解析和优化。其次,存储过程一旦执行

Mysqldump源码分析

元气小坏坏 提交于 2019-12-23 11:19:34
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 版权声明:本文由王珏原创文章,转载请注明出处: 文章原文链接: https://www.qcloud.com/community/article/261 来源:腾云阁 https://www.qcloud.com/community Mysqldump源码分析 王珏 标签: MySQL 2016-12-13 15:41:13 21 本文对mysql5.6.24 mysqldump工具做了简要分析,流程调用序列如下图所示: 流程分析: get_options : 获取mysql参数 connect_to_db : 连接mysql write_header : 写入文件头,保存源数据库原始变量值:字符集、时区、SQL mode等 -- MySQL dump 10.13 Distrib 5.6.24, for Linux (x86_64) -- -- Host: localhost Database: test -- ------------------------------------------------------ -- Server version 5.6.24-log /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*

Day 1 MySQL数据库

雨燕双飞 提交于 2019-12-23 04:50:32
MySQL数据库_1 一、概述   1、数据(DATA)     描述事物的符号记录称为数据,描述事物的符号既可以是数字,也可以是文字、图片,图像、声音、语言等,数据由多种表现形式,它们都可以经过数字化后存入计算机。   2、数据库(DataBase,简称DB)      数据库就是一个文件夹!      数据库即存放数据的仓库,只不过这个仓库是在计算机存储设备上,而且数据是按一定的格式存放的。     过去人们将数据存放在文件柜里,现在数据量庞大,已经不再适用。     数据库是长期存放在计算机内、有组织、可共享的数据即可。     数据库中的数据按一定的数据模型组织、描述和储存,具有较小的冗余度、较高的数据独立性和易扩展性,并可为各种 用户共享。   3、数据库管理系统(DataBase Management System,简称DBMS)     在了解了Data与DB的概念后,如何科学地组织和存储数据,如何高效获取和维护数据成了关键。     这就用到了一个系统软件---数据库管理系统。     如MySQL、Oracle、SQLite、Access、MS SQL Server      mysql 主要用于大型门户,例如搜狗、新浪等,它主要的优势就是开放源代码,因为开放源代码这个数据库是免费的,他现在是甲骨文公司的产品。      oracle 主要用于银行、铁路、飞机场等

MySQL事件调度器Event Scheduler

谁都会走 提交于 2019-12-23 03:46:16
我们都知道windows的计划任务和linux的crontab都是用来实现一些周期性的任务和固定时间须要运行的任务。 在mysql5.1之前我们完毕数据库的周期性操作都必须借助这些操作系统实现。 在mysql5.1及其之后的版本号添加了计划任务的功能(mysql事件调度器Event Scheduler)。 事件调度器是定时触发运行的。在这个角度上也能够称作是"暂时的触发器"。 触发器仅仅是针对某个表产生的事件运行一些语句。而事件调度器则是在某一个(间 隔)时间运行一些语句。事件是由一个特定的线程来管理的,也就是所谓的"事件调度器"。 启用事件调度器后。拥有 SUPER 权限的账户运行 SHOW PROCESSLIST 就能够看到这个线程了。 一、事件调度器event_scheduler的开启: mysqlserver时间调度器的开启是由一个名叫 event_scheduler 的全局变量控制的,这个变量默觉得OFF或者是0 。 查看是否开启: mysql> SHOW GLOBAL VARIABLES LIKE 'event%' ; //OFF 关闭;ON 开启; mysql> SELECT @@event_scheduler; //0 关闭;1 开启。 要使用事件调度器必须先开启 event_scheduler。开启的方法例如以下: 1、 SET GLOBAL event

MySQL3:存储过程和函数

。_饼干妹妹 提交于 2019-12-22 21:35:26
什么是存储过程 简单说,存储过程就是一条或多条SQL语句的集合,可视为批文件,但是起作用不仅限于批处理。本文主要讲解如何创建存储过程和存储函数以及变量的使用,如何调用、查看、修改、删除存储过程和存储函数等。使用的数据库和表还是之前写JDBC用的数据库和表: create database school; use school; create table student ( studentId int primary key auto_increment not null, studentName varchar(10) not null, studentAge int, studentPhone varchar(15) ) insert into student values(null,'Betty', '20', '00000000'); insert into student values(null,'Jerry', '18', '11111111'); insert into student values(null,'Betty', '21', '22222222'); insert into student values(null,'Steve', '27', '33333333'); insert into student values(null,'James', '22

Mysql的触发器学习总结

旧街凉风 提交于 2019-12-21 01:58:18
一、触发器概念 触发器(trigger):监视某种情况,并触发某种操作,它是提供给程序员和数据分析员来保证数据完整性的一种方法,它是与表事件相关的特殊的存储过程,它的执行不是由程序调用,也不是手工启动,而是由事件来触发,例如当对一个表进行操作( insert,delete, update)时就会激活它执行。 触发器经常用于加强数据的完整性约束和业务规则等。 触发器创建语法四要素: 1.监视地点(table) 2.监视事件(insert/update/delete) 3.触发时间(after/before) 4.触发事件(insert/update/delete) 触发器基本语法如下所示: 其中:trigger_time是触发器的触发事件,可以为before(在检查约束前触发)或after(在检查约束后触发);trigger_event是触发器的触发事件,包括insert、update和delete,需注意对同一个表相同触发时间的相同触发事件,只能定义一个触发器;可以使用old和new来引用触发器中发生变化的记录内容。 触发器SQL语法: [sql] view plain copy create trigger triggerName after/before insert/update/delete on 表名 for each row #这句话在mysql是固定的 begin