mysql时间函数

mysql存储过程详解

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

Mysql Event

扶醉桌前 提交于 2019-11-28 15:26:13
Always Benny&Viva Copyright © 2006 by MySQL AB “MySQL 5.1 新特性” 系列 目录 目 录.........................................................................................................................................1 设定事件并运行......................................................................................................................1 CREATE EVENT 的语法..........................................................................................................2 CREATE EVENT 例子.............................................................................................................5 SET GLOBAL

Mysql 时间和日期函数

我的未来我决定 提交于 2019-11-28 13:34:18
参考文章 1 时间函数 当前日期和时间 select now(); 2 得到昨天的日期 CURDATE() 当前日期 select CURDATE()-1; -- curdate 3 添加时间间隔 当前日期的未来五年 interval 间隔 select date_add(CURDATE(),interval 5 year); 未来的4个月/3星期 select date_add(CURDATE(),interval 4 MONTH); select date_add(CURDATE(),interval 3 week); 4 获取当前月份的最后一天 select last_day(CURDATE()) 5 当前月的第一天 select date_add(CURDATE(),interval -(select day(CURDATE()))+1 day); 6 日期格式化 select DATE_FORMAT(CURDATE(),"%y-%m-%d") select DATE_FORMAT(CURDATE(),"%Y-%M-%D") Y完整年 y年的后两位 M 英文月 m 数字月 D 英文日 d数字日 W英文星期 w数字星期 H 24进制 h12进制 分钟 秒 select DATE_FORMAT(CURDATE(),"%w") 来源: https://www.cnblogs

MySQL-视图-触发器-事务-存储过程-函数-流程控制-索引与慢查询优化-06

醉酒当歌 提交于 2019-11-28 11:14:39
目录 视图 *** 什么是视图 为什么要用视图 如何生成视图 修改视图 --> 最好(千万)不要 关联表数据改动前 关联表数据改动之后 触发器 什么是触发器 触发条件 触发器语法结构 修改mysql的默认结束符(;) 触发器死循环 六个触发器的执行时机 新增前、新增后、删除前、删除后、更新前、更新后 NEW对象指代的就是当前记录(对象) 事务 ***** 什么是事务 事务的四大特性 ACID A:原子性 atomicity C:一致性 consistency I:隔离性 isolation D:持久性 durability 如何开启事务 事务回滚 永久性更改 小案例 存储过程 什么是存储过程 如何创建存储过程 语法结构 案例 定义存储过程 在mysql中调用存储过程 在pymysql中调用存储过程 案例-- 使用存储过程监测事务 函数 MySQL内置函数 常见函数及练习 date_format() 函数(需掌握) 自定义函数 流程控制 if 条件语句 while 循环 索引与慢查询优化 ** 详细内容参考egon 的博客 前言(摘抄) 索引 扩展阅读 常见 索引 索引的本质 索引的缺点 小结 索引的数据结构 -- B+ 树 聚集索引非聚集索引 联合索引 慢查询优化 注意这块的小点能提高sql语句性能 测试索引 正确使用索引 小科普 核心业务逻辑代码一般都是 放在服务端 的

java和mysql之间的时间日期类型传递

与世无争的帅哥 提交于 2019-11-28 10:33:02
mysql(版本:5.1.50)的时间日期类型如下: datetime 8bytes xxxx-xx-xx xx:xx:xx 1000-01-01 00:00:00到9999-12-31 23:59:59 timestamp 4bytes xxxx-xx-xx xx:xx:xx 1970-01-01 00:00:01到2038 date 3bytes xxxx-xx-xx 1000-01-01到9999-12-31 year 1bytes xxxx 1901到2155 time 3bytes xx:xx:xx -838:59:59到838:59:59(为了满足时间的加减运算) java(1.6) 中能保存时间日期类型的类主要有 java.util.Date java.util.Calendar java.sql.Date java.sql.Time java.sql.Timestamp 以前从mysql中查询出来的时间日期类型,都放在 java.util.Date 类型里面了。这样带来一系列的问题,首先这个类提供的时间操作函数太少,一般都需要转换成 java.util.Calendar 再去操作;其次即使使用了 java.util.Calendar ,也不是很方便,一个很简单的想法,需要写很多代码才能实现; java.util.Date 的数据内容为xxxx-xx-xx xx:xx

MySQL其他专业术语介绍

前提是你 提交于 2019-11-28 08:54:00
一.视图 当你频繁查询一张虚拟表的时候,为了避免多次重复查询,那么就可以通过查询得到的这张虚拟表,制作保存下来。 使用视图具体代码如下: create view teacher2course as select * from teacher inner join course on teacher.tid = course.teacher_id; 强调: 1、在硬盘中,视图只有表结构文件,没有表数据文件 2、视图通常是用于查询,尽量不要修改视图中的数据 二,触发器 触发器专门针对我们对某一张表数据增insert、删delete、改update的行为,这类行为一旦执行 ​ 就会触发触发器的执行,即自动运行另外一段sql代码 # 针对插入 create trigger tri_after_insert_t1 after insert on 表名 for each row begin sql代码。。。 end create trigger tri_after_insert_t2 before insert on 表名 for each row begin sql代码。。。 end # 针对删除 create trigger tri_after_delete_t1 after delete on 表名 for each row begin sql代码。。。 end create

视图、触发器、事务、存储过程、函数

大憨熊 提交于 2019-11-28 08:29:46
一、视图 1.什么是视图? 一个查询语句的结果是一张虚拟表,将这种虚拟表保存下来 它就变成了一个视图2.为什么要用视图? 当频繁需要用到多张表的连表结果,你就可以事先生成好视图 之后直接调用即可,避免了反复写连表操作的sql语句3.视图特点: 1.视图只有表结构,在数据库中只会生成表结构文件,视图中的数据还是来源于原来的表2.不要改动视图表中的数据,一旦改动就会改动原文件数据,并且在多表情况下,因为有关联关系,你也修改不了视图3.一般情况下不会频繁的使用视图来写业务逻辑 4.视图虽好可不要多用:1.视图是存放在数据库中的,如果我们程序中使用的sql过分依赖数据库中的视图,即强耦合,那就意味着扩展sql极为不便。企业中开发和数据库管理是分开的,如果你的大量逻辑都基于视图来写当你需要  新增视图或者修改视图就要跨部门交流,谁管你的吊事,并且人家可能也不会帮你去维护视图,一旦视图被误删或者丢失,你的所有代码都要重新从头再来,因此还是老老实实使用sql原生语句,该连表就连表2.生成一个视图就会生成一个表结构,当视图足够多的时候占用大量资源 #两张有关系的表 mysql> select * from course; +-----+--------+------------+ | cid | cname | teacher_id | +-----+--------+------------+

day39_8_23mysql的其他内容(视图等)

一曲冷凌霜 提交于 2019-11-28 08:29:35
一。视图   MySQL中有一种比较方便的表,就是视图(view)。   什么是视图?   视图就是通过查询获得一张虚拟表,然后将其保存,下次可以直接使用这个视图。   使用视图就可以不需要重复查询/连接表,在代码层次比较方便。   视图创建的语法: #语法:CREATE VIEW 视图名称 AS SQL语句 create view teacher_view as select tid from teacher where tname='李平老师';   修改了视图里的数据后,原数据表中的数据也会跟着修改,所以,视图只是复制了他的表结构,。   而且,设涉及多个表的视图是无法修改的。 # 修改视图 ALTER VIEW 视图名称 AS SQL语句   删除视图 语法:DROP VIEW 视图名称 DROP VIEW teacher_view   视图不会被频繁的使用。视图是mysql的功能,如果你的项目里面大量的使用到了视图,那意味着你后期想要扩张某个功能的时候这个功能恰巧又需要对视图进行修改,意味着你需要先在mysql这边将视图先修改一下,然后再去应用程序中修改对应的sql语句,这就涉及到跨部门沟通的问题,所以通常不会使用视图,而是通过重新修改sql语句来扩展功能。 二。触发器。   触发器使得当某个操作数据表的增删改之前或者之后,自动触发一些语句。   触发器的操作有:

视图、触发器、事务、存储过程、函数、流程控制

蹲街弑〆低调 提交于 2019-11-28 08:07:00
一、视图 1.什么是视图 一个查询语句的结果是一张虚拟表,将这种虚拟表保存下来 它就变成了一个视图 2.为什么要用视图 当频繁需要用到多张表的连表结果,你就可以事先生成好视图 之后直接调用即可,避免了反复写连表操作的sql语句 3.如何使用视图 创建视图语句: create view teacher_course as select * from teacher INNER JOIN course on teacher.tid = course.teacher_id; 注意: 1.视图只有表结构,视图中的数据是来源于原来的表 2.不要改动视图表中的数据 3.一般情况下不会频繁的使用视图来写业务逻辑 二、触发器 1.什么是触发器 触发器是达到某个条件自动触发, 当对数据进行增、删、改的情况下会自动触发触发器的运行 2.为何要使用触发器 触发器专门针对我们对某一张表数据增insert、删delete、改update的行为,这类行为一旦执行 就会触发触发器的执行,即自动运行另外一段sql代码 3.固定语法结构 create trigger 触发器的名字 after/before insert/update/delete on 表名 for each row begin sql语句 end 如下: t1为表名 触发器名:tri_befor_t1 在触发器之前或者之后进行插入或更改或删除t1

MySQL--高性能MySQL笔记一

喜夏-厌秋 提交于 2019-11-28 07:22:42
链接管理与安全性: 每个客户端连接都在服务器进程中拥有一个线程。 MySQL5.5以及更新的版本提供了一个API,支持线程池插件,可以使用池中少量的线程服务大量的链接。 认证基于用户名、密码和原始主机信息。 并发控制: 在处理并发读或者写时,可以通过实现一个由两种类型的锁组成的锁系统来解决问题,这两种类型的锁通常被称为共享锁(shared lock)、排他锁(exclusive lock)。也叫读锁或者写锁。 锁策略: 在锁的开销和数据的安全性之间寻求平衡,一般都是在表中施加行级锁(row-level-lock)。 表锁和行级锁 事务:一组原子性的sql查询,一个独立的工作单元。如果数据库引擎能够成功的对数据库应用该组查询的全部语句,那么就执行该组查询。 ACID:原子性atomicity 一致性consistency 隔离性isolation 持久性 durability 四种隔离级别: READ UNCOMMITTED 未提交读 : 事务中的修改,即使没有提交,对于其他事务也都是可见的。事务可以读取未提交的数据,脏读。 READ COMMITTED 提交读: 大多数数据库的默认隔离级别, read committed ,但是MySQL不是。一个事务从开始到提交之前,所做的任何修改对其他事务都是不可见的。 REPEATABLE READ 可重复读 : 解决了脏读的问题