MySQL_数据类型及函数

本文详细介绍了MySQL中的数据类型,包括整数、浮点数、定点数、文本字符串、二进制字符串以及日期时间类型。同时,还讨论了各种运算操作如算术、比较、逻辑和位运算,并提到了常用的数学、字符串、日期时间、加密解密和其他函数。对于数据库设计和开发人员来说,这些基础知识至关重要。
摘要由CSDN通过智能技术生成

数据类型

整数类型

在这里插入图片描述

  • TINYINT相当于java数据类型中的byte,SMALLINT相当于short,BIGINT相当于long
  • 整数类型可以设置 自增约束条件 auto_increment
  • 创建字段定义整数类型时 int(m),m仅限制显示长度,并不能限制其本身的存储大小

浮点数类型和定点数类型

在这里插入图片描述

  • 浮点数和定点数定义方式都可以用(m,n),m表示总位数,n表示小数位数
  • DECIMAL是以字符串形式存储的,精确度要求高时推荐使用

文本字符串类型

在这里插入图片描述

  • CHAR(M)定义时指定长度,当保存数据时,右侧填充空格补足长度,但插入数据中尾部的空格会自动删除
  • VARCHAR实际占用空间为实际长度+1,不会删除插入数据尾部的空格
  • CHAR浪费存储空间,但处理速度快
  • MyISAM引擎推荐使用CHAR,InnoDB推荐使用VARCHAR

在检索效率上来讲,char > varchar,因此在使用中,如果确定某个字段的值的长度,可以使用char,否则应该尽量使用varchar.例如存储用户MD5加密后的密码,则应该使用char.

二进制字符串类型

在这里插入图片描述

  • BLOB存储的二进制字符串,没有字符集,排序和比较基于列值字节的数值
  • TEXT存储的非二进制字符串,有字符集,排序和比较基于字符集

日期、时间类型

在这里插入图片描述

  • DATETIME存储的是输入的时间
  • TIMESTAMP存储的是时间戳,可以理解为最后一次修改时间

常见运算

算术运算

select 2+3 from dual;	-- +-*/%同理

比较运算

在这里插入图片描述

select null=null,null<=>null from dual;
  • 结果是null和1,null参与算术运算结果为null,如果用安全的等于<=>可以比较null

逻辑运算

  • 逻辑运算的结果为1或0
  • 包括and,or,not,xor,&&,||,!

位运算

在这里插入图片描述

数学函数

-- 绝对值
select abs(-4);
-- 圆周率
select pi();
-- 非负数的二次平方根
select sqrt(4);
-- 取余
select mod(5,3);
-- 向上取整
select ceil(3.2);
select ceiling(3.2);
-- 向下取整
select floor(3.6);
-- 随机数0-1
select rand();
-- 若干个相同的随机数
select rand(1),rand(1),rand(1);
-- 四舍五入
select round(-10.5);	-- -10 和java的机制不同,日常数学机制
-- 保留两位小数四舍五入
select round(10.95353,2);
-- 截取保留两位小数,不四舍五入
select truncate(10.5353,2);	-- 10.53
-- 符号
select sign(-2);	-- -1
select sign(0);	-- 0
select sign(3);	-- 1
-- 幂运算
select pow(2,3);
select power(2,3);
select exp(2);

字符串函数

-- 字符串长度
select char_length("i love you");
-- 连接字符串
select concat("hello","you");
-- 指定分隔符连接字符串
select concat_ws("-","hello","u");
-- 替换子串
select insert("hello",1,2,"hhhh");	-- 索引从1开始,将he替换为hhhh
-- 大小写转换
select lower("LOVE"),lcase("LOVE"),upper("lova"),ucase("lova");
-- 获取左右两端的子串
select left("love",2),right("love",2);
-- 删除左右两边的空格或者子串
select ltrim(" love"),rtrim("love "),trim(" love "),trim("l" from "love");
-- 子串替换子串
select replace("love","ov","ik");
-- 字符串比较
select strcmp("apple","Apple"),strcmp("apple","ball");	-- 不区分大小写
-- 返回子串
select substring("loce",1,2),mid("love",1,2);	-- 索引从1开始
-- 反转
select reverse("love");
-- 返回字符串列表中指定位置字符串
select elt(1,"i","love","u");
-- 返回字符串在字符串列表中第一次出现的位置
select field("hhh","hhh","hhhh","hhh");
-- 返回字符串在字符串列表出现的位置
select find_in_set("hhh",set);

日期和时间函数

-- 当前日期
select curdate(),current_date();
-- 无分隔符的当前日期
select curdate()+0,current_date()+0;
-- 当前时间
select curtime(),current_time();
-- 无分隔符的当前时间
select curtime()+0,current_time()+0;
-- 当前日期和时间
select current_timestamp(),localtime(),now(),sysdate();
-- 时间戳,1970-1-1 0:0:0 GMT之后的秒数
select unix_timestamp(now());
-- 将时间戳转换为普通格式的时间
select from_unixtime(unix_timestamp(now()));
-- UTC世界标准时间的日期值和时间值
select utc_date(),utc_time();
-- 月份
select month(now());
-- 月份名称
select monthname(now());
-- 工作日双休日名称
select dayname(curdate());
-- 周内索引
select dayofweek(now());	-- 周日=1
-- 工作日索引
select weekday("2019-11-29");	-- 周一=0
-- 年中第几周
select week(now()), weekofyear(now());
-- 年中第几天
select dayofyear(now());
-- 月中第几天
select dayofmonth(now());
-- 年份
select year(now());
-- 季度
select quarter(now());
-- 分钟数
select minute(now());
-- 秒数
select second(now());
-- 时间转化为秒
select time_to_sec(now());

加密和解密函数

-- 不可逆加密,用于服务器鉴定系统,不用于应用程序
select password(123);	--  *23AE809DDACAF96AF0FD78ED04B6A265E05AA257
-- MD5加密
select md5(123);	-- 202cb962ac59075b964b07152d234b70
-- 加密函数
select encode(123,123);	-- ,�
-- 解密函数
select decode(encode(123,123),123);	-- 123

其他函数

-- 条件判断函数
select if(1>0,1,0);
-- null判断函数
select ifnull(null,0);
-- case
select case 2+3 
when 5 then "hhh"
when 2 then "aaa"
end;
-- 版本
select version();
-- 连接次数
select connection_id();
-- 用户名,主机名
select user(),current_user(),system_user(),session_user();
-- 数字格式化 四舍五入保留2位小数
select format(3.123442,2);
-- 数字转型
-- 可转换:binary,char,date,time,datetime,decimal,signed,unsigned
-- cast(x as type)
-- convert(x,type);

-- 进制转换
select conv(173,10,2);	-- 将173从10进制转到2进制
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值