mysql函数

MySQL语法拾遗-存储程序

佐手、 提交于 2020-01-29 06:23:36
title: mysql语法拾遗-存储程序 date: 2019-11-11 12:23:49 categories: MySQL MySQL语法相关 tags: MySQL 语法指南 description: MySQL中的存储程序介绍(存储例程,触发器,事件) MySQL中的存储程序 自定义变量与语句结束符 自定义变量 set 使用 set 语句,自定义变量,变量名前要加’@'符号。可以将常量,某一搜索结果值,赋值给变量 -- 将1赋值给变量a set @a = 1 -- 将搜索结果赋值给多个变量 SELECT m1 , n1 FROM t1 LIMIT 1 INTO @a , @b -- 查看变量 select @a 语句结束符 delimiter delimiter 设置语句的语句结束分隔符,默认为’;’ delimiter $ SELECT * FROM t1 LIMIT 1 ; SELECT * FROM t2 LIMIT 1 ; SELECT * FROM t3 LIMIT 1 ; $ 存储函数与存储过程 存储函数 将MySQL语句封装到某一函数中。 创建存储函数 语句形式 : CREATE FUNCTION 函数名 ( ` [ 参数列表 ] ` ) RETURNS 返回值类型 BEGIN 函数体(以 ';' 分隔语句) END e.g. delimiter $

MySQL入门和常用命令行

a 夏天 提交于 2020-01-28 23:55:07
本文创建大致的学习清单,详情的话移到各大学习网站。 图形化工具 Navicat (破解版) SQLyog PhpMyadmin Workbench DBeaver … 连接数据库 mysql -uroot -p 查看数据库 show datebases; ps: 命令行 结尾 ; 不可以少。 创建某一数据库 create database test charset utf8 ; 修改某一数据库 alter database [ 数据库名 ] { character set < 字符集名 > | collate < 校对规则名 > } 删除某一数据库 drop database if exists test ; 外部SQL文件导入 source xxx // 文件位置 使用某一数据库 use test 常见数据类型 在 MySQL 中常见的数据类型如下: 整数类型 包括 TINYINT、SMALLINT、MEDIUMINT、INT、BIGINT,浮点数类型 FLOAT 和 DOUBLE,定点数类型 DECIMAL。 日期/时间类型 包括 YEAR、TIME、DATE、DATETIME 和 TIMESTAMP。 ps: timestamp:1970-2038 year:1901-2155 datetime: 9999 vb 字符串类型 包括 CHAR、VARCHAR、BINARY

java连接MySQL 函数过程的PROCEDURE

落爺英雄遲暮 提交于 2020-01-28 17:16:33
1.0 @Value("${spring.datasource.url:#{null}}") private String url; @Value("${spring.datasource.username:#{null}}") private String username; @Value("${spring.datasource.password:#{null}}") private String password; public String getMayBeLike1(String phone) { String name= ""; try { Connection connection = DriverManager.getConnection(url,username,password); String sql = "{call get_list(?)}"; CallableStatement callableStatement = connection.prepareCall(sql); callableStatement.setString(1,phone); ResultSet resultSet = callableStatement.executeQuery(); while (resultSet.next()){ name= resultSet

MySQL基础篇(2)数据类型

早过忘川 提交于 2020-01-28 06:27:02
  MySQL提供了多种数据类型,主要包括数值型、字符串类型、日期和时间类型。   1.数值类型 整数类型:TINYINT(1字节)、SMALLINT(2字节)、MEDIUMINT(3字节)、INT(INTEGER)(4字节)、BIGINT(8字节) 浮点类型:FLOAT(4字节)、DOUBLE(8字节) 定点数类型:DEC(M,D)(M + 2字节)、DECIMAL(M,D)(M+2字节) 位类型:BIT(M)(1~8字节)   (1)整数类型   MySQL支持在类型名称后面的小括号内指定显示宽度,例如int(5)表示当数值宽度小于5位的时候在数字前面填满宽度,如果指示显示宽度则默认为int(11)。一般配合zerofill使用,zerofill就是用‘0’填充的意思,也就是在数字位数不够的空间用字符‘0’填满。 mysql> create table t1(id1 int, id2 int(5)); Query OK, 0 rows affected (0.01 sec) mysql> desc t1; +-------+---------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+---------+------+-----+-------

Mysql笔记【4】-查询操作

痞子三分冷 提交于 2020-01-27 03:59:25
1、查询所有列数据  select * from 表名  一般情况下,除非使用表中所有字段,最好不要使用通配符 "*",如果不知道所需要的列名,可以使用*查询获取 2、带in关键字的查询  select * from 表名 where 列 in (条件1,条件2) 3、带between and的范围查询  select * from 表明 where 列 between 范围1 and 范围2 4、模糊查询 like   % 匹配任意字符  —匹配任意单个字符 5、查询空值 is null  select * from 表名 where 列 is [not] null 6、and的多条件查询  select * from 表名 where 列1=条件1 and 列2=条件2 7、or的多条件查询  select * from 表名 where 列1=条件1 or 列2=条件2 8、distinct的不重复查询  select distinct 列 from 表名 [where 条件] 9、【单列/多列】排序 order by 列1[列2...] [asc默认升序/desc降序]  在多列进行排序的时候,首先排序第一列,想通了再比较第二列,一次类似 10、分组 group by 【having 条件】  * having是分组之后进行过滤分组的  * where条件是分组之前进行过滤

mysql---自定义函数

天涯浪子 提交于 2020-01-26 14:51:42
自定义函数 除了count()等内置函数外,可以创建一个适合自己需求的函数。 创建函数: delimiter // create function 函数名(参数名 类型) returns 返回值类型 begin 内部实现 end delimiter ; 例子:生成指定长度的内容随机的字符串 第一步:创建函数 delimiter // create function get_rand_str(length_str int) returns varchar(255) begin declare src_str varchar(128) default 'qazxswedcvfrtgbnhyujmkiolpQAZXSWEDCVFRTGBNHYUJMKIOLP'; declare rand_char varchar(1) default ''; declare i int default 0; declare res_str varchar(255) default ''; declare rand_index int default 0; while i < length_str do set rand_index = floor( RAND()*52 + 1); set rand_char = SUBSTR(src_str,rand_index,1); set res_str =

MySQL8.0新特性【转】

China☆狼群 提交于 2020-01-26 11:50:32
Server层,选项持久化 mysql> show variables like '%max_connections%'; +------------------------+-------+ | Variable_name | Value | +------------------------+-------+ | max_connections | 512 | | mysqlx_max_connections | 100 | +------------------------+-------+ 2 rows in set (0.00 sec) mysql> set persist max_connections=8000; Query OK, 0 rows affected (0.00 sec) mysql> show variables like '%max_connections%'; +------------------------+-------+ | Variable_name | Value | +------------------------+-------+ | max_connections | 8000 | | mysqlx_max_connections | 100 | +------------------------+-------+ 2 rows

mysql的基本用法

拟墨画扇 提交于 2020-01-26 11:13:22
#登录数据库 mysql -hlocalhost -uroot -p; #修改密码 mysqladmin -uroot -pold password new; #显示数据库 show databases; #显示数据表 show tables; #选择数据库 use examples; #创建数据库并设置编码utf-8 多语言 create database `examples` default character set utf8 collate utf8_general_ci; #删除数据库 drop database examples; #创建表 create table test( id int (10) unsigned zerofill not null auto_increment, email varchar (40) not null , ip varchar (15) not null , state int (10) not null default '-1' , primary key (id) )engine=InnoDB; #显示表结构 describe #删除表 drop table test; #重命名表 alter table test_old rename test_new; #添加列 alter table test add cn int (4

MySQL数据库学习之实战-个人笔记与总结

送分小仙女□ 提交于 2020-01-25 01:51:39
使用My’SQL数据库中的数据进行减法运算时, 不是不可以,要注意: 比如说我当前两张表是这样的: 一个是theorder用来存放订单,一个是product用来存放产品,想求库存量,需要用product表中的amount减去theorder表中对应产品的被订购的数量总和。 我开始写成了这样: select ( product . amount - select sum ( theorder . amount ) from theorder where productID = 3 ) as inventory where - > product . ID = 3 from product ; 看着蛮正常的,人就是说这语句有毛病: ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'select sum(theorder.amount) from theorder where productID=3) as inventory where ’ at line 1 然后我改,分步写: 反正分开好着整一起就不行了。 后来网上搜了一下

关于MySql函数avg的使用特性-null值不计入统计

笑着哭i 提交于 2020-01-25 01:22:44
1、使用avg函数,不统计为null的值 2、测试过程: drop table if exists tmp_avg_t; create table tmp_avg_t( id bigint unsigned auto_increment comment '', test_code varchar(20) default '' comment '', test_val int(11) comment '', primary key (id) )comment='mysql测试avg函数' ; insert into tmp_avg_t(test_code,test_val) values ('test1',2),('test1',4),('test2',2) ; select * from tmp_avg_t; select test_code,avg(test_val) from tmp_avg_t group by test_code ; -插入null值后查看 insert into tmp_avg_t(test_code,test_val) values ('test1',null) ; select * from tmp_avg_t; select test_code,avg(test_val) from tmp_avg_t group by test_code ;