精华内容
下载资源
问答
  • MySQL中定义数据字段的类型对你数据库的优化是非常重要的。MySQL支持多种类型,大致可以分为三类:数值、日期/时间和字符串(字符)类型。推荐教程:MySQL入门视频教程一、数值类型MySQL支持所有标准SQL数值数据类型。...

    5268f80b9b1e01f982625ef6fac83ca1.png

    0b23fb1dda9c26655b13def2f8c19128.png

    MySQL中定义数据字段的类型对你数据库的优化是非常重要的。

    MySQL支持多种类型,大致可以分为三类:数值、日期/时间和字符串(字符)类型。

    推荐教程:MySQL入门视频教程

    一、数值类型

    MySQL支持所有标准SQL数值数据类型。

    这些类型包括严格数值数据类型(INTEGER、SMALLINT、DECIMAL和NUMERIC),以及近似数值数据类型(FLOAT、REAL和DOUBLE  PRECISION)。

    关键字INT是INTEGER的同义词,关键字DEC是DECIMAL的同义词。

    BIT数据类型保存位字段值,并且支持MyISAM、MEMORY、InnoDB和BDB表。

    作为SQL标准的扩展,MySQL也支持整数类型TINYINT、MEDIUMINT和BIGINT。下面的表显示了需要的每个整数类型的存储和范围。类型大小范围(有符号)范围(无符号)用途

    TINYINT1 字节(-128,127)(0,255)小整数值

    SMALLINT2 字节(-32 768,32 767)(0,65 535)大整数值

    MEDIUMINT3 字节(-8 388 608,8 388 607)(0,16 777 215)大整数值

    INT或INTEGER4 字节(-2 147 483 648,2 147 483 647)(0,4 294 967 295)大整数值

    BIGINT8 字节(-9,223,372,036,854,775,808,9 223 372 036 854 775 807)(0,18 446 744 073 709 551 615)极大整数值

    FLOAT4 字节(-3.402 823 466 E+38,-1.175 494 351 E-38),0,(1.175 494 351 E-38,3.402 823 466 351 E+38)0,(1.175 494 351 E-38,3.402 823 466 E+38)单精度

    浮点数值

    DOUBLE8 字节(-1.797 693 134 862 315 7 E+308,-2.225 073 858 507 201 4 E-308),0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308)0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308)双精度

    浮点数值

    DECIMAL对DECIMAL(M,D) ,如果M>D,为M+2否则为D+2依赖于M和D的值依赖于M和D的值小数值

    二、日期和时间类型

    表示时间值的日期和时间类型为DATETIME、DATE、TIMESTAMP、TIME和YEAR。

    每个时间类型有一个有效值范围和一个"零"值,当指定不合法的MySQL不能表示的值时使用"零"值。

    TIMESTAMP类型有专有的自动更新特性,将在后面描述。类型大小

    (字节)范围格式用途

    DATE31000-01-01/9999-12-31YYYY-MM-DD日期值

    TIME3'-838:59:59'/'838:59:59'HH:MM:SS时间值或持续时间

    YEAR11901/2155YYYY年份值

    DATETIME81000-01-01 00:00:00/9999-12-31 23:59:59YYYY-MM-DD HH:MM:SS混合日期和时间值

    TIMESTAMP41970-01-01 00:00:00/2038

    结束时间是第 2147483647 秒,北京时间 2038-1-19 11:14:07,格林尼治时间 2038年1月19日 凌晨 03:14:07YYYYMMDD HHMMSS混合日期和时间值,时间戳

    三、字符串类型

    字符串类型指CHAR、VARCHAR、BINARY、VARBINARY、BLOB、TEXT、ENUM和SET。该节描述了这些类型如何工作以及如何在查询中使用这些类型。类型大小用途

    CHAR0-255字节定长字符串

    VARCHAR0-65535 字节变长字符串

    TINYBLOB0-255字节不超过 255 个字符的二进制字符串

    TINYTEXT0-255字节短文本字符串

    BLOB0-65 535字节二进制形式的长文本数据

    TEXT0-65 535字节长文本数据

    MEDIUMBLOB0-16 777 215字节二进制形式的中等长度文本数据

    MEDIUMTEXT0-16 777 215字节中等长度文本数据

    LONGBLOB0-4 294 967 295字节二进制形式的极大文本数据

    LONGTEXT0-4 294 967 295字节极大文本数据

    CHAR 和 VARCHAR 类型类似,但它们保存和检索的方式不同。它们的最大长度和是否尾部空格被保留等方面也不同。在存储或检索过程中不进行大小写转换。

    BINARY 和 VARBINARY 类似于 CHAR 和 VARCHAR,不同的是它们包含二进制字符串而不要非二进制字符串。也就是说,它们包含字节字符串而不是字符字符串。这说明它们没有字符集,并且排序和比较基于列值字节的数值值。

    BLOB 是一个二进制大对象,可以容纳可变数量的数据。有 4 种 BLOB 类型:TINYBLOB、BLOB、MEDIUMBLOB 和 LONGBLOB。它们区别在于可容纳存储范围不同。

    有 4 种 TEXT 类型:TINYTEXT、TEXT、MEDIUMTEXT 和 LONGTEXT。对应的这 4 种 BLOB 类型,可存储的最大长度不同,可根据实际情况选择。

    展开全文
  • 工作中经常见到一些设计粗糙的数据库,其中将数字...所以,这里简单总结一下,在数据库系统中,将数字类型存储成字符类型有哪些不好的地方。以关系型数据库MySQL示例。  ①字符类型往往比数字类型占用更多的存储...

        工作中经常见到一些设计粗糙的数据库,其中将数字类型的字段定义和存储成字符型是一种比较常见的情况。部分开发同学或者非数据库岗位很多为了图方便,往往又不在意这些细节,除非等到出现可见的或者一些不可见的问题时才会去研究隐藏其后的真相。所以,这里简单总结一下,在数据库系统中,将数字类型存储成字符类型会有哪些不好的地方。以关系型数据库MySQL示例。

        ①字符类型往往比数字类型占用更多的存储

        首先,字符类型往往占用更多的存储,但非总是占用更多的存储。MySQL以固定长度存储数字类型:TINYINT、SMALLINT、MEDIUMINT、INT和BIGINT分别占用1、2、3、4和8个Byte存储。所以,就“1024”这个数值,如果以BIGINT、CHAR(4)和VARCHAR存储,不考虑其他,分别需要8、4和5个Byte存储(VARCHAR类型以是否存储了超过255个字符为界限分别需要额外1个或者2个Byte来记录存储长度)。但实际使用中,我们遇到的数字类型,其值域或者说取值空间是很宽大的,或者刚好可以放入一个较小的数字类型定义中。绝大多数情况下,总是可以通过选用数字类型从而节省存储空间。文件型数据库,数据最终是存储在磁盘上的文件,当需要对其查询时再读取到内存中。所以,更少的存储空间消耗与更高的查询性能是直接相关的。

        ②数字类型存储成字符类型可能使索引失效

        字段间进行比较时,如果字段类型不一致,在查询之前需要类型转换,否则无法直接进行比较。因为额外的类型转换操作,使得字段上的索引不可用。因此,将数字类型存储成字符类型,并且为其定义了索引,当其与其他数字类型字段关联查询时,该索引就失效了。

        ③数字类型存储成字符类型可能使部分SQL函数和命令失效

        数字的计算比较是作为一个整体在CPU中进行的。当数字类型存储成字符型时,会受到编码和排序规则影响;对字符型的查询是从左往右一个字符一个字符依次进行的,即最左前缀匹配。因此,将字符型数字直接传入部分函数或命令会使结果失真。

        首先创建两张示例表,插入相同的数据,但数据类型定义不一致。

    CREATE TABLE `i` (
    	`i` INT(11) NULL DEFAULT NULL
    )
    ;
    INSERT INTO `i` (`i`) VALUES (4);
    INSERT INTO `i` (`i`) VALUES (8);
    INSERT INTO `i` (`i`) VALUES (11);
    INSERT INTO `i` (`i`) VALUES (23);
    INSERT INTO `i` (`i`) VALUES (1024);
    INSERT INTO `i` (`i`) VALUES (2147483647);
    CREATE TABLE `s` (
    	`s` VARCHAR(50) NULL DEFAULT NULL
    )
    ;
    INSERT INTO `s` (`s`) VALUES ('4');
    INSERT INTO `s` (`s`) VALUES ('8');
    INSERT INTO `s` (`s`) VALUES ('11');
    INSERT INTO `s` (`s`) VALUES ('23');
    INSERT INTO `s` (`s`) VALUES ('1024');
    INSERT INTO `s` (`s`) VALUES ('2147483647');

        数字类型存储成字符型使得SQL查询结果失真。

    mysql> SELECT MAX(i.i) FROM i;
    +------------+
    | MAX(i.i)   |
    +------------+
    | 2147483647 |
    +------------+
    1 row in set (0.00 sec)
    
    mysql> SELECT MAX(s.s) FROM s;
    +----------+
    | MAX(s.s) |
    +----------+
    | 8        |
    +----------+
    1 row in set (0.00 sec)
    mysql> SELECT i.i FROM i ORDER BY i.i;
    +------------+
    | i          |
    +------------+
    |          4 |
    |          8 |
    |         11 |
    |         23 |
    |       1024 |
    | 2147483647 |
    +------------+
    6 rows in set (0.00 sec)
    
    mysql> SELECT s.s FROM s ORDER BY s.s;
    +------------+
    | s          |
    +------------+
    | 1024       |
    | 11         |
    | 2147483647 |
    | 23         |
    | 4          |
    | 8          |
    +------------+
    6 rows in set (0.00 sec)

        为了得到预想的数值结果,必须额外进行一次数据类型转换操作,包括隐式转换和显式转换两种方式。隐式转换是进行一个简单的不改变数值大小的数学计算;显式转换是借助CAST或者CONVERT函数。隐式操作在开发维护工作中往往就是出问题的根源,所以如果真的到了需要进行类型转换的时候,建议使用标准SQL规范的CAST。

    mysql> SELECT MAX(s.s + 0) FROM s;
    +--------------+
    | MAX(s.s + 0) |
    +--------------+
    |   2147483647 |
    +--------------+
    1 row in set (0.01 sec)
    
    mysql> SELECT MAX(CAST(s.s AS DECIMAL)) FROM s;
    +---------------------------+
    | MAX(CAST(s.s AS DECIMAL)) |
    +---------------------------+
    |                2147483647 |
    +---------------------------+
    1 row in set (0.00 sec)

     

     

        参考:

    https://dev.mysql.com/doc/refman/5.7/en/mysql-indexes.html

    https://dev.mysql.com/doc/refman/5.7/en/group-by-functions.html#function_max

    https://dev.mysql.com/doc/refman/5.7/en/cast-functions.html#function_cast

    展开全文
  • mongo shell中提供各式各样的返回日期类型的方法,例如字符类型或者Date对象类型: Date() 返回当前的日期字符串; new Date() 返回使用ISODate()包装的Date对象类型; ISODate() 返回使用ISODat

    • http://blog.csdn.net/user_longling/article/details/52398277
    • Date
    mongo shell中提供各式各样的返回日期类型的方法,例如字符串类型或者Date对象类型:
    Date() 返回当前的日期字符串;
    new Date() 返回使用ISODate()包装的Date对象类型;
    ISODate() 返回使用ISODate()包装的Date对象类型;
    内部Date对象存储的是64位整形数据(从1970年1月1日到现在时差毫秒数)。
    1. var myDateString = Date();  //返回日期字符串  
    2. myDateString            //在shell中输入变量名打印变量值  
    3. typeof myDateString     //使用typeof操作符检查类型  
    4.   
    5. //使用 Date()和ISODate() 构造方法返回Date类型  
    6. var myDate = new Date();  
    7. var myDateInitUsingISODateWrapper = ISODate();  
    8. //使用 instanceof操作符合检查类型  
    9. myDate instanceof Date              //操作结果true  
    10. myDateInitUsingISODateWrapper instanceof Date   //操作结果true  

    • ObjectId
    mongo shell提供ObjectId()包装类包装ObjectId数据对象。
    1. new ObjectId        //生成一个新的ObjectId数据  

    • NumberLong
    通常情况下mongo shell将所有的数据当作浮点值对待。
    mongo shell提供NumberLong()包装类处理64位整形数据。
    1. NumberLong("2090845886852")     //NumberLong() 接受一个long类型的字符串  
    2. db.collection.insert( { _id: 10, calc: NumberLong("2090845886852") } )  

    • NumberInt
    mongo shell中提供NumberInt()构造方法表示32位整形数据。
    展开全文
  • 常见的数据库有哪些

    千次阅读 2018-02-25 17:06:57
    Redis是一种高性能的key-value数据库,它支持存储的value类型比Memcached更多,包括string(字符串)、list(链表)、set(集合)、zset(有序集合)、hash(哈希类型),可以将存储在内存中的键值对数据...
    • 常见的数据库
      • 关系型数据库
        1. MySQL
        2. SQL Server
        3. Oracle
        4. Sybase
        5. DB2
      • 非关系型数据库(NoSQL)
        1. Redis
    • Redis
      • Redis是一种高性能的key-value数据库,它支持存储的value类型比Memcached更多,包括string(字符串)、list(链表)、set(集合)、zset(有序集合)、hash(哈希类型),可以将存储在内存中的键值对数据持久化到硬盘中。Redis既能够做主数据库,也能作为其他存储系统的辅助数据库。
    展开全文
  • hive数据类型有哪些

    万次阅读 2018-07-05 00:09:19
    关系数据库表(table),分区,hive里也这些东西,这些东西在hive技术里称为hive的数据模型。今天本文介绍hive的数据类型,数据模型以及文件存储格式。这些知识大家可以类比关系数据库的相关知识。 首先我要...
  • 1. js的本质就是处理数据。数据来自于后台的数据库。 所以变量就起到一个临时存储数据的作用。...数据类型有哪些? 1. 字符串 String 2. 数字 Number 3. 布尔 Boolean 4. Null 空 5. Undefine...
  • MySQL数据库设计时需要注意哪些问题

    千次阅读 2018-10-18 22:04:59
    1、永远为表设定一个自增主键ID,并尽可能的利用...5、尽量使用固长的字符类型,当表中所有的字段都是固定长度,DB 会认为表是static类型,如果固定长度和非固定长度的字段尽量采用垂直分割,将表分割。 静态类型...
  • 简单key-value类型,value可为字符串和数字 常规计数(微博数, 粉丝数等功能) hash 是一个string类型的field和value的映射表,hash特别适合用于存储对象 存储部分可能需要变更的数据(比如用户信息) list 有序...
  • Redis有哪些数据类型

    千次阅读 2018-01-25 19:22:29
    1. Redis有哪些数据类型? String ,hash,set,zset, list 2. Redis和memcache的区别是什么? 从存储大小 Memcached单个key-value大小有限,一个value最大只支持1MB,key 最大250个字符,而Redis最大支持...
  • 数据库一个problem(问题)表,表中需要一个字段是存储这道题都覆盖了哪些point(知识点,字符类型)。我想到要用枚举类型或者set类型,但是它们都要求在创建表的时候,要初始化其中的值。而我希望知识点是由用户...
  • 五种数据类型的简单介绍及操作演示2.1:string2.2:HASH(哈希字典)2.3:list(列表)2.4:set(集合)2.5:zset(sorted set:有序集合)三:多数据库的概念3.1:多数据库的简介及操作演示3.2:注意3.3:key常规...
  • redis主要value类型有哪些? String:字符串 Set:包含字符串的无序集合 List:包含字符串的链表 Hash:包含键值对的散装列表 Zset:member与score之间的有序映射 什么场景使用过redis? 1)当作缓存,点击访问量多...
  • 1.如果条件中or,即使其中条件带索引也不会使用(这也是为什么尽量少用or的原因) ...4.如果列类型字符串,那一定要在条件中将数据使用引号引用起来,否则不使用索引 5.如果mysql估计使用全表扫描要比使用索...
  • Redis 数据库

    2018-07-12 14:37:46
    1、什么是Redis 数据库?...2、Redis 支持的数据类型有哪些?  Redis 支持五种类型的数据类型  (1) String 字符串  (2) hash (哈希)  (3) list (列表)  (4) set (集合)  (5)sorted...
  • 数据库面试题

    2020-12-14 14:17:26
    数据库java面试题sql优化有哪些?如何创建索引?创建索引的原则?索引的优缺点?sql语句关键词的执行顺序?sql如何去重?内连接和外连接的区别Java中如何使用redis?redis支持的数据类型及各种数据类型的使用场景?redis...
  • 我们如何知道,我们访问的数据库的表,有哪些字段,字段的类型是什么,长度限制是什么? 在实际工作中,我就遇到过,要做动态sql,比如insert,如果是数字就不要加引号,如果是字符就要加引号,还比如做基于数据库...
  • Mysql都支持哪些数据类型

    千次阅读 2019-07-03 23:00:38
    如果你选择的是mysql作为数据库,必须要清楚mysql到底支持哪些数据类型呢? 总体来说包括数值型、字符类型、日期和时间类型这么几大类。 1、数值类型 数值类型中又细分为整数类型、浮点数类型、定点数类型和位类型...
  • 类型上来说,mysql是关系型数据库,redis是缓存数据库 (2)作用上 mysql用于持久化的存储数据到硬盘,功能强大,速度较慢,基于磁盘,读写速度没有Redis快,但是不受空间容量限制,性价比高 redis用于存储使用...
  • 数据库综合测试

    2018-12-07 20:59:05
    常见的数据库产品有哪些? MySQL, SQL server, Oracle, sybase, DB2 写出MySQL常用命令:进入某个库,查询某个库中的所有表,创建数据库 Use demo, shou table, create database 4.请写出MySQL常见的数据类型 ...
  • Redis数据库学习

    2020-06-08 15:21:31
    它的优点有哪些?Redis在Java Web中的应用缓存高速读/写场合Redis基本安装和使用Window 下安装Linux 下安装Ubuntu 下安装在Java程序中使用Redis在Spring中使用RedisRedis的6种数据类型NoSQL和传统数据库有什么区别?...
  • oracle数据库:表操作

    2021-06-04 11:05:10
    在进行操作之前,先介绍一下oracle数据库的数据类型有哪些 数据类型 数据描述 varchar2(size) 可变长度的字符串,其最大长度为size个字节,size的最大值是4000,最小值是1;你必须指定一个varchar2的size ...
  • 数据库基本操作

    2019-04-23 14:51:55
    ,mysql常用数据类型有哪些? 数值 ,日期/时间 ,字符串(字符) 数据类型如何选择? 日期,选择按照格式 数值和字符串按照大小 删除数据? delete from test where name = "123" select *fro...
  • mysql数据库面试

    2021-05-06 23:35:57
    如何字段类型字符串,where时一定用引号括起来,否则索引失效 like通配符可能导致索引失效。 联合索引,查询时的条件列不是联合索引中的第一个列,索引失效。 在索引列上使用m
  • 常见的异常类有哪些

    千次阅读 多人点赞 2021-02-18 12:28:27
    常见的异常类有哪些? NullPointerException:当应用程序试图访问空对象时,则抛出该异常。 SQLException:提供关于数据库访问错误或其他错误信息的异常。 IndexOutOfBoundsException:指示某排序索引(例如对数组、...
  • Oracle数据库中的常用函数

    千次阅读 2017-08-18 18:18:38
    Oracle 数据库中的常用函数分为 字符函数、数值函数、日期函数、...想要全面掌握上面提到的函数,首先应知道Oracle数据库中的数据都有哪些类型,如下所示: 一、字符函数 1,字符串截取  select substr('abcde
  • 一、数据库发展史1.1 程序管理阶段1.2 文件系统阶段1.3 数据库系统阶段二、数据库专业术语2.1 ...字符类型5.3 日期类型六、数据库语句6.2 SQL语句分类6.3 创建表6.4 查看表结构6.5 插入语句6.5.1 向全部列插入数据6.5.2
  • 键的类型只能为字符串,只支持五种数据类型字符串、列表、集合、散列表、有序集合。 Redis相关常见面试题 1、Redis是什么? Redis本质上是一个Key-Value类型的内存数据库,很像memcached,整个数据库统统加载在内存...

空空如也

空空如也

1 2 3 4 5 ... 19
收藏数 372
精华内容 148
关键字:

数据库字符类型有哪些