MySql数据库的列类型(字段类型)
mysql字段写法
mysql字段写法在MySQL中,字段(column)是数据库表中的一个列。
以下是关于MySQL字段的一些常见写法:1.创建表时定义字段:sql复制代码CREATE TABLE表名 (字段1数据类型,字段2数据类型,...);例如,创建一个名为users的表,包含id、name和age三个字段:sql复制代码CREATE TABLE users (id INT,name VARCHAR(50),age INT);2.修改表时添加字段:sql复制代码ALTER TABLE表名ADD字段名数据类型;例如,向users表中添加一个名为email的字段:sql复制代码ALTER TABLE users ADD email VARCHAR(100);3.修改表时删除字段:sql复制代码ALTER TABLE表名DROP字段名;例如,从users表中删除email字段:sql复制代码ALTER TABLE users DROP email;4.修改字段的数据类型:sql复制代码ALTER TABLE表名 MODIFY 字段名新数据类型;例如,将users表中name字段的数据类型从VARCHAR(50)修改为TEXT:sql复制代码ALTER TABLE users MODIFY name TEXT;5.重命名字段:sql复制代码ALTER TABLE表名 RENAME 旧字段名TO新字段名;例如,将users表中name字段重命名为fullname:sql复制代码ALTER TABLE users RENAME name TO fullname;。
MySQL(二)数据库数据类型详解
MySQL(⼆)数据库数据类型详解 序⾔ 今天去健⾝了,感觉把⾝体练好还是不错的,闲话不多说,把这个数据库所遇到的数据类型今天统统在这⾥讲清楚了,以后在看到什么数据类型,咱度应该认识,下⾯就跟着我的节奏去把这个拿下吧。
---WZY⼀、数据类型 MySQL的数据类型有⼤概可以分为5种,分别是整数类型、浮点数类型和定点数类型、⽇期和时间类型、字符串类型、⼆进制类型。
现在可以来看看你对这5种类型的熟悉程度,哪个看起来懵逼了,那就说明⾃⼰哪个不熟悉,不理解。
注意:整数类型和浮点数类型可以统称为数值数据类型,这不难理解。
数值数据类型 整数类型:TINYINT、SMALLINT、MEDIUMINT、INT、BIGINT 浮点数类型:FLOAT、DOUBLE 定点⼩数:DECIMAL ⽇期/时间类型 YEAR、TIME、DATE、DATETIME、TIMESTAMP 字符串类型 CHAR、VARCHAR、TEXT、ENUM、SET等 ⼆进制类型 BIT、BINARY、VARBINARY、BLOB 1、整数类型 不管你学什么语⾔,在基础⽅⾯,都应该知道 1个字节= 8位⼆进制数。
每个类型的取值范围也就能够知道,⽐如TINYINT占⽤1个字节,也就是8位,2的8次⽅减1等于255,也就是说如果代表没符号的整数,该取值范围为0~255,如果是有符号的,最⾼位为符号号位,也就是2的7次⽅减1,也就是127,取值范围为-128~127,为什么需要减1,这个问题就需要考虑临界值的问题了。
⽽考虑临界值问题⼜有需要讨论原码补码反码的知识,这些度不是我们讨论的重点,所以在这就⾃⾏百度。
给出⼀张范围表,给⼤家做参考。
不同整数类型的取值范围 根据⾃⼰所需去选取不同的类型名称, 例如: CREATE TABLE aaa( id INT(10) PRIMARY KEY, age INT(6) ); 这个例⼦中INT(10)、INT(6) 括号中的数字表⽰的是该数据类型指定的显⽰宽度,指定能够显⽰的数值中数字的个数。
Mysql数据类型(字段)介绍
MySql数据库的列类型(字段类型)MySQL数据库的表是一个二维表,由一个或多个数据列构成。
每个数据列都有它的特定类型,该类型决定了MySQL如何看待该列数据,我们可以把整型数值存放到字符类型的列中,MySQL则会把它看成字符串来处理。
MySQL中的列类型有三种:数值类、字符串类和日期/时间类。
从大类来看列类型和数值类型一样,都是只有三种。
但每种列类型都还可细分。
下面对各种列类型进行详细介绍。
数值类的数据列类型数值型的列类型包括整型和浮点型两大类。
TINYINT:1字节非常小的正整数,带符号:-128~127,不带符号:0~255SMALLINT:2字节小整数,带符号:-32768~32767,不带符号:0~65535MEDIUMINT:3字节中等大小的整数,带符号:-8388608~8388607,不带符号:0~16777215INT:4字节标准整数,带符号:-2147483648~2147483647,不带符号:0~4294967295BIGINT:8字节大整数,带符号:-9223372036854775808~9233372036854775807,不带符号:0~18446744073709551615FLOAT:4字节单精度浮点数,最小非零值:+-1.175494351E-38,最大非零值:+-3.402823466E+38 DOUBLE:8字节双精度浮点数,最小非零值:+-2.2250738585072014E-308,最大非零值:+-1.7976931348623157E+308DECIMAL:M+2字节以字符串形式表示的浮点数,它的取值范围可变,由M和D的值决定。
整型数据列类型MySQL有五种整型数据列类型,即TINYINT,SMALLINT,MEDIUMINT,INT和BIGINT。
它们之间的区别是取值范围不同,存储空间也各不相同。
在整型数据列后加上UNSIGNED属性可以禁止负数,取值从0开始。
mysql字段类型详解
一个参数表示一个单精密浮点数字。
DOUBLE[(M,D)] [ZEROFILL]一个正常大小(双精密)浮点数字。
不能无符号。
允许的值是-1.7976931348623157E+308到-2.2250738585072014E-308、 0和2.2250738585072014E-308到1.7976931348623157E+308。
M是显示宽度而D是小数位数。
没有一个参数的 DOUBLE或FLOAT(X)(25 < = X < = 53)代表一个双精密浮点数字。
DOUBLE PRECISION[(M,D)] [ZEROFILL]REAL[(M,D)] [ZEROFILL]这些是DOUBLE同义词。
DECIMAL[(M[,D])] [ZEROFILL]一个未压缩(unpack)的浮点数字。
不能无符号。
行为如同一个CHAR列:“未压缩”意味着数字作为一个字符串被存储,值的每一位使用一个字符。
小数点,并且对于负数,“-”符号不在M中计算。
如果D是0,值将没有小数点或小数部分。
DECIMAL值的最大范围与DOUBLE相同,但是对一个给定的 DECIMAL列,实际的范围可以通过M和D的选择被限制。
如果D被省略,它被设置为0。
如果M被省掉,它被设置为10。
注意,在MySQL3.22 里,M参数包括符号和小数点。
NUMERIC(M,D) [ZEROFILL]这是DECIMAL的一个同义词。
DATE一个日期。
支持的范围是'1000-01-01'到'9999-12-31'。
MySQL以'YYYY-MM-DD'格式来显示DATE值,但是允许你使用字符串或数字把值赋给DATE列。
DATETIME一个日期和时间组合。
支持的范围是'1000-01-01 00:00:00'到'9999-12-31 23:59:59'。
MySQL以'YYYY-MM-DD HH:MM:SS'格式来显示DATETIME值,但是允许你使用字符串或数字把值赋给DATETIME的列。
mysql中数据类型N
mysql中数据类型N我们要把现实世界中的各种信息转换成计算机能理解的东西,这些转换后的信息就形成了数据。
例如,某⼈的出⽣⽇期是“1987年5⽉23⽇”,他的⾝⾼是170厘⽶,等等。
数据不仅包括数字、字母、⽂字和其他特殊字符组成的⽂本形式的数据,⽽且还包括图形、图像、动画、影像、声⾳等多媒体数据。
但使⽤最多、最基本的仍然是⽂本数据。
1. mysql的数据类型在mysql中有如下⼏种数据类型:(1)数值型数值是诸如32 或153.4 这样的值。
mysql ⽀持科学表⽰法,科学表⽰法由整数或浮点数后跟“e”或“e”、⼀个符号(“+”或“-”)和⼀个整数指数来表⽰。
1.24e+12 和23.47e-1 都是合法的科学表⽰法表⽰的数。
⽽1.24e12 不是合法的,因为指数前的符号未给出。
浮点数由整数部分、⼀个⼩数点和⼩数部分组成。
整数部分和⼩数部分可以分别为空,但不能同时为空。
数值前可放⼀个负号“-”以表⽰负值。
(2)字符(串)型字符型(也叫字符串型,简称串)是诸如“hello, world!”或“⼀个馒头引起的⾎案”这样的值,或者是电话号码87398413这样的值。
既可⽤单引号也可⽤双引号将串值括起来。
初学者往往分不清数值87398143和字符串87398143的区别。
都是数字啊,怎么⼀个要⽤数值型,⼀个要⽤字符型呢?关键就在于:数值型的87398143是要参与计算的,⽐如它是⾦融中的⼀个货款总额;⽽字符型的87398143是不参与计算的,只是表⽰电话号码,这样的还有街道号码、门牌号码等等,它们都不参与计算。
(3)⽇期和时间型⽇期和时间是⼀些诸如“2006-07-12”或“12:30:43”这样的值。
mysql还⽀持⽇期/时间的组合,如“2006-07-12 12:30:43”。
(4)null值null表⽰未知值。
⽐如填写表格中通讯地址不清楚留空不填写,这就是null值。
我们⽤create table语句创建⼀个表(参看前⾯的章节),这个表中包含列的定义。
MySQL数据库设计规范
MySQL数据库设计规范1、数据库命名规范采⽤26个英⽂字母(区分⼤⼩写)和0-9的⾃然数(经常不需要)加上下划线'_'组成;命名简洁明确(长度不能超过30个字符);例如:user, stat, log, 也可以wifi_user, wifi_stat, wifi_log给数据库加个前缀;除⾮是备份数据库可以加0-9的⾃然数:user_db_20151210;2、数据库表名命名规范采⽤26个英⽂字母(区分⼤⼩写)和0-9的⾃然数(经常不需要)加上下划线'_'组成;命名简洁明确,多个单词⽤下划线'_'分隔;例如:user_login, user_profile, user_detail, user_role, user_role_relation,user_role_right, user_role_right_relation表前缀'user_'可以有效的把相同关系的表显⽰在⼀起;3、数据库表字段名命名规范采⽤26个英⽂字母(区分⼤⼩写)和0-9的⾃然数(经常不需要)加上下划线'_'组成;命名简洁明确,多个单词⽤下划线'_'分隔;例如:user_login表字段 user_id, user_name, pass_word, eamil, tickit, status, mobile, add_time;每个表中必须有⾃增主键,add_time(默认系统时间)表与表之间的相关联字段名称要求尽可能的相同;4、数据库表字段类型规范⽤尽量少的存储空间来存数⼀个字段的数据;例如:能使⽤int就不要使⽤varchar、char,能⽤varchar(16)就不要使⽤varchar(256);IP地址最好使⽤int类型;固定长度的类型最好使⽤char,例如:邮编;能使⽤tinyint就不要使⽤smallint,int;最好给每个字段⼀个默认值,最好不能为null;5、数据库表索引规范命名简洁明确,例如:user_login表user_name字段的索引应为user_name_index唯⼀索引;为每个表创建⼀个主键索引;为每个表创建合理的索引;建⽴复合索引请慎重;6、简单熟悉数据库范式第⼀范式(1NF):字段值具有原⼦性,不能再分(所有关系型数据库系统都满⾜第⼀范式);例如:姓名字段,其中姓和名是⼀个整体,如果区分姓和名那么必须设⽴两个独⽴字段;第⼆范式(2NF):⼀个表必须有主键,即每⾏数据都能被唯⼀的区分;备注:必须先满⾜第⼀范式;第三范式(3NF):⼀个表中不能包涵其他相关表中⾮关键字段的信息,即数据表不能有沉余字段;备注:必须先满⾜第⼆范式;备注:往往我们在设计表中不能遵守第三范式,因为合理的沉余字段将会给我们减少join的查询;例如:相册表中会添加图⽚的点击数字段,在相册图⽚表中也会添加图⽚的点击数字段;MYSQL数据库设计原则1、核⼼原则不在数据库做运算;cpu计算务必移⾄业务层;控制列数量(字段少⽽精,字段数建议在20以内);平衡范式与冗余(效率优先;往往牺牲范式)拒绝3B(拒绝⼤sql语句:big sql、拒绝⼤事物:big transaction、拒绝⼤批量:big batch);2、字段类原则⽤好数值类型(⽤合适的字段类型节约空间);字符转化为数字(能转化的最好转化,同样节约空间、提⾼查询性能);避免使⽤NULL字段(NULL字段很难查询优化、NULL字段的索引需要额外空间、NULL字段的复合索引⽆效);少⽤text类型(尽量使⽤varchar代替text字段);3、索引类原则合理使⽤索引(改善查询,减慢更新,索引⼀定不是越多越好);字符字段必须建前缀索引;不在索引做列运算;innodb主键推荐使⽤⾃增列(主键建⽴聚簇索引,主键不应该被修改,字符串不应该做主键)(理解Innodb的索引保存结构就知道了);不⽤外键(由程序保证约束);4、sql类原则sql语句尽可能简单(⼀条sql只能在⼀个cpu运算,⼤语句拆⼩语句,减少锁时间,⼀条⼤sql可以堵死整个库);简单的事务;避免使⽤trig/func(触发器、函数不⽤客户端程序取⽽代之);不⽤select *(消耗cpu,io,内存,带宽,这种程序不具有扩展性);OR改写为IN(or的效率是n级别);OR改写为UNION(mysql的索引合并很弱智);select id from t where phone = ’159′ or name = ‘john’;=>select id from t where phone=’159′unionselect id from t where name=’jonh’避免负向%;慎⽤count(*);limit⾼效分页(limit越⼤,效率越低);使⽤union all替代union(union有去重开销);少⽤连接join;使⽤group by;请使⽤同类型⽐较;打散批量更新;5、性能分析⼯具show profile;mysqlsla;mysqldumpslow;explain;show slow log;show processlist;复制代码数据库的设计原则复制代码1. 原始单据与实体之间的关系 可以是⼀对⼀、⼀对多、多对多的关系。
一篇文章看懂mysql中varchar能存多少汉字、数字,以及varchar(100)和v。。。
⼀篇⽂章看懂mysql中varchar能存多少汉字、数字,以及varchar(100)和v。
看完这篇⽂章,你能搞清楚以下问题:1、varchar(100)和varchar(10)的区别在哪⾥?2、varchar能存多少汉字、数字?3、varchar的最⼤长度是多少呢?4、字符、字节、位,之间的关系?5、mysql字段类型存储需要多少字节?接下来请仔细看,整理不易啊。
1、varchar(100)和varchar(10)的区别在哪⾥?所以如果某些字段会涉及到⽂件排序或者基于磁盘的临时表时,分配VARCHAR数据类型时仍然不能够太过于慷慨。
还是要评估实际需要的长度,然后选择⼀个最长的字段来设置字符长度。
如果为了考虑冗余,可以留10%左右的字符长度。
千万不能认为其为根据实际长度来分配存储空间,⽽随意的分配长度,或者说⼲脆使⽤最⼤的字符长度。
----------------------------------char------------------------------------------1、从碎⽚⾓度进⾏考虑,使⽤CHAR字符型时,由于存储空间都是⼀次性分配的。
为此某个字段的内容,其都是存储在⼀起的。
单从这个⾓度来讲,其不存在碎⽚的困扰。
⽽可变长度的字符数据类型,其存储的长度是可变的。
当其更改前后数据长度不⼀致时,就不可避免的会出现碎⽚的问题。
故使⽤可变长度的字符型数据时,数据库管理员要时不时的对碎⽚进⾏整理。
如执⾏数据库导出导⼊作业,来消除碎⽚。
2、考虑其长度的是否相近,如果某个字段其长度虽然⽐较长,但是其长度总是近似的,如⼀般在90个到100个字符之间,甚⾄是相同的长度。
此时⽐较适合采⽤CHAR字符类型。
⽐较典型的应⽤就是MD5哈希值。
当利⽤MD5哈希值来存储⽤户密码时,就⾮常使⽤采⽤CHAR字符类型。
因为其长度是相同的。
另外,像⽤来存储⽤户的⾝份证号码等等,⼀般也建议使⽤CHAR类型的数据。
mysql中变量类型2222
mysql中变量类型MySQL支持大量的列类型,它可以被分为3类:数字类型、日期和时间类型以及字符串(字符)类型。
本节首先给出可用类型的一个概述,并且总结每个列类型的存储需求,然后提供每个类中的类型性质的更详细的描述。
概述有意简化,更详细的说明应该考虑到有关特定列类型的附加信息,例如你能为其指定值的允许格式。
由MySQL支持的列类型列在下面。
下列代码字母用于描述中:M指出最大的显示尺寸。
最大的合法的显示尺寸是 255 。
D适用于浮点类型并且指出跟随在十进制小数点后的数码的数量。
最大可能的值是30,但是应该不大于M-2。
方括号(“[”和“]”)指出可选的类型修饰符的部分。
注意,如果你指定一个了为ZEROFILL,MySQL将为该列自动地增加UNSIGNED属性。
TINYINT[(M)] [UNSIGNED] [ZEROFILL]一个很小的整数。
有符号的范围是-128到127,无符号的范围是0到255。
SMALLINT[(M)] [UNSIGNED] [ZEROFILL]一个小整数。
有符号的范围是-32768到32767,无符号的范围是0到65535。
MEDIUMINT[(M)] [UNSIGNED] [ZEROFILL]一个中等大小整数。
有符号的范围是-8388608到8388607,无符号的范围是0到16777215。
INT[(M)] [UNSIGNED] [ZEROFILL]一个正常大小整数。
有符号的范围是-2147483648到2147483647,无符号的范围是0到4294967295。
INTEGER[(M)] [UNSIGNED] [ZEROFILL]这是INT的一个同义词。
BIGINT[(M)] [UNSIGNED] [ZEROFILL]一个大整数。
有符号的范围是-9223372036854775808到9223372036854775807,无符号的范围是0到18446744073709551615。
MySQL的数据类型
MySQL的数据类型⽬录MySQL的数据类型数据库中的每个列都应该有适当的数据类型,⽤于限制或允许该列中存储的数据。
例如,列中存储的为数字,则相应的数据类型应该为数值类型。
如果使⽤错误的数据类型可能会严重影响应⽤程序的功能和性能,所以在设计表时,应该特别重视数据列所⽤的数据类型。
更改包含数据的列不是⼀件⼩事,这样做可能会导致数据丢失。
因此,在创建表时必须为每个列设置正确的数据类型和长度。
MySQL中定义数据字段的类型对你数据库的优化是⾮常重要的。
MySQL⽀持所有标准SQL数值数据类型。
MySQL⽀持多种类型,⼤致可以分为三类:数值⽇期/时间字符(串)类型。
数据类型分类1. 数值类型(整数类型和⼩数类型)整数类型:包括 TINYINT、SMALLINT、MEDIUMINT、INT、BIGINT。
⼩数类型:浮点数类型包括 FLOAT 和 DOUBLE。
定点数类型为 DECIMAL。
2. ⽇期/时间类型包括 YEAR、TIME、DATE、DATETIME 和 TIMESTAMP。
3. 字符类型(⽂本字符串和⼆进制字符串)字符串类型:包括 CHAR、VARCHAR、BINARY、VARBINARY、BLOB、TEXT、ENUM 和 SET 等。
⼆进制类型:包括 BIT、BINARY、VARBINARY、TINYBLOB、BLOB、MEDIUMBLOB 和 LONGBLOB。
数值类型MySQL⽀持所有标准SQL数值数据类型。
这些类型包括严格数值数据类型(INTEGER、SMALLINT、DECIMAL和NUMERIC),以及近似数值数据类型(FLOAT、REAL和DOUBLEPRECISION)。
关键字INT是INTEGER的同义词,关键字DEC是DECIMAL的同义词。
BIT数据类型保存位字段值,并且⽀持MyISAM、MEMORY、InnoDB和BDB表。
作为SQL标准的扩展,MySQL也⽀持整数类型TINYINT、MEDIUMINT和BIGINT。
MySQL的名词解释
MySQL的名词解释导语:MySQL是一种开源的关系型数据库管理系统,广泛应用于各种规模的应用和项目中。
初次接触MySQL的用户可能会感到困惑,因为该数据库涉及许多特定的名词和概念。
本文将为您解释MySQL中一些常见的名词,帮助您更好地理解和使用MySQL。
1. 数据库(Database)数据库是一个组织和存储数据的容器,是MySQL中所有相关数据的集合。
它可以包含多个表,每个表又包含多行和列,用于存储和管理具有相同结构的信息。
2. 表(Table)表是数据库中存储数据的组织形式,类似于Excel中的工作表。
每个表由一组列和行组成。
列定义了表中数据的类型,行则代表每个数据实例。
3. 列(Column)列也称为字段,是表中的一个属性。
每个列拥有特定的数据类型,例如整数、字符串或日期。
列定义了表中存储的数据类型和约束条件。
4. 行(Row)行也称为记录或元组,它是表中的每个数据实例。
每行由一组列值组成,每列值对应该行中相应列的属性。
5. 主键(Primary Key)主键用于唯一标识表中的每一行数据。
它必须具有唯一的值,并且不允许为空。
主键可以由一个或多个列组成,但不能重复。
6. 外键(Foreign Key)外键用于建立表与表之间的关联。
它是一个指向其他表主键的列,用于维护表之间的引用完整性。
外键确保了数据的一致性和有效性。
7. 索引(Index)索引是一种数据结构,用于提高数据检索的速度。
它类似于书籍的目录,可以快速定位到所需的数据。
索引可以建立在表的一个或多个列上,可以加快查询的执行速度。
8. 视图(View)视图是基于数据库中一个或多个表的虚拟表。
它是一个逻辑表,没有物理存在。
视图可以简化复杂的查询操作,并隐藏底层表结构的细节。
9. 存储过程(Stored Procedure)存储过程是一组预定义的SQL语句集合,保存在数据库中并可以被多次调用。
存储过程可以接收输入参数,执行特定的业务逻辑,并返回一个结果。
数据库(MySQL)表基本操作
数据库(MySQL)表基本操作思前想后,最终还是把博客的名字改成了数据库表基本操作,以前叫SQL语句⼤全,感觉⽤“⼤全”这个名词太⼤了,⽽⽂章中介绍的内容有限⽽且也不深。
如果您在阅读的过程中发现有不完善的地⽅,欢迎补充说明。
⼀提笔就讲创建数据库,感觉好像是从半道上开始的。
创建数据库前总得安装数据库吧,不管是SQL Server、mysql、Oracle。
但是如果这样写下去,不知道这篇博客还能不能完成,那就默认是安装好数据库了吧,本⽚博客如下都是使⽤mysql数据库,⾸先是登⼊数据库操作(mysql -u root -p)。
1. 查看当前所存在的数据库:show databases;查询结果中的mysql数据库是必须的,⽤来描述⽤户的访问权限;information_schema数据库提供了访问数据库元数据的⽅式,其中保存着关于MySQL服务器所维护的所有其他数据库的信息。
如数据库名,数据库的表,表栏的数据类型与访问权限等;performance_schema⽤于收集数据库服务器性能参数。
2. 创建新的数据库:create database test_db;test_db为要创建的数据库名称,该名称不能与现有的数据库重名。
3. 查看创建好的数据库定义:show create database test_db;4. 删除数据库:drop database test_db;test_db为要删除的数据库名称。
5. 查看数据库存储引擎:show engines;Support列为YES表⽰引擎可⽤,DEFAULT表⽰数据库当前默认的引擎。
可以通过my.ini⽂件设置数据库的默认存储引擎。
在数据库中,数据表是最重要、最基本的操作对象,数据存储的基本单位。
本节将介绍数据表的增、删、改、查操作,使读者能够熟练掌握数据表的基本操作,理解约束、默认和规则的含义。
创建数据表:数据表属于数据库,在创建数据表前,应该使⽤use test_db;指定在哪个数据库(test_db)下进⾏操作,如果没有指定数据库会抛出No database selected错误。
MySQL字段类型详解
MySQL字段类型详解MySQL提供了整数和浮点数的数值类型。
可根据所要表示的值的范围选择相应的类型。
对于整数类型,如果指定了A UTO_I NCREM ENT 属性,则列必须为P RIMAR Y KEY 或UNIQU E 索引。
将NULL插入AUTO_INCR EMENT列将会插入一个大于该列中当前最大值的值。
如果指定了U NSIGN ED 属性,则相应的整数类型不允许取负值。
如果指定了Z EROFI LL 属性,则用前导零填充数值类型值以达到列的显示宽度。
1. TINYIN T[(M)]说明:非常小的整数允许的属性:AUTO _ I N C R E M E N T, UNSIGN ED, ZEROFI LL取值范围:-128 到127(-27 到27-1),或者如果为U N S I G N E D,则0 到2 5 5(0 到2 8-1)缺省值:如果列可为N ULL;则为NULL;如果列为NO T NULL,则为0存储需求:1字节2. SMALLI NT[(M)]说明:小整数允许的属性:AUTO _ I N C R E M E N T, UNSIGN ED, ZEROFI LL取值范围:-32768到3 27 6 7(-215 到215-1),或者如果为U N S I G N E D,则0 到6 5 5 3 5(0 到216-1)缺省值:如果列可为N ULL;则为NULL;如果列为NO T NULL,则为0存储需求:2 字节3. MEDIUM INT[(M)]说明:中等大小的整数允许的属性:AUTO _ I N C R E M E N T, UNSIGN ED, ZEROFI LL取值范围:-8388608 到8 3 8 8 6 07(-22 3 到22 3-1),或者如果为U N S I G N E D,则0 到16 7 7 2 15(0 到22 4-1)缺省值:如果列可为N ULL,则为NULL;如果列为NO T NULL,则为0存储需求:4 字节4. INT[(M)]说明:标准大小的整数允许的属性:AUTO _ I N C R E M E N T, UNSIGN ED, ZEROFI LL取值范围:-2147483648到2 14 7 4 8 3 6 4 7(-231到23 1-1),或者如果为U N S I G N E D,则0 到4 2 9 4 9 6 7 2 9 5(0 到2 3 2-1)缺省值:如果列为NU LL,则为NULL;如果列为NO T FULL,则为0存储需求:4 字节同义词:I N T E G E R [(M)]5. BIGINT[(M)]说明:大整数允许的属性:AUTO _ I N C R E M E N T, UNSIGN ED, ZEROFI LL取值范围:-9223372036854775808 到9 2 2 3 3 7 2 0 3 6 8 5 4 7 7 5 8 07(-263 到2 6 3-1),或者如果为U N S I G N E D,则0 到18 4 4 6 7 4 4 07 3 7 0 9 5 5 16 15(0 到26 4 -1)缺省值:如果列可为N ULL,则为NULL;如果列为NO T NULL,则为0存储需求:8 字节6. FLOAT[(M, D)]说明:小浮点数;单精度(精度小于DO U B L E)允许的属性:Z E R O F I L L取值范围:最小非零值为±1.75494351E -38; 最大非零值为±3 . 4 0 2 8 2 3 4 6 6 E + 3 8缺省值:如果列可为N ULL,则为NULL;如果列为NO T NULL,则为0存储需求:4 字节同义词:MySQL3.23 版以前,FLOAT(4) 为具有缺省M和D 值的FLOA T的同义词。
Mysql字段数据类型长度及表类型详细说明
mysql字段数据类型、长度及表类型说明一、MySQL 字段数据类型/长度1、数值类型列类型需要的存储量TINYINT 1 字节SMALLINT 2 个字节MEDIUMINT 3 个字节INT 4 个字节INTEGER 4 个字节BIGINT 8 个字节FLOAT(X) 4 如果X < = 24 或8 如果25 < = X < = 53FLOAT 4 个字节DOUBLE 8 个字节DOUBLE PRECISION 8 个字节REAL 8 个字节DECIMAL(M,D) M字节(D+2 , 如果M < D)NUMERIC(M,D) M字节(D+2 , 如果M < D)MySQL 的数值数据类型可以大致划分为两个类别,一个是整数,另一个是浮点数或小数。
许多不同的子类型对这些类别中的每一个都是可用的,每个子类型支持不同大小的数据,并且MySQL 允许我们指定数值字段中的值是否有正负之分或者用零填补。
INT 类型在MySQL 中支持的5 个主要整数类型是TINYINT,SMALLINT,MEDIUMINT,INT 和BIGINT。
这些类型在很大程度上是相同的,只有它们存储的值的大小是不相同的。
MySQL 以一个可选的显示宽度指示器的形式对SQL 标准进行扩展,这样当从数据库检索一个值时,可以把这个值加长到指定的长度。
例如,指定一个字段的类型为INT(6),就可以保证所包含数字少于 6 个的值从数据库中检索出来时能够自动地用空格填充。
需要注意的是,使用一个宽度指示器不会影响字段的大小和它可以存储的值的范围。
万一我们需要对一个字段存储一个超出许可范围的数字,MySQL 会根据允许范围最接近它的一端截短后再进行存储。
还有一个比较特别的地方是,MySQL 会在不合规定的值插入表前自动修改为0。
UNSIGNED(未签署)修饰符规定字段只保存正值。
因为不需要保存数字的正、负符号,可以在储时节约一个“位”的空间。
mysql数据库知识点总结
MySQL 数据库1数据库概念(了解)1.1什么是数据库数据库就是用来存储和管理数据的仓库!数据库存储数据的优先:●可存储大量数据;●方便检索;●保持数据的一致性、完整性;●安全,可共享;●通过组合分析,可产生新数据。
数据库具有原子性,数据不可再分割!1.2数据库的发展历程●没有数据库,使用磁盘文件存储数据;●层次结构模型数据库;●网状结构模型数据库;●关系结构模型数据库:使用二维表格来存储数据;●关系-对象模型数据库;MySQL就是关系型数据库!1.3常见数据库●Oracle:甲骨文;●DB2:IBM;●SQL Server:微软;●Sybase:赛尔斯;●MySQL:甲骨文;1.4理解数据库我们现在所说的数据库泛指关“系型数据库管理系统(RDBMS - Relational database management system)”,即“数据库服务器”。
当我们安装了数据库服务器后,就可以在数据库服务器中创建数据库,每个数据库中还可以包含多张表。
数据库表就是一个多行多列的表格。
在创建表时,需要指定表的列数,以及列名称,列类型等信息。
而不用指定表格的行数,行数是没有上限的。
下面是tab_student表的结构:当把表格创建好了之后,就可以向表格中添加数据了。
向表格添加数据是以行为单位的!下面是s_student表的记录:s_id s_name s_age s_sexS_1001 zhangSan 23 maleS_1002 liSi 32 femaleS_1003 wangWu 44 male大家要学会区分什么是表结构,什么是表记录。
1.5应用程序与数据库应用程序使用数据库完成对数据的存储!2安装MySQL数据库2.1安装MySQL参考:MySQL安装图解.doc2.2MySQL目录结构MySQL的数据存储目录为data,data目录通常在C:\Documents and Settings\All Users\Application Data\MySQL\MySQL Server 5.1\data位置。
mysql 字段小数类型
mysql 字段小数类型MySQL是一种常用的关系型数据库管理系统,通过定义表结构和字段类型来存储和管理数据。
在MySQL中,字段的小数类型是一种用于存储浮点数的数据类型。
本文将从多个方面介绍MySQL字段小数类型的相关知识。
一、什么是字段小数类型字段小数类型是一种用于存储小数的数据类型,它可以存储指定精度和范围内的小数值。
在MySQL中,常用的字段小数类型有DECIMAL、FLOAT和DOUBLE。
1. DECIMAL类型:DECIMAL是一种精确的小数类型,它可以存储指定精度和范围内的小数值。
DECIMAL类型的精度可以在创建表时指定,例如DECIMAL(5,2)表示总共可存储5位数,其中2位是小数部分。
2. FLOAT类型:FLOAT是一种近似的小数类型,它可以存储单精度浮点数,即4个字节的浮点数。
FLOAT类型适用于存储范围较大的小数值,但它的精度会受到一定的限制。
3. DOUBLE类型:DOUBLE是一种近似的小数类型,它可以存储双精度浮点数,即8个字节的浮点数。
DOUBLE类型适用于存储范围较大且需要更高精度的小数值。
二、字段小数类型的使用场景字段小数类型在实际应用中有着广泛的使用场景,下面列举几个常见的应用场景。
1. 财务系统:财务系统中的金额、利率等数据通常需要保持较高的精度,因此可以使用DECIMAL类型来存储这些数据。
2. 科学计算:科学计算中需要处理大量的实验数据,这些数据可能包含小数部分,因此可以使用FLOAT或DOUBLE类型来存储这些数据。
3. 地理位置信息:地理位置信息中的经纬度数据通常是小数形式的,可以使用FLOAT 或DOUBLE类型来存储这些数据。
三、字段小数类型的注意事项在使用字段小数类型时,需要注意以下几点。
1. 精度和范围:在定义DECIMAL类型时,需要考虑所需的精度和范围,确保能够满足实际需求。
过大的精度和范围可能会浪费存储空间,而过小的精度和范围可能会导致数据丢失。
MySQL中TEXT与BLOB字段类型的区别
MySQL中TEXT与BLOB字段类型的区别⼀、类型。
BLOB是⼀个⼆进制⼤对象,可以容纳可变数量的数据。
有4种 BLOB类型:TINYBLOB、BLOB、MEDIUMBLOB和LONGBLOB。
它们只是可容纳值的最⼤长度不同。
有4种TEXT类型:TINYTEXT、TEXT、MEDIUMTEXT和LONGTEXT。
这些对应4种BLOB类型,有相同的最⼤长度和存储需求。
⼆、类型区别。
BLOB是⼀个⼆进制⼤对象,可以容纳可变数量的数据。
有4种BLOB类型:TINYBLOB、BLOB、MEDIUMBLOB和LONGBLOB。
它们只是可容纳值的最⼤长度不同。
有4种TEXT类型:TINYTEXT、TEXT、MEDIUMTEXT和LONGTEXT。
这些对应4种BLOB类型,有相同的最⼤长度和存储需求。
三、字符集、⼤⼩写。
BLOB 列被视为⼆进制字符串(字节字符串)。
TEXT列被视为⾮⼆进制字符串(字符字符串)。
BLOB列没有字符集,并且排序和⽐较基于列值字节的数值值。
TEXT列有⼀个字符集,并且根据字符集的校对规则对值进⾏排序和⽐较。
在TEXT或BLOB列的存储或检索过程中,不存在⼤⼩写转换。
四、严格模式。
当未运⾏在严格模式时,如果你为BLOB或TEXT列分配⼀个超过该列类型的最⼤长度的值值,值被截取以保证适合。
如果截掉的字符不是空格,将会产⽣⼀条警告。
使⽤严格SQL模式,会产⽣错误,并且值将被拒绝⽽不是截取并给出警告。
五、在⼤多数⽅⾯,可以将BLOB列视为能够⾜够⼤的VARBINARY列。
同样,可以将TEXT列视为VARCHAR列。
BLOB和TEXT在以下⼏个⽅⾯不同于VARBINARY和VARCHAR:· 当保存或检索BLOB和TEXT列的值时不删除尾部空格。
(这与VARBINARY和VARCHAR列相同)。
请注意⽐较时将⽤空格对TEXT进⾏扩充以适合⽐较的对象,正如CHAR和VARCHAR。
mysql中常用的字段类型
mysql中常用的字段类型
以下是MySQL中常用的字段类型:
1. INT (整型):用于存储整数值,可以指定长度。
常见的INT类型有INT、TINYINT、SMALLINT、MEDIUMINT、BIGINT等。
2. DECIMAL (定点数):用于存储精确的小数值,可以指定总共的位数和小数的位数。
3. FLOAT (浮点数):用于存储近似的小数值,可以指定总共的位数和小数的位数。
4. VARCHAR (可变长度字符串):用于存储可变长度的字符串,可以指定最大长度。
5. CHAR (固定长度字符串):用于存储固定长度的字符串,需要指定固定长度。
6. TEXT (文本):用于存储较长的文本数据,可以存储较大的数据量。
7. DATE (日期):用于存储日期,包括年、月、日。
8. TIME (时间):用于存储时间,包括小时、分钟、秒。
9. DATETIME (日期时间):用于存储日期和时间,包括年、月、日、小时、分钟、秒。
10. TIMESTAMP (时间戳):用于存储记录被创建或修改的时间,使用特定的格式进行存储。
这些是MySQL中常用的字段类型,根据实际需求选择合适的字段类型来存储数据。
information_schema.columns表结构
information_schema.columns是 MySQL 数据库中的一个虚拟表,它提供了关于数据库中所有表列的元数据信息。
以下是information_schema.columns表的主要字段及其描述:1. TABLE_CATALOG: 包含列数据的表的目录名。
2. TABLE_SCHEMA: 包含列数据的表的数据库名。
3. TABLE_NAME: 包含列数据的表的名称。
4. COLUMN_NAME: 列的名称。
5. ORDINAL_POSITION: 列在表中的位置(位置)。
6. COLUMN_DEFAULT: 列的默认值。
7. IS_NULLABLE: 指示列是否可以包含 NULL 值的字符串。
8. DATA_TYPE: 列的数据类型。
9. CHARACTER_MAXIMUM_LENGTH: 对于 CHAR 和 VARCHAR 数据类型的列,这是最大长度。
10. CHARACTER_OCTET_LENGTH: 对于 CHAR 和 VARCHAR 数据类型的列,这是最大字节长度。
11. NUMERIC_PRECISION: 对于数值列,这是总位数。
12. NUMERIC_SCALE: 对于数值列,这是小数点右边的位数。
13. DATETIME_PRECISION: 对于 DATETIME 和 TIMESTAMP 列,这是小数秒的位数。
14. CHARACTER_SET_NAME: 用于存储列值的字符集的名称。
15. COLLATION_NAME: 用于比较列值的排序规则的名称。
16. COLUMN_TYPE: 列的数据类型的完整声明。
17. COLUMN_KEY: 表示列是否被索引的字符串。
18. EXTRA: 关于列的额外信息。
19. PRIVILEGES: 描述该列权限的字符串。
20. COLUMN_COMMENT: 关于列的注释。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
MySql数据库的列类型(字段类型)MySQL数据库的表是一个二维表,由一个或多个数据列构成。
每个数据列都有它的特定类型,该类型决定了MySQL如何看待该列数据,我们可以把整型数值存放到字符类型的列中,MySQL则会把它看成字符串来处理。
MySQL中的列类型有三种:数值类、字符串类和日期/时间类。
从大类来看列类型和数值类型一样,都是只有三种。
但每种列类型都还可细分。
下面对各种列类型进行详细介绍。
数值类的数据列类型数值型的列类型包括整型和浮点型两大类。
TINYINT:1字节非常小的正整数,带符号:-128~127,不带符号:0~255 SMALLINT:2字节小整数,带符号:-32768~32767,不带符号:0~65535 MEDIUMINT:3字节中等大小的整数,带符号:-8388608~8388607,不带符号:0~16777215 INT:4字节标准整数,带符号:-2147483648~2147483647,不带符号:0~4294967295 BIGINT:8字节大整数,带符号:-9223372036854775808~9233372036854775807,不带符号:0~18446744073709551615FLOAT:4字节单精度浮点数,最小非零值:+-1.175494351E-38,最大非零值:+-3.402823466E+38DOUBLE:8字节双精度浮点数,最小非零值:+-2.2250738585072014E-308,最大非零值:+-1.7976931348623157E+308DECIMAL:M+2字节以字符串形式表示的浮点数,它的取值范围可变,由M和D的值决定。
整型数据列类型MySQL有五种整型数据列类型,即TINYINT,SMALLINT,MEDIUMINT,INT和BIGINT。
它们之间的区别是取值范围不同,存储空间也各不相同。
在整型数据列后加上UNSIGNED属性可以禁止负数,取值从0开始。
声明整型数据列时,我们可以为它指定个显示宽度M(1~255),如INT(5),指定显示宽度为5个字符,如果没有给它指定显示宽度,MySQL会为它指定一个默认值。
显示宽度只用于显示,并不能限制取值范围和占用空间,如:INT(3)会占用4个字节的存储空间,并且允许的最大值也不会是999,而是INT整型所允许的最大值。
浮点型数据列类型MySQL有三种浮点型数据列类型,分别是:FLOAT,DOUBLE和DECIMAL。
浮点类数据类型有一个最大可表示值和一个最小非零可表示值,最小非零可表示值决定了该类型的精确度。
MySQL 4.0.2版之后,FLOAT和DOUBLE都可以指定UNSIGNED属性。
当指定该属性时,取值范围不平移到正数区间,而只是简单地把浮点类型的负数部份去掉。
浮点类型也有M(1~255)和D(1~30,且不能大于M-2)。
分别表示显示宽度和小数位数。
M和D在FLOAT和DOUBLE中是可选的,默认,当MySQL版本大于3.23.6时,FLOAT和DOUBLE类型将被保存为硬件所支持的最大精度。
DECIMAL的M和D值在MySQL3.23.6后可选,默认D值为0,M值为10。
如何选择数值类数据列类型?为了节省存储空间和提高数据库处理效率,我们应根据应用数据的取值范围来选择一个最适合的数据列类型。
如果把一个超出数据列取值范围的数存入该列,则MySQL就会截短该值,如:我们把99999存入SMALLINT(3)数据列里,因为SMALLINT(3)的取值范围是-32768~32767,所以就会被截短成32767存储。
显示宽度3不会影响数值的存储。
只影响显示。
对于浮点数据列,存入的数值会被该列定义的小数位进行四舍五入。
如把一个1.234存入FLOAT(6.1)数据列中,结果是1.2。
DECIMAL与FLOAT和DOUBLE的区别是:DECIMAL类型的值是以字符串的形式被储存起来的,它的小数位数是固定的。
它的优点是,不会象FLOAT和DOUBLE类型数据列那样进行四舍五入而产生误差,所以很适合用于财务计算;而它的缺点是:由于它的存储格式不同,CPU不能对它进行直接运算,从而影响运算效率。
DECIMAL(M,D)总共要占用M+2个字节。
数值类数据列的属性ZEROFILL属性适用于所有数值类数据列类型,作用是,如果数值的宽度小于定义的显示宽度,则在数值前填充0。
UNSIGNED属性不允许数据列出现负数。
AUTO_INCREMENT属性可生成独一无二的数字序列。
只对整数类的数据列有效。
NULL和NOT NULL属性设置数据列是否可为空。
DEFAULT属性可为数据列指定默认值。
//////////////////////////////////////////////////////字符串类数据列类型字符串可以用来表示任何一种值,所以它是最基本的类型之一。
我们可以用字符串类型来存储图象或声音之类的二进制数据,也可存储用gzip压缩的数据。
下表介绍了各种字符串类型:CHAR[(M)] M字节 M字节V ARCHAR[(M)] M字节 L+1字节TINYBLOD,TINYTEXT 2^8-1字节 L+1字节BLOB,TEXT 2^16-1字节 L+2MEDIUMBLOB,MEDIUMTEXT 2^24-1字节 L+3LONGBLOB,LONGTEXT 2^32-1字节 L+4ENUM('value1','value2',...) 65535个成员 1或2字节SET('value1','value2',...) 64个成员 1,2,3,4或8字节L+1、L+2是表示数据列是可变长度的,它占用的空间会根据数据行的增减面则改变。
数据行的总长度取决于存放在这些数据列里的数据值的长度。
L+1或L+2里多出来的字节是用来保存数据值的长度的。
在对长度可变的数据进行处理时,MySQL要把数据内容和数据长度都保存起来。
如果把超出字符串最大长度的数据放到字符类数据列中,MySQL会自动进行截短处理。
ENUM和SET类型的数据列定义里有一个列表,列表里的元素就是该数据列的合法取值。
如果试图把一个没有在列表里的值放到数据列里,它会被转换为空字符串(“”)。
字符串类型的值被保存为一组连续的字节序列,并会根据它们容纳的是二进制字符串还是非二进制字符而被区别对待为字节或者字符:二进制字符串被视为一个连续的字节序列,与字符集无关。
MySQL把BLOB数据列和带BINARY属性的CHAR和V ARCHAR数据列里的数据当作二进制值。
非二进制字符串被视为一个连续排列的字符序列。
与字符集有关。
MySQL把TEXT列与不带BINARY属性的CHAR和V ARCHAR数据列里的数据当作二进制值对待。
在MySQL4.1以后的版本中,不同的数据列可以使用不同的字符集。
在MySQL4.1版本以前,MySQL用服务器的字符集作为默认字符集。
非二进制字符串,即我们通常所说的字符串,是按字符在字符集中先后次序进行比较和排序的。
而二进制字符串因为与字符集无关,所以不以字符顺序排序,而是以字节的二进制值作为比较和排序的依据。
下面介绍两种字符串的比较方式:二进制字符串的比较方式是一个字节一个字节进行的,比较的依据是两个字节的二进制值。
也就是说它是区分大小写的,因为同一个字母的大小写的数值编码是不一样的。
非二进制字符串的比较方式是一个字符一个字符进行的,比较的依据是两个字符在字符集中的先后顺序。
在大多数字符集中,同一个字母的大小写往往有着相同的先后顺序,所以它不区分大小写。
二进制字符串与字符集无关,所以无论按字符计算还是按字节计算,二进制字符串的长度都是一样的。
所以V ARCHAR(20)并不表示它最多能容纳20个字符,而是表示它最多只能容纳可以用20个字节表示出来的字符。
对于单字节字符集,每个字符只占用一个字节,所以这两者的长度是一样的,但对于多字节字符集,它能容纳的字符个数肯定少于20个。
CHAR和V ARCHARCHAR和V ARCHAR是最常用的两种字符串类型,它们之间的区别是:CHAR是固定长度的,每个值占用相同的字节,不够的位数MySQL会在它的右边用空格字符补足。
V ARCHAR是一种可变长度的类型,每个值占用其刚好的字节数再加上一个用来记录其长度的字节即L+1字节。
CHAR(0)和V ARCHAR(0)都是合法的。
V ARCHAR(0)是从MySQL4.0.2版开始的。
它们的作用是作为占位符或用来表示各种on/off开关值。
如何选择CHAR和V ARCHAR,这里给出两个原则:如果数据都有相同的长度,选用VARCHAR会多占用空间,因为有一位用来存储其长度。
如果数据长短不一,选用V ARCHAR能节省存储空间。
而CHAR不论字符长短都需占用相同的空间,即使是空值也不例外。
如果长度出入不大,而且是使用MyISAM或ISAM类型的表,则用CHAR会比V ARCHAR 好,因为MyISAM和ISAM类型的表对处理固定长度的行的效率高。
在一个数据表里,只要有一个数据列的长度是可变的,则所有数据列的长度将是可变的。
MySQL会进行自动地转换。
一个例外,CHAR长度小于4的不会进行自动转换,因为MySQL 会认为这样做没必要,节省不了多少空间。
反而MySQL会把大量长度小的V ARCHAR转换成CHAR,以减少空间占用量。
BLOB和TEXTBLOB是二进制字符串,TEXT是非二进制字符串。
两者都可存放大容量的信息。
有关BLOB和TEXT索引的建立:BDB表类型和MySQL3.23.2以上版本的MyISAM表类型允许在BLOB和TEXT数据列上建立索引。
ISAM、HEAP和InnoDB表不支持大对象列的索引。
使用BLOB和TEXT应注意的问题:由于这两个列类型所存储的数据量大,所以删除和修改操作容易在数据表里产生大量的碎片,需定期运行OPTIMIZE TABLE以减少碎片和提高性能。
如果使用的值非常巨大,就需对服务器进行相应的优化调整,增加max_allowed_packet参数的值。
对那些可会用到变些巨大数据的客户程序,也需加大它们的数据包大小。
ENUM和SETENUM和SET都是比较特殊的字符串数据列类型,它们的取值范围是一个预先定义好的列表。
ENUM或SET数据列的取值只能从这个列表中进行选择。
ENUM和SET的主要区别是:ENUM只能取单值,它的数据列表是一个枚举集合。
它的合法取值列表最多允许有65535个成员。
例如:ENUM("N","Y")表示,该数据列的取值要么是"Y",要么就是"N"。