一、MySQL函数

  同样的,完整的函数可以参照开源中国的手册:http://tool.oschina.net/apidocs/apidoc?api=mysql-5.1-zh

  

  1.字符函数

  

    CONCAT

    实例:

  

  //这里别名和关键字冲突了,实际中也要注意这个问题

\  

    CONCAT_WS

  它至少接收三个参数,第一个是分隔符,后面是要分隔的字符:

    实例:

  

    FROMAT

  用于格式化数字,例如保留几位小数(四舍五入)

    实例:

  

    LOWER  UPPER 

  大小写转换函数

    实例:

  

    LEFT  RIGHT

  获取左右侧字符,需要传入要转换的字符串和获取的位数

    实例:可以函数嵌套

  

    

    LENGTH

    实例:空格不能忽略

  

    LTRIM  RTRIM

  删除前后导空格,分别表示第一个字符之前的空格和最后一个字符的空格

    实例:

  

    TRIM

  删除空格或指定字符,完整方式:TRIM([{BOTH | LEADING | TRAILING} [remstr] FROM] str)

    实例:看实例即可一目了然:

  

    REPLACE

  字符替换,类似Java的字符替换,传入需要处理的字符串,要替换的旧字符(或字符串)和新字符

    实例:

  

    SUBSTRING

  字符串截取,和Java基本类似,不过下标是从开始!传入需要处理的字符串,从第几位开始(1是首位),要截几位

    实例:

  

    LIKE

  模式匹配,和SQL的模糊查询有相似之处

    实例:

  

    但是如果%是记录中存在的字符,和通配符%是有混淆的

    比如查找名字中含有 % 的,就会存在问题(%%%是无法精确匹配的),我们可以使用转义字符,MySQL中:

    ESCAPE 就是自定义转义字符(这里就告诉MySQL,1是转义字符,后面的%当做普通字符处理,与\类似)

   

  2.数值运算符和函数

   

    + - * / 不再赘述

    

    CEIL  FLOOR

  向上取整与向下取整,传入要处理的数值即可

    实例:

  

    DIV

  整数相除

    实例:

  

    MOD

  取模运算,整数或者小数均可以

    实例:

  

    POWER

  幂运算,传入底数和指数

    实例:

  

    ROUND

  四舍五入函数,传入需要操作的数和保留的位数

    实例:

  

    TRUNCATE

  数字截断函数,不进行四四舍五入,强行截断,传入要操作的数和要截断到小数点后几位

    实例:

  

  3.比较运算符和函数

  

    BETWEEN...AND

  是一个闭区间,和前面一样,返回1表示真,0表示假

    实例:(NOT相似)

  

    IN

  是否在给定的集合内

    实例:

  

    IS NULL

  是否为空或非空

  

  4.日期时间函数

  

    NOW

  打印当前日期时间

    实例:

  

    CURDATE  CURTIME

  当前日期与当前时间

    实例:

  

    DATE_ADD

  日期的变更函数,不仅仅是增加,变更的时间参数被INTERVAL格式激活后便可以使用各种单位,传入需要变更的日期和变更的时间长度

    实例:

  

    DATEDIFF

  日期差值计算函数,传入两个要计算差值的日期即可。

    实例:

  

    DATE_FORMAT

  日期格式转换函数,详细的参数介绍可参见开源中国MySQL文档

  

  5.信息函数

  

    CONNECTION_ID

  得到连接的ID,也就是线程的ID

    实例:

  

    DATABASE

  得到当前打开的数据库

    实例:

  

    LAST_INSERT_ID

  返回最后一次插入记录的主键(只有自增主键时生效),插入多条情况时等更多信息可以参见:http://blog.csdn.net/slvher/article/details/42298355

    实例:

  

    USER  VERSION

  当前用户和数据库版本信息

    实例:

  

  6.聚合函数

    SQL2标准规定聚合函数将会忽略NULL值

      如果字段中所有数据都为NULL,那么COUNT()返回0,其他返回NULL

     当然,聚合函数也支持统计的去重操作:

  1. COUNTDISTINCT id

    当然,这里指出COUNT(字段)是统计字段的非NULL记录数,而COUNT(*)只是简单的统计记录数

    AVG

  

    COUNT

  

    //有点尴尬,前面少写了一个 g 一直将错就错错到现在

    MAX  MIN  SUM

  

  7.加密函数

  

  MD5

  返回加密后的MD5字符串

  

 二、自定义函数(UDF)

  1.简介

  

  

  1. 创建自定义函数: 注意,函数必须有返回值,如果要无返回值的,应该创建‘存储过程’(函数返回值只能有一个,存储过程可以没有或多个(通过select),而且存储过程可以通过out为变量赋值,而函数不行)
  2. 函数的参数最好和表的字段名字不一样,如果相同的话,在使用时,应该用表名.字段名进行区分
  3. CREATE FUNCTION 函数名(参数名1 类型1,参数名2 类型2,....)
  4. [DEFINER = {user|CURRENT_USER}]//定义时的用户,若是不写就默认为当前用户   
       2.语法
      

  注意事项:

  

  3.创建无参函数

  1.    以改造NOW()函数为实例:(返回值可以是任意MySQL支持的数据类型)
      

    换成非中文是正常的:(待解决 FIXME)

  

  4.创建有参函数

  1.  

  5.创建复合结构函数

  以用户表为例:

  

  需求是创建一个函数,完成插入记录,并返回id值,按照之前的写法:

  

  发现是报错的,因为MySQL认为分号 ; 是分隔符,此时命令结束,根本没有SMALLINT

  这个时候我们使用 DELIMITER 重新定义分隔符,这样,语句结束就变为 // 结束语句了

  需要使用Delimiter 修改MySQL的结束符,使用Begin....End将复杂函数括起来,相当于程序中的大括号{},有返回值的话,使用Return返回

  

    函数定义:

  

  后面记得把DELIMITER改回来

  

  6.删除函数

  

  更多详细的函数介绍(循环流程控制等),请参见:http://www.cnblogs.com/caoruiy/p/4485273.html

三、视图

  视图是查询结果形成的虚拟表(派生表)

  示例:

  1. # 在CREATE VIEW后指定别名
  2. CREATE VIEW REP_INFO(name,num) AS
  3. SELECT rep_name,COUNT(*) FROM rep

  可更新视图的SQL标准:

  

  定义与介绍参见:http://www.cnblogs.com/zzwlovegfj/archive/2012/06/23/2559596.html

  视图基本操作请参见:http://www.cnblogs.com/4php/p/4108157.html

   两个实例参见:http://www.cnblogs.com/chenpi/p/5133648.html#_label0

MySQL入门第三天(上)——函数与视图的更多相关文章

  1. MySQL入门第三天(下)——存储过程与存储引擎

    一.存储过程 1.简介 原始的SQL执行的流程: 通过存储过程,便可以简化以上流程,那么存储过程是什么,如何进行性能提高呢? 是什么? 存储过程是可编程的函数,在数据库中创建并保存,可以由SQL语句和 ...

  2. jQuery入门第三

    jQuery入门第三 1.HTML 2.CSS 衣服 3.javascript 可以动的人 4.DOM 编程 对html文档的节点操作 5.jQuery 对 javascript的封装 简练的语法 复 ...

  3. JavaMail入门第三篇 发送邮件

    JavaMail API中定义了一个java.mail.Transport类,它专门用于执行邮件发送任务,这个类的实例对象封装了某种邮件发送协议的底层实施细节,应用程序调用这个类中的方法就可以把Mes ...

  4. Oracle入门第三天(上)——多表查询与分组函数

    一.多表查询 所有的连接分析,参考之前随笔:http://www.cnblogs.com/jiangbei/p/7420136.html 1.笛卡尔积 select last_name, depart ...

  5. Flask入门第三天

    一.数据库操作 1,orm orm(object-Relation Mapping),对象-关系映射,主要实现模型对象到关系数据库数据的映射. 优点: - 只需要面向对象编程, 不需要面向数据库编写代 ...

  6. java入门第三步之数据库连接

    数据库连接可以说是学习web最基础的部分,也是非常重要的一部分,今天我们就来介绍下数据库的连接为下面学习真正的web打下基础 java中连接数据库一般有两种方式: 1.ODBC——Open Datab ...

  7. java入门第三步之数据库连接【转】

    数据库连接可以说是学习web最基础的部分,也是非常重要的一部分,今天我们就来介绍下数据库的连接为下面学习真正的web打下基础 java中连接数据库一般有两种方式: 1.ODBC——Open Datab ...

  8. Android JNI入门第三篇——jni头文件分析

    一. 首先写了java文件: public class HeaderFile { private native void  doVoid(); native int doShort(); native ...

  9. CTF---Web入门第三题 这个看起来有点简单!

    这个看起来有点简单!分值:10 来源: 西普学院 难度:易 参与人数:10515人 Get Flag:3441人 答题人数:4232人 解题通过率:81% 很明显.过年过节不送礼,送礼就送这个 格式: ...

随机推荐

  1. Windows 10 X64 ISO 专业版&家庭版下载与永久激活

    好久没有更新博客,算算时间,已经有4年了,好吧,今天突发奇想,想把今天安装Windows 10的过程给记录下来. 2015年的时候,微软就发布了Windows 10,当时正版的Win7.Win8都可以 ...

  2. 解决Unity3D操作界面字体模糊的问题

    新装的电脑安装了UNITY后,操作界面的字体异常模糊,搜了半天看看有没有换字体的功能,也没找到 后来快放弃的时候,偶然看到这篇文章http://eyehere.net/2014/unity3d-int ...

  3. [EffectiveC++]item33:避免遮掩继承而来的名称。

    先看看: ZT C++ 重载.覆盖和隐藏的区别 http://www.cnblogs.com/jeanschen/p/3405987.html 隐藏是指派生类的函数屏蔽了与其同名的基类函数,规则如下: ...

  4. create-react-app部署到GitHub Pages时报错:Failed to get remote。origin.url

    最近使用create-react-app脚手架开发了一个私人博客:点击跳转,在部署到GitHub Pages的时候报了一个错误,具体如下: 在create-react-app的GitHub库的issu ...

  5. 使用redux开发的简单步骤

    一.安装redux包 npm install redux --save 二.根据APP数据结构或者后台请求的数据结构拟定state的大致结构. 可以把state写成一个对象字面量,放在reducer文 ...

  6. commons dbcp.jar有什么用

    主流数据库连接池之一(DBCP.c3p0.proxool),单独使用DBCP需要使用commons-dbpc.jar.commons-collections.jar.commons-pool.jar三 ...

  7. bzoj2336 [HNOI2011]任务调度

    Description 正解:搜索+随机化. 先写个搜索,枚举所有没有要求的任务属于哪一种任务,然后再用爬山来更新最优解. 具体来说就是先把所有先做任务$A$的按照$a$时间从大到小排序,先做任务$B ...

  8. 【转】python通过文件头判断文件类型

    刚刚看到一个好玩的程序,拉过来.原文地址:https://www.ttlsa.com/python/determine-file-type-by-the-file-header/ 侵权删. ===== ...

  9. 阿里巴巴连接池Druid简单使用

    Druid参考:https://github.com/alibaba/druid 偶尔的机会解释Druid连接池,后起之秀,但是评价不错,另外由于是阿里淘宝使用过的所以还是蛮看好的. Druid集连接 ...

  10. 模式:模版、样式;属于分类、识别的范围;分类、归类的标准-How are patterns obtained?

    模式及套路 模式:模版.样式:属于分类.识别的范围. How are patterns obtained? Through : re-use, classification and finally a ...