Java学习总结(十八)——MySQL数据库(4)MySQL数据库中的视图,函数,存储过程中常见循环

一.MySQL存储过程中常见的循环
1.while循环:WHILE.....DO.....END WHILE
例1:
创建存储过程(求1+2+.......+num的和):

创建成功,进行调用:

显示结果:

2.REPEAT循环: REPEAT.........UNTLL END REPEAT
例2:
创建存储过程:

创建完成,调用存储过程:

显示结果:

3.LOOP循环:LOOP END LOOP
例3:
创建存储过程:

创建成功,调用存储过程:

显示结果:

二.MySQL中的视图
1.概念:有结构(有行有列),但没有结果(结构中不真实存储数据)的虚拟的表,虚拟表的结构来源不是自己定义的,而是从对应的基表中产生(视图数据的来源)
2.创建视图语法:

例1(创建单表视图):

例2(创建多表视图)

3.查看视图,其实视图就是一张虚拟表,那关于查询表的语句,对视图都是可以用的
比如:show tables; desc my_view1;

查询视图my_view2中的表数据:

显示结果:

但是在查看视图创建语句的时候,把tables改成view
例:

显示结果:

4.视图一旦创建,系统会在视图对应的数据库文件下,创建一个对应的结构文件:frm文件
5.视图的使用:视图的使用,只是为了查询,你可把视图当做表一样去使用,例如:select from my_view1;

显示结果:

(视图的执行:其本质就是执行封装的select 语句)
6.视图的删除:drop view 视图名称
7.视图的修改:视图本身不可以修改,但是视图的来源是可以修改的(其实就是修改select 语句)
语法:alter view 视图名称 as 新的select 语句;
例:

显示结果:

8.视图的意义:
(1)视图可以节省SQL语句,将一条复杂的查询语句,使用视图进行保存,以后可以对视图进行操作
(2)数据安全,视图操作注意是针对查询语句的,如果对视图结构进行处理(比如删除),不会影响基表的数据.
所以相对来说数据比较安全
(3)视图往往是在大项目中去使用,而且是多系统中去使用.我可以对外提供一些有用的数据,隐藏一些关键的数据.
(4)视图对外可以提供友好的数据:不同的视图提供不同的数据,对外提供的数据好像是经过专门设计的一样.
(5)视图可以更好的进行权限控制 比如对外隐藏我的一些基表的名称
9.视图数据的操作:视图是可以进行数据操作的(比如 增,删,改,视图中的数据),但是有很多限制
(1)插入数据数据:
#1.多表视图不能插入数据
#2.单表视图中可以插入数据(如果视图中字段没有基表中不能为空的字段且没有默认值的字段,是插入不成功的)
#3.视图是可以向基表中插入数据的 (视图的操作是影响基表的)
(2)视图数据删除:
#1.多表视图不能删除数据
#2.单表视图可以删除数据,也会影响到基表
(3)视图更新数据:
#1.单表视图,多表视图都可以更新数据
更新限制:with check option
例如:create view my_view1 as select
from students where age>30 with check option;

表示视图数据的来源都是年龄大于30的,with check option 决定通过视图更新的时候,不能将已得到数据age>30的学生 改成age小于30 的,那么:update my_v1 set age=20 where id=1; 就会报错 不允许改 因为做了限制

三.MySQL数据库中的函数

1.系统函数:直接调用即可,任何函数都有返回值,函数的调用是通过select调用,因为有返回值,所以只能用select调用
mysql中字符串是以单个字符为单位的:

(1)Substring(原字符串,从哪个地方,截取几个);mysql中下标从1开始算起
例如:定义一个变量:

显示结果:

(2)字符长度与字节长度:


结果:


结果:

(3)instr(@username,’民’):查找某个字符在字符串中的位置,如果找到返回此字符的索引,如果没有找到返回0
例:

显示结果:

(4)Lpad(@username,10,’要填充的字符’)左填充:将字符串按照指定的长度填充到原字符串的左边

显示结果:

(5)Rpad右填充

显示结果:

(6)insert 替换字符串
例:从第二个字符开始替换两个字符,替换成‘呵呵’

显示结果:

(7)strcmp(字符串1,字符串2)比较两个字符串的大小,按照字典顺序去比较
例:

显示结果:

2.自定义函数:(包括 函数名 函数参数 返回值 函数体(作用域))

(1)创建函数的语法:

例:
创建简单函数:

调用简单函数:

显示结果:

(2)函数基本语法:
-- 查看所有函数 show functions status;
-- 查看创建函数 show create function test;
-- 删除函数 drop function test;
例:
查看所有函数:

显示结果:

(3)复合结构定义语法:
在函数体中,如果包含多条语句,我们需要把多条语句放到BEGIN........END语句块中
例:
创建函数:

函数创建成功,调用函数:

显示结果:

四.MySQL数据库中常见的时间函数
1.常见日期函数:

服务器三种时区设置:
(1)系统时区---保存在系统变量system_time_zone
(2)服务器时区---保存在全局系统变量global.time_zone
(3)每个客户端连接的时区---保存在会话变量session.time_zone
注意:客户端时区的设置会影响一些日期函数返回值的显示,例如:now()、curtime()、curdate(),也影响timestamp列值的显示。
默认情况下,客户端和服务器的时区相同,其值为SYSTEM,表示使用系统时区。

2.返回服务器当前时间:now([fsp]);返回服务器当前时间和日期,fsp是指到秒的精确度,取值0~6
例:

(1)now()的显示格式是:‘YYYY-MM-DD HH:MM:SS’
例:

(2)now()+0的显示格式是:‘YYYYMMDDHHMMSS’
例:

注意:sysdate()返回服务器当前时间和日期,与now()的不同点在于:br/>@1.sysdate()返回的是函数的执行时间
@2.now()返回的是语句执行的时间

比之下图时间:

3.时间日期计算函数:分别为给定的时间日期加上(add)或减去(sub)一个时间间隔值(expr)
格式:

(1)interval是时间间隔的关键字
(2)Expr是一个表达式,对应后面的类型
(3)Unit是时间间隔的单位(间隔类型)(20个),如下:

例1:(当前时间加一天)

例2:(减一天一时一分一秒)

4.个性化显示日期:

(1)dayofweek(date); -- 一周中的第几天

(2)Dayofmonth(data); -- 一个中的第几天

(3)Dayofuyear(date) -- 一年中的第几天

                        【本次总结完毕】

Java学习总结(十八)——MySQL数据库(4)MySQL数据库中的视图,函数,存储过程中常见循环

原文地址:http://blog.51cto.com/13501268/2128276

时间: 2024-10-21 00:58:26

Java学习总结(十八)——MySQL数据库(4)MySQL数据库中的视图,函数,存储过程中常见循环的相关文章

JAVA学习第十八课(异常及其思想 (一) )

异常:重要知识点 异常处理的代码简单,重要还是理解其思想 一.概述: 异常就是在运行时发生的不正常情况 Throwable: Error 通常出现重大问题如,运行的类不存在或者内存溢出等 不编写针对代码对其处理 Exception 在运行时运行出现的一起情况,可以通过trt catch finally Exception和Error的子类名都是以父类名作为后缀 异常举例:数组越界.传递参数错误啊... class Futime { } class Bigtime { } public class

JAVA学习第二十八课(常用对象API)- String类

多线程告一段落,开始常用对象API的涉及,背也要背下来!!! 日后开发,遇见最多的对象是文字,也就是字符串 String类 字符串是一个特殊对象 字符串一旦初始化就不可以被改变 一.特点 public class Main { public static void main(String[] args) { Demo1(); System.out.println("--------------"); Demo2(); } /*演示字符串的第一种定义方式,并明确字符串常量池的特点*/ p

JAVA学习第二十八课(多线程(七))- 停止线程和多线程面试题

重点掌握 /* * wait 和 sleep 区别? * 1.wait可以指定时间也可以不指定 * sleep必须指定时间 * 2.在同步中,对CPU的执行权和锁的处理不同 * wait释放执行权,释放锁    sleep释放执行权,不释放锁 */ //同步里具备执行资格的线程不止一个,但是能得到锁的只有一个,所以能执行的也只有一个 一.停止线程的方式 不可能让线程一直在运行,所以需要让线程停止 1.定义循环结束标记 一般而言,线程运行代码都是循环的,只要控制了循环就可以结束任务 2.使用int

Django学习笔记第八篇--实战练习四--为你的视图函数自定义装饰器

零.背景: 对于登录后面所有视图函数,都需要验证登录信息,一般而言就是验证cookie里面的一些信息.所以你可以这么写函数: 1 def personinfo(request): 2 if request.COOKIES.get("login_flag") == "1": 3 return HttpResponse("Success!") 4 else: 5 return HttpResponse("Failed!") 这样就

Java Web总结十八文件的上传和下载

一.实现Web开发中的文件上传功能,需完成如下两步操作: 1.在web页面中添加上传输入项. 2.在Servlet中读取上传文件的数据,并保存到本地硬盘中. 二.如何在web页面中添加上传输入项? 1.<input type="file">标签用于在web页面中添加文件上传输入项,设置文件上传输入项时须注意: 1)必须设置input输入项的name属性,否则浏览器将不会发送上传文件的数据. 2)必须把form的enctype属性值设为multipart/form-data.

Python开发【第十八篇】:MySQL(二)

Python开发[第十八篇]:MySQL(二) 视图 视图是一个虚拟表(非真实存在),其本质是[根据SQL语句获取动态的数据集,并为其命名],用户使用时只需使用[名称]即可获取结果集,并可以将其当作表来使用. SELECT * FROM ( SELECT nid, NAME FROM tb1 WHERE nid > 2 ) AS A WHERE A. NAME > 'alex'; 临时表搜索 1.创建视图 --格式:CREATE VIEW 视图名称 AS SQL语句 CREATE VIEW v

201671010140. 2016-2017-2 《Java程序设计》java学习第十六周

java学习第十六周         本周对十三章:"部署java应用程序"进行了课堂学习,在老师思路牵引下,对这一章知识进行学习,对实例程序运行和注释,对比课前对书本上知识的浅显预习,半知半解,课堂学习后,对这部分知识的理解也更加深入,尤其是在JAR文件这部分,感觉掌握的不错,对Java程序为何要打包成JAR文件,如何去做都有了进一步学习,认知,之前并不理解如何使用jar程序制作JAR文件,在课堂上同学的演示下,也理解了这部分知识.在对JAR文件中的包的密封,属性映射等方面的知识掌握

C++语言学习(十八)——异常处理

C++语言学习(十八)--异常处理 一.C语言异常处理 异常是指程序在运行过程中产生可预料的执行分支.如除0操作,数组访问越界.要打开的文件不存在.Bug是指程序中的错误,是不被预期的运行方式.如野指针.堆空间使用结束未释放.C语言中处理异常的方式一般是使用if....else...分支语句. double divide(double a, double b) { const double delta = 0.000000000000001; double ret = 0; if( !((-de

条目二十八《正确理解由reverse_iterator的base()成员函数所产生的iterator的用法》

条目二十八<正确理解由reverse_iterator的base()成员函数所产生的iterator的用法> 迭代器的种类一共有四种,上面已经说过了.这里就不再次写出来. 这一个条目主要是reserce_iterator和iterator的转换.可以使用base()函数来把前者转换为后者. 比如在拥有reserve_iterator,但需要用到插入,删除成员函数,那么这两个是不接受reserve_iterator作为参数的,所以需要转换为iterator再进行下一步的插入和删除元素. 以上代码

Java基础学习笔记十八 异常处理

什么是异常?Java代码在运行时期发生的问题就是异常. 在Java中,把异常信息封装成了一个类.当出现了问题时,就会创建异常类对象并抛出异常相关的信息(如异常出现的位置.原因等). 异常的继承体系 在Java中使用Exception类来描述异常. 查看API中Exception的描述,Exception 类及其子类是 Throwable 的一种形式,它用来表示java程序中可能会产生的异常,并要求对产生的异常进行合理的异常处理. Exception有继承关系,它的父类是Throwable.Thr