一、知识回顾:

连接

1、SELECT语句

SELECT * FROM tabA JOIN tabB ON tabA.name = tabB.name;//表示返回都含有的name值对应的字段

2、多表更新

UPDATE tdb_goods INNER JOIN tdb_goods_cates ON goods_cate=cate_name SET goods_cate=cate_id;//将

tdb_goods 表和 tdb_goods_cates 表通过【连接条件】 goods_cate=cate_name 连接,然后【更新值】 goods_cate=cate_id

多表更新之一步到位

1.建表、查询、写入三合一:

CREATE TABLE tdb_goods_brands (

brand_id SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,

brand_name VARCHAR(40) NOT NULL

) SELECT brand_name FROM tdb_goods GROUP BY brand_name;

2.多表更新:

UPDATE tdb_goods AS g INNER JOIN tdb_goods_brands AS b ON g.brand_name = b.brand_name SET g.brand_name = b.brand_id;

3.通过ALTER TABLE语句修改数据表结构

ALTER TABLE tdb_goods

CHANGE goods_cate cate_id SMALLINT UNSIGNED NOT NULL,

CHANGE brand_name brand_id SMALLINT UNSIGNED NOT NULL;

3、多表删除

DELETE t1 FROM tdb_goods AS t1 LEFT JOIN (SELECT goods_id,goods_name FROM tdb_goods GROUP BY

goods_name HAVING count(goods_name) >= 2 ) AS t2 ON t1.goods_name = t2.goods_name WHERE t1.goods_id > t2.goods_id;

二、字符函数

字符函数

1.CONCAT() ,字符连接

SELECT CONCAT('a','-','b'); 结果为:a-b

2.CONCAT_WS(), 使用指定的分隔符进行字符连接

SELECT CONCAT_WS('|','A','B','C'); 结果为: A|B|C

3.FORMAT() 数字格式化

SELECT FORMAT(12560.7,2); 结果:12,560.70

SELECT FORMAT(12560.78,1); 结果:12,560.8

4.LOWER() 转换成小写字母

5.UPPER() 转换成大写字母

6.LEFT() 获取左侧字符

SELECT LEFT('mysql',2); 结果:my

7.RIGHT() 获取右侧字符

8.LTRIM() 删除前导空格(=LEFT TRIM())

9.RTRIM() 删除后续空格

10.TRIM()删除前后两边的空格,还可以删除指定的前导和后续的字符,不能删除中间的字符

SELECT TRIM(LEADING'?','??MYSQL????'); 结果:MYSQL????

SELECT TRIM(TRAILING'?','??MYSQL????'); 结果:??MYSQL

SELECT TRIM(BOTH'?','??MYSQL???'); 结果:MYSQL

11.REPLACE() 替换字符

SELECT REPLACE('??MYSQL???','?','-'); 结果:--MYSQL---

12. SUBSTRING(string,offset,length) 截取字符串

SELECT SUBSTRING('MYSQL',2,3); 结果:SQL

13.[NOT]LIKE 模糊匹配

(%):代表任意个字符,0个或多个

(_):代表任意一个字符,只有一个

SELECT name FROM test WHERE name LIKE'%O%'; 结果:输入name 中带‘O’的name

SELECT name FROM test WHERE name LIKE'%1%%' ESCAPE'1'; 找到中间带% 的匹配name

三、数值运算符和函数

SELECT CEIL(3.01) ==>4 /*有n.xx 都是n+1 进一取整 向上取整

SELECT FLOOR(3.99) ==>3 /*取n.xx 都是n 舍一取整 向下取整

SELECT 3 DIV 4 ==> 0 /*整数除法

SELECT 3/4 ==>0.75 /*除法

SELECT 21 MOD 2 ==>1 /*取余数(取模)整数,小数都可以

SELECT 21 % 2 ==>1 /*取余数(取模)整数,小数都可以

SELECT POWER(3,4) ==>81 /*3的4次方 幂运算

SELECT ROUND(3.1415926,4) ==>3.142 /*四舍五入

SELECT TRUNCATE(123.89,1) ==>123.8 /*截取小数点后的位置

SELECT TRUNCATE(123.89,0) ==>123 /*截取小数点后的位置,0位为整数部分

SELECT TRUNCATE(123.89,-1) ==>120 /*截取-1,从个位起去掉后面的数值替换为0

四、比较运算符和函数:

比较运算符和函数:(给出的都是闭合的区间)

(1)想在first_name这个字段中查找哪个字段值为NULL,可以用IS [NOT] NULL,这比较运算符,

如:SELECT * FROM test WHERE first_name IS NULL;

(2)[NOT] IN 的具体用法,SELECT 16 IN(1,2,16,68),返回的是true就是1.

(3)[NOT] BETWEEN....AND....具体用法:SELECT 6 BETWEEN 0 AND 29,返回的是true也就是1。也可以是字符串。

五、日期时间函数:

NOW():显示当前日期和时间:

SELECT NOW();

CURDATE():显示当前日期:

SELECT CURDATE();

CURTIME():显示当前时间:

SELECT CURTIME();

DATE_ADD():指定日期加上一段日期:

SELECT DATE_ADD('2016-6-6',INTERVAL 1 YEAR);//后面的单位可以是week,year,month等

DATEDIFF():计算两个日期相差的时间:

SELECT DATEDIFF('2016-6-6','2015-6-6');

DATE_FORMAT():将日期以指定格式显示:

SELECT DATE_FORMAT('2016-6-6','%m/%d/%Y');

六、信息函数:

(1)CONNECTION_ID(); // 连接ID

mysql> SELECT CONNECTION_ID();

(2)SELECT DATABASE(); // 当前数据库

(3)LAST_INSERT_ID(); // 最后句插入记录的 ID 号,如果是一次insert中插入的是多条记录,得到的是多条中的第一条(而不是最后一条!)

(4)VERSION(); // 版本的信息

(5)USER(); // 当前用户

SELECT USER();

七、聚合函数:只有一个返回值

AVG() - 平均值

SELECT ROUND(AVG(goods_price),2) AS avg_price FROM tdb_goods;

COUNT() - 计数

SELECT COUNT(goods_id) as counts FROM tdb_goods;

MAX() - 最大值

SELECT MAX(goods_price) as counts FROM tdb_goods;

MIN() - 最小值

SELECT MIN(goods_price) as counts FROM tdb_goods;

SUM() - 求和

SELECT SUM(goods_price) as counts FROM tdb_goods;

八、加密函数:

MD5():生成信息摘要:

SELECT MD5('213');

PASSWORD():修改mysql密码:

SET PASSWORD=PASSWORD('1234');

九、自定义函数:

自定义函数:UDF是对MySQL扩展的途径,其用法与内置函数相同。

必要条件:返回值(必须),参数(非必须) 函数可以返回任意类型的值,同样可以接收这些类型的参数,参数与返回值没有必然的内在联系

MySQL中参数的数量不能超过1024个

创建自定义函数:

CREATE FUNCTION function_name(参数) RETURNS 返回值类型

{STRING|INTEGER|REAL|DECIMAL}

routine_body

RETURN 返回值

routine_body 函数体

1、函数体由合法的SQL语句构成;

2、函数体可以是简单的SELECT或INSERT语句;

3、函数体如果为复合结构则使用BEGIN...END语句;

4、复合结构可以包含声明,循环,控制结构;

删除函数:

DROP FUNCTION [IF EXISTS] function_name;

创建日期时间自定义函数:

CREATE FUNCTION f1() RETURNS VARCHAR(30)

RETURN DATE_FORMAT(NOW(),'%Y年%m月%d日 %H点:%i分:%s秒');

SELECT f1();

【创建函数之前要写 set names utf8mb4; 否则调用时会出错】

DATE_FORMAT()函数在格式化日期格式时,应该是百分号在代表年、月、日的字母前面,字母的大小写不同,所表示格式也有所区别:

SELECT DATE_FORMAT(NOW(),'%Y-%m-%d'),其结果是:

2015-07-04

因此,各字母所表示的含义为:

Y:2015

y:15

M:july

m:07

D:4th

d:04

创建带参数的自定义函数:

CREATE FUNCTION f2(num1 SMALLINT UNSIGNED,num2 SMALLINT UNSIGNED)

RETURNS FLOAT(10,2) UNSIGNED

RETURN(num1+num2)

删除函数:

DROP FUNCTION fun_name;

//创建具有复合结构函数体的自定义函数

修改分隔符:DELEMITER 分隔符

Eg:DELIMITER // /* 将分隔符修改为 '//' */

当函数体内需要执行的是多条语句时,要使用BEGIN...END语句

且当编写函数体内容的时候,需要使用 DELIMITER 关键字将分隔符先修改为别的,否则编写语句的时候写到 ';' 的时候会直接执行,导致函数编写失败

删除函数:DROP FUNCTION [IF EXISTS] function_name

*/

Eg:

DELIMITER //定义分隔符

CREATE FUNCTION ADD_USER(p_id SMALLINT,username VARCHAR(20))

RETURNS INT UNSIGNED

BEGIN

INSERT user(p_id,username) VALUES(p_id,username);

RETURN LAST_INSERT_ID();

END

十、自定义函数回顾

【自定义函数】简称UDF;是对MySQL扩展的一种途径

语法: CREATE FUNCTION ....

------------------------------------------

| test | CREATE TABLE `test` (

`id` int(11) NOT NULL AUTO_INCREMENT,

`test` varchar(20) NOT NULL,

PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8

创建一个函数:

没有参数的函数:

CREATE FUNCTION f1()

RETURNS VARCHAR(30)

RETURN DATE_FORMAT(NOW(),'%Y年%m月%d日 %H点%i分%s秒');

带参数的函数:

CREATE FUNCTION f2(num1 SMALLINT UNSIGNED,num2 SMALLINT UNSIGNED)

RETURNS FLOAT(10,2) UNSIGNED

RETURN (num1+num2)/2;

说明 f1、f2是函数名 num1、num2是形参

RETURNS (returns) 后面跟的是返回值的数据类型

RETURN 后面跟的是函数体

创建一个执行多条sql语句的函数 f3(),并放回主键

如果有多条sql语句,必须放在 BEGIN 与END 之间

修改 结束符号成 ## 原本是; 当然你也可以改回来

1、DELIMITER ##

创建一个函数(功能是传递一个参数,参数是表 test 的test字段值,返回插入数据的主键)

2、CREATE FUNCTION f3(test varchar(20))

RETURNS INT UNSIGNED

BEGIN

INSERT `test`(`test`)values(test);

RETURN LAST_INSERT_ID();

END

##

修改结束符变回 ; (delimiter)

3、DELIMITER ;

删除一个函数:

DROP FUNCTION IF EXISTS `f1`;

调用一个函数:

SELECT f1();

SELECT f2(23,2);

mysql select自定义连接符_MySQL学习笔记(四)运算符和函数相关推荐

  1. mysql select语句详解_mysql学习笔记之完整的select语句用法实例详解

    本文实例讲述了mysql学习笔记之完整的select语句用法.分享给大家供大家参考,具体如下: 本文内容: 完整语法 去重选项 字段别名 数据源 where group by having order ...

  2. mysql 存储引擎的选择_MySQL学习笔记(四):存储引擎的选择

    一:几种常用存储引擎汇总表 二:如何选择 一句话:除非需要InnoDB 不具备的特性,并且没有其他办法替代,否则都应该优先考虑InnoDB:或者,不需要InnoDB的特性,并且其他的引擎更加合适当前情 ...

  3. mysql新增表字段回滚_MySql学习笔记四

    MySql学习笔记四 5.3.数据类型 数值型 整型 小数 定点数 浮点数 字符型 较短的文本:char, varchar 较长的文本:text, blob(较长的二进制数据) 日期型 原则:所选择类 ...

  4. mysql 拼接sql批量执行_Mysql 学习笔记之 SQL 执行过程

    写在开始 本系列源自极客时间 MySQL 专栏,整理而成 在执行下面这个查询语句时的执行的流程是怎么样的? mysql 看过相关资料的同学都可能知道执行流程大概是这样的: 其执行过程为:连接.查询缓存 ...

  5. mysql iif函数_MySQL学习笔记七:常用函数

    一.字符串函数 1.1.CONCAT(str1,str2,...) 作用:将传入的字符连接成一个字符串,任何字符与null进行连接结果都是null. SELECT CONCAT(`name`,'-', ...

  6. MySQL 行之间连接符_MySQL行转列 列转行 连接字符串 潍鲸 潍鲸科技

    创建MySQL数据库表结构 DROP TABLE IF EXISTS `weijing`; CREATE TABLE `weijing` ( `Id` int(11) NOT NULL AUTO_IN ...

  7. mysql添加字符串日期时间_mysql学习笔记--- 字符串函数、日期时间函数

    一.常见字符串函数:1.CHAR_LENGTH  获取长度(字符为单位) 2.FORMAT  格式化 3.INSERT  替换的方式插入 4.INSTR  获取位置 5.LEFT/RIGHT  取左. ...

  8. MySQL按字符串hash分区_MySQL学习笔记(14):分区

    本文更新于2019-06-30,使用MySQL 5.7,操作系统为Deepin 15.4. 分区类型 可以使用SHOW PLUGINS查看是否安装了分区插件. MySQL创建分区表支持使用大部分存储引 ...

  9. mysql对所有id求积_MySQL学习笔记(二)—查询

    一.多表连接查询 新建两张表t_user.t_order.       1.内连接 返回满足条件的所有记录. (1)显式内连接 使用inner join关键字,在on子句中设定连接条件. SELECT ...

  10. mysql模糊查询索引失效_MySql学习笔记(九):索引失效

    数据准备:CREATE TABLE `t_blog` ( `id` int(11) NOT NULL auto_increment, `title` varchar(50) default NULL, ...

最新文章

  1. python入门视频教程推荐-Python入门视频看哪个好?适合初学者的教学视频推荐
  2. http请求过程 Android,android HTTP网络请求回顾
  3. livecharts中仪表盘_LiveCharts文档-3开始-4可用的图表
  4. 农村义务教育经费保障机制改革校长应知应会卡
  5. rvm的安装, 使用rvm, 安装ruby, 以及gem的使用 (转)
  6. 7-100 倒数第N个字符串 (15 分)
  7. ubuntu 16.04 R 安装,卸载以及Rsudio
  8. GDAL中的SURF算法
  9. ubuntu修改文件权限
  10. 微信公众号支付开发全过程
  11. Word文档中统一字符串八大妙法(转)
  12. Echart甘特图实现效果 + 配带抽成方法 + 源码
  13. C/C++外部链接、内部链接
  14. Python实操:正态分布检验
  15. SpringBoot application.properties读取属性配置文件中文显示为乱码问题的解决
  16. 大类资产配置(二)风险预算及风险平价模型
  17. js根据经纬度计算多边形面积
  18. 131-从键盘输入一个字符串,将其中的小写字母全部换成大写字母,然后输出到一个磁盘文件
  19. 卡苹果6plus在线_坐公交“神器”来了!在线充值、在线年检、信息查询...太方便了!...
  20. 微信小程序-实现分享(带参数)

热门文章

  1. 在anaconda下安装OpenCV-Python的最简单方法
  2. yolov5--detect.py --v5.0版本-最新代码详细解释-2021-6-29号更新
  3. 独立站平台选哪个好呢?
  4. 如果程序员是非正常生物,在座的各位,你们还有机会吗?
  5. python生成图文并茂的pdf--财务报表(三)--页眉页脚
  6. 正则表达式获取两个标识中间的内容
  7. mysql语法元素_MySQL语法语句大全
  8. 人物行走在柏林噪声地图
  9. Leetcode之827:最大人工岛
  10. SQL Server按5分钟分组统计数据