SQL中的参数类型深度解析

 更新时间:2025年10月20日 15:59:00   作者:啊吧怪不啊吧  
本文给大家介绍SQL中的参数类型深度解析,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧

1. bit

bit [(M)] : 位字段类型。 M 表示每个值的位数,范围从 1 64 。如果 M 被忽略,默认为 1
如果我们有这样的值,只存放 0 1 ,这时可以定义 bit(1) 。这样可以节省空间。
mysql> create table tt4 ( id int, a bit(8));
 Query OK, 0 rows affected (0.01 sec)

同时它是按照ASCII码对应的值显示。 比如下面这张图里面,65是A所对应的ASCII。

2. float(小数类型)

float [(m, d)] [ unsigned ] : m 指定显示长度, d 指定小数位数,占用空间 4 个字节

这个m的意思是小数点前面的位数加上小数点后面的个数要等于这个m,同时如果用户输入的数大于这个m的话,它会先按照四舍五入的方式尝试进化化简,如果化简结果符合这个m的话那它就显示OK,不然的话就插入失败。

我们先设置一个总长度为4,小数点后面有2位的salary。

create table tt6(id int, salary float(4,2));

在下面这张图里面-99.991,最后的一个1被四舍五入掉了。如果我们把这个1换成5,那么这边就会插入失败。

3.decimal(小数类型)

decimal(m, d) [unsigned] : 定点数m指定长度,d表示小数点的位数

这个看起来和上面那个float一样,区别在于这个decimal的精度更高。

float表示的精度大约是7位。

decimal整数最大位数m65。支持小数最大位数d30。如果d被省略,默认为0.如果m被省略, 默认是10

我们看下面的代码和结果,在高精度的情况下,decimal可以保持更高的精度。

mysql> create table tt8 ( id int, salary float(10,8), salary2 decimal(10,8));

4. char(字符串类型)

char (L): 固定长度字符串, L 是可以存储的长度,单位为字符,最大长度值可以为 255

这个没什么好说的,就是普通的char类型,在这边写出来是为了和下面的varchar来进行对比

5.varchar(字符串类型)

varchar (L): 可变长度字符串, L 表示字符长度,最大长度 65535 个字节
我们来看下面的这张图,varchar里面的L是6 ,表示这里可以存放6个字符。但是如果我们只填入5个字符的话,那它就只显示5个字符。
但是如果我们填入超过6个字符的话,那就会报错。
所以我们可以发现,这个varchar有点像那个vector,只不过这个“vetcor”的上限被L给锁定了。

那么我们在一些情况下该如何进行选择呢?

  1. 如果数据确定长度都一样,就使用定长(char),比如:身份证,手机号,md5
  2. 如果数据长度有变化,就使用变长(varchar), 比如:名字,地址,但是你要保证最长的能存的进去。
  3. 定长的磁盘空间比较浪费,但是效率高。
  4. 变长的磁盘空间比较节省,但是效率低。
  5. 定长的意义是,直接开辟好对应的空间
  6. 变长的意义是,在不超过自定义范围的情况下,用多少,开辟多少。

6.日期和时间类型

常用的日期有如下三个:

date :日期 'yyyy-mm-dd' ,占用三字节。

datetime 时间日期格式 'yyyy-mm-dd HH:ii:ss' 表示范围从 1000 9999 ,占用八字节。

timestamp :时间戳,从1970年开始的 yyyy-mm-dd HH:ii:ss 格式和 datetime 完全一致,占用

四字节。

我们来看下面这张图片,其中date类型的t1就是显示年月日,datetime类型的t2就是显示年月日加上时分秒,而timestam类型的t3不用我们自己设置,它会自动给自己加上执行这条指令时的时间。

同时如果我们更新了其中的一条数据,那么timestamp 也会自动更新时间。

7.enum和set

enum :枚举, 单选 类型;
enum(' 选项 1',' 选项 2',' 选项 3',...);
set :集合, 多选 类型;
set(' 选项值 1',' 选项值 2',' 选项值 3', ...);
他们的区别就是enum是单选,而set是多选。

我们看下面这张图片,其中set类型的hobby我们插入了两个值,而enum我们只可以插入一个。

我们看下面这张图,如果我们要查找hobby=B的,那么1和2就不会被选出来,因为这条查找是只有B的。

如果我们要查找出所有含有B的,那么我们应该用find_ in_ set函数。

通过这个函数我们就可以查找出所有含有B的。

到此这篇关于SQL之参数类型讲解的文章就介绍到这了,更多相关sql参数类型内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 数据库 MySQL中文乱码解决办法总结

    数据库 MySQL中文乱码解决办法总结

    这篇文章主要介绍了数据库 MySQL中文乱码解决办法总结的相关资料,数据库保存中文字符,所以经常遇到数据库乱码情况,这里提供了几种方法,需要的朋友可以参考下
    2017-03-03
  • SQL Server误设置max server memory的处理方法

    SQL Server误设置max server memory的处理方法

    这篇文章主要给大家介绍了关于SQL Server误设置max server memory的处理方法,文中通过示例代码介绍的非常详细,对大家学习或者使用SQL Server具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧下
    2019-12-12
  • 获取SQL Server表字段的各种属性实例代码

    获取SQL Server表字段的各种属性实例代码

    下面的语句将实现获取SQL Server表字段的各种属性,感兴趣的朋友可以参考下哈,希望对你有所帮助
    2013-05-05
  • SQL中varchar和nvarchar的基本介绍及其区别

    SQL中varchar和nvarchar的基本介绍及其区别

    varchar长度为 n 个字节的可变长度且非 Unicode 的字符数据,nvarchar包含 n 个字符的可变长度 Unicode 字符数据
    2014-07-07
  • sql多表行转列、级联行转列示例代码

    sql多表行转列、级联行转列示例代码

    这篇文章主要介绍了sql多表行转列、级联行转列示例代码,需要的朋友可以参考下
    2014-03-03
  • SQL中的用户管理权限与用户详解

    SQL中的用户管理权限与用户详解

    这篇文章给大家介绍SQL中的用户管理权限与用户的相关操作,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2026-05-05
  • SQl 跨服务器查询语句

    SQl 跨服务器查询语句

    SQl跨服务器查询的二种实现方法,一般情况如果安全设置好了,根本无法用,不过内部网络还是不错的。
    2009-10-10
  • 基于SQL Server OS的任务调度机制详解

    基于SQL Server OS的任务调度机制详解

    本篇文章小编为大家介绍,基于SQL Server OS的任务调度机制详解。需要的朋友参考下
    2013-04-04
  • SQLServer审计功能配置详细图文教程

    SQLServer审计功能配置详细图文教程

    这篇文章主要给大家介绍了关于SQLServer审计功能配置的相关资料,SQL Server 的审计功能可以捕获数据库的活动和事件,包括登录、DDL 和 DML 操作、失败的登录尝试、权限更改等,需要的朋友可以参考下
    2024-01-01
  • SQLServer 2000定时执行SQL语句

    SQLServer 2000定时执行SQL语句

    如果你维护的数据表一方面依靠其他模块的数据表,另一方面又对其他模块进行数据支持,并且这些表都是实时更新的,那么就不能通过页面调用SQL语句等方式来更新数据表,只能让数据表定时自动更新。
    2011-04-04

最新评论