Code前端首页关于Code前端联系我们

mysql数据库数据类型性别,如何在mysql数据库中定义性别

terry 2年前 (2023-09-30) 阅读数 41 #Mysql
文章标签 Mysql

本文内容列表:

  • 1、mysql有哪些数据类型?
  • 2、MySQL数据库中创建的表中性别(gender)字段的类型
  • 3.MySQL基本数据类型118-124
  • 4.mysql性别使用什么类型?

mysql中有哪些数据类型

1。数值类型

Mysql支持标准SQL中的所有数值类型,包括严格数据类型(INTEGER、SMALLINT、DECIMAL、NUMBERIC)和近似数值数据类型(FLOAT、REAL、DOUBLE PRECISION),并在此基础上进行扩展。

扩展后,增加了TINYINT、MEDIUMINT、BIGINT三种不同长度的整数,并增加了BIT类型,用于存储位数据。

整数类型 字节范围(有符号) 范围(无符号) 用途

TINYINT 1 字节 (-128, 127) (0, 255) 小整数

SMALLINT 2 字节 (-32 3267 6,268) 0, 65 535 ) 大整数值

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

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

BIGINT 8 字节 (-9 233 372 036 854 775 808, 9 223 372 036 7, 4 075 808, 9 223 372 036 7, 4 7 5 8 4 7 5 5 073 709 551 615) 最大整数值

FLOAT 4 字节 (-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) 5, (341 E+38) 5, (491 .3 466 E+38) 单精度浮点值

DOUBLE 8 个字节 (1.797 693 134 862 315 7 E+308, 2.225 073 858 507 201 4 E-3028), 2.225 073 858 507 201 4 E-3 02 28 ), 3028, 20, 75 -308。 IMAL(M, D ), if MD, M+2 else D+2 取决于 M 和 D 的值 取决于 M 和 D 的值 十进制值

INT 类型:

MySQL 中的 5 种大整数类型是 TINYINT、SMALLINT、MEDIUMINT、INT 和 BIGINT。这些类型基本上是相同的,只是它们存储的值的大小不同。

MySQL 以可选显示宽度指示器的形式扩展了 SQL 标准,以便当从数据库检索值时,该值可以扩展到指定的长度。例如,指定某个字段的类型为 INT(6),

确保从数据库检索时包含少于 6 位数字的值会自动用空格填充。请注意,使用宽度指示器不会影响字段的大小或其可以存储的值的范围。

如果我们需要在超出允许范围的字段中存储数字,MySQL 会在存储之前将其截断到接近允许范围的末尾。另一个特别之处是,

MySQL 在将非法值插入表之前会自动将值更改为 0。

UNSIGNED 修饰符指定该字段仅保存正值。由于不需要存储数字的正负号,因此在存储时可以节省一“位”空间。这增加了该字段可以存储的值的范围。

ZEROFILL 修饰符指定可以使用 0(不是空格)来填充输出值。使用此修饰符可以防止 MySQL 数据库存储负值。

FLOAT、DOUBLE 和 DECIMAL 类型

MySQL 支持的三种浮点类型是 FLOAT、DOUBLE 和 DECIMAL 类型。 FLOAT 数值类型用于表示单精度浮点值,DOUBLE 数值类型用于表示双精度浮点值。

与整数一样,这些类型也采用附加参数:显示宽度指示器和小数点指示器。例如,语句FLOAT(7,3)指定显示的值不超过7位,小数点后3位。

对于小数点后位数超出允许范围的值,MySQL会在插入前自动将其四舍五入到最接近的值。

DECIMAL 数据类型用于需要非常高精度的计算。该类型允许指定数值的精度和计数方法作为选择参数。这里的精度是指该值存储的有效数字总数

,而计数方法是指小数点后的位数。例如,语句 DECIMAL(7,3) 指定存储的值不超过 7 位且小数点后不超过 3 位。

省略 DECIMAL 数据类型的精度和计数方法修饰符将导致 MySQL 数据库将标识为该数据类型的所有字段的精度设置为 10,将计数方法设置为 0。

UNSIGNED 和 ZEROFILL 修饰符也可用于 FLOAT、DOUBLE 和 DECIMAL 数据类型。并且效果与INT数据类型相同。

2。字符串类型

MySQL提供了8种基本字符串类型,分别是:CHAR、VARCHAR、BINARY、VARBINARY、BLOB、TEXT、ENUM、SET等字符串类型。

可以存储从单个字符到大块文本或二进制字符串的数据。

字符串类型 字节大小说明及存储条件

CHAR 0-255 字节 定长字符串

VARCHAR 0-255 字节 变长字符串

TINYBLOB 0-255 字节 不超过 5 字节的二进制字符串 TINYTEXT 0-255 字节短文本字符串

BLOB 0-65535 字节二进制形式长文本数据

TEXT 0-65535 字节长文本数据

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

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

9 LOG 9-4 LOG 字节非常大的文本数据 二进制形式

LONGTEXT 0-4 294 967 295 字节 非常大的文本数据

VARBINARY(M) 允许 0-M 字节的固定长度字节字符串,值的长度 + 1 字节

BINARY(M) M 允许长度为 0-M 字节的固定长度字节字符串

CHAR 和 VARCHAR 类型

CHAR 类型用于固定长度字符串,必须在括号内定义大小修改。此大小修饰符的范围为 0-255。大于指定长度的值将被截断,而小于指定长度的值将用空格填充。

CHAR 类型可以使用 BINARY 修饰符。当用于比较运算时,该修饰符使 CHAR 以二进制形式参与运算,而不是以传统的区分大小写的方式。

CHAR 类型的一个变体是 VARCHAR 类型。它是可变长度字符串类型,并且还必须具有 0-255 范围内的指示符。 CHAR 和 VARCHGAR 的区别在于 MYSQL 数据库处理

指示符的方式:CHAR 将此大小视为值的大小,如果长度不足,则用空格填充。另一方面,VARCHAR 类型将此视为最大值,并且仅存储存储字符串实际需要的长度

的值(加上一个额外的字节来存储字符串本身的长度)。因此,比指示符长度短的 VARCHAR 类型不会用空格填充,但比指示符长的值仍然会被截断。

因为VARCHAR类型可以根据当前内容动态改变存储值的长度,所以当你不确定一个字段需要多少个字符时使用VARCHAR类型可以大大节省空间并提高存储效率的提高。

使用 BINARY 修饰符时,VARCHAR 类型与 CHAR 类型相同。

TEXT 和 BLOB 类型

对于需要超过255个字段的字段,MySQL提供两种类型:TEXT和BLOB。根据存储数据的大小,它们都有不同的子类型。这些大数据用于存储文本块或二进制数据类型,例如图像和声音文件。

TEXT 和 BLOB 类型的分类和比较存在差异。 BLOB 类型区分大小写,而 TEXT 不区分大小写。大小修饰符不用于不同的 BLOB 和 TEXT 子类型。

大于指定类型支持的最大范围的值会被自动截断。

3。日期和时间类型

MySQL 提供了 5 种不同的数据类型,在处理日期和时间类型值时可供选择。它们可以分为简单日期和时间类型和混合日期和时间类型。

根据所需的精度,子类型可以在任何子类型中使用,并且 MySQL 具有将各种输入格式转换为标准格式的内置功能。

类型大小(字节)范围格式用法

DATE 4 1000-01-01/9999-12-31 YYYY-MM-DD 日期值

TIME 3 '-838:59:839'/' : 59 :59' HH:MM:SS 时间值或持续时间

YEAR 1 1901/2155 YYYY 年份值

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

TIMESTAMP 4 1970-01-01 00:00:00/Sometime in 2037 YYYYMMDD HHMMSS 混合日期和时间值、时间戳 DATE 、TIME 和 TEAR 类型

MySQL 使用 DATE 和 TEAR 类型来存储简单的日期值,使用 TIME 类型来存储时间值。这些类型可以描述为不带分隔符的字符串或整数序列。当描述为字符串时,

DATE 类型的值应使用破折号作为分隔符分隔,TIME 类型的值应使用冒号作为分隔符分隔。

需要注意的是,不带冒号分隔符的 TIME 类型值被 MySQL 理解为持续时间,而不是时间戳。

MySQL 还对日期年份中的两位数值或 SQL 语句中输入的 TEAR 类型的两个数字执行最大解释。因为所有TEAR类型的值都必须用4个数字来存储。

MySQL 正在尝试将 2 位数年份转换为 4 位数值。将 00-69 范围内的值转换为 2000-2069 范围内的值。将 70-99 范围内的值转换为 1970-1979。

如果MySQL自动转换的值不满足我们的需求,请输入4 位数年份。

DATEYIME 和 TIMESTAMP 类型

除了日期和时间数据类型之外,MySQL 还支持两种混合类型,DATEYIME 和 TIMESTAMP。它们可以将日期和时间存储为单个值。

这两种类型通常用于自动存储当前日期和时间的时间戳,并且可以在需要执行大量数据库事务并建立审计跟踪以进行调试和审查的应用程序中正常工作。

如果我们没有显式地为TIMESTAMP类型的字段赋值,或者它被赋值为空值。 MySQL 会自动用系统的当前日期和时间填充它。

复合类型

MySQL 还支持两种复合数据类型:ENUM 和 SET,它们扩展了 SQL 规范。尽管这些类型在技术上是字符串类型,但它们可以被视为不同的数据类型。

ENUM 类型只允许从集合中获取一个值;而SET类型允许从集合中检索任意数量的值。

ENUM 类型

ENUM 类型有点类似于单个选项,因为它只允许接收集合中的一个值。在处理相互排斥的数据(例如人类性别)时更容易理解。 ENUM 类型字段可以从集合接收值或使用空值。

除此之外的输入将导致 MySQL 在此字段中放置空字符串。另外,如果嵌入值的大小写与集合中的值的大小写不匹配,MySQL会自动使用嵌入值的大小写将其转换为与集合中的大小写一致的值。类型

ENUM可以在系统内部存储为数字,并且索引从1开始。一个ENUM类型最多可以包含65536个元素,其中一个元素被MySQL保留用于存储错误信息,

该错误值由索引 0 或空字符串表示。

MySQL认为ENUM类型集合中出现的值是合法的输入,任何其他输入都会失败。这表明通过搜索包含空字符串或相应数字索引 0 的行可以轻松找到错误记录的位置。 。 SET 类型可以从预定义的集合中获取任意数量的值。就像 ENUM 类型一样,任何将非预定义值插入 SET 类型字段的尝试都会导致

MySQL 返回空字符串。如果插入一条记录同时包含合法元素和非法元素,MySQL将保留合法元素并删除非法元素。

一个 SET 类型最多可以包含 64 个元素。在 SET 元素中,值存储为代表其相应元素的离散“位”序列。位是创建有序元素集合的一种简单而有效的方法。

而且它还会删除重复元素,使得 SET 类型中不可能包含两个相同的元素。

如果要从SET类型字段中查找非法记录,只需查找包含空字符串或二进制值0的行即可。这样,当我们面对具体的应用时,我们就可以根据相应的特点选择合适的数据类型,从而基于应用力求以更小的存储成本获得更高的数据库性能。

MySQL数据库中创建的表中性别(gender)字段的类型

创建表t_user (

id INT(11) NOT NULL AUTO_INCRMENT,

sex CHAR(2) NULL,

主键(ID),性别在','女')));

扩展信息:

1。数据库:在MySQL中,要存储数据,必须从数据库开始,所以必须先创建数据库,但由于学校的MySQL服务器拥有的账户有限。

2。学生不允许创建数据库。因此,信息中心预先为每个学生的账户建立了一个名为账户名的数据库。但我们要明白,创建数据库的语句是CREATE DATABASE数据库名

3、数据表结构:创建数据表的第一步是创建数据表结构。数据表结构的内容包括:不同的字段、每个字段的名称、字段的类型、字段的长度和字段的数量。特性。

4。字段:是构成数据表结构的必要元素。一列数据就是一个字段。

5。字段名称:用于描述字段的名称。可以用中文、英文字母、数字等字符来描述。

6。字段类型:一种限制数据的方式,即每个字段下的数据必须是同一类型。

7。字段长度:这是每个列字段中数据点的数量。

mysql基本数据类型118-124

#通用数据类型

/*

数字类型:                                                                                      字符类型:

短文本:char、varchar

较长文本:text、blob(较长的二进制数据)

日期类型:

*/

#1。塑料

/*

分类:

Tinyint、Smallint、MediumImint、INT/Integer、Bigint

1 2 3 4 8

特点: - 无符号 有符号,有符号 默认情况下。符号,必须添加无符号关键字

-如果插入的值超出整数范围,则报越界异常,插入临界值

-如果不设置长度则为,有一个默认长度

- 长度代表显示器的最大宽度。如果不够的话会在左边补0,但是一定要用零填充

*/

#1。如何放置无符号和有符号

CREATE TABLE tab_int(

t1 INT

t2 INT ZEROFILL 【无符号】

);

#2.十进制

/*

浮点类型

Float(M, D)

double(M , D)

定点类型

dec(M, D) de❝ (M , D )

功能:

-M: 整数+小数部分

-D:小数部分

- M和D都可以省略

如果是十进制,M默认为10,D默认为0

如果是float和double,则基于嵌入值的精度。确定精度

定点型精度更高。如果您对输入值的精度要求高于货币计算,请考虑

*/

CREATE TABLE tab_float (

) f1 FLOAT(5, 2)

f2 DOUBLE (5, 2) (5 )

f3 DECIMAL(5, 2)

)

#原理:

/*

选择的类型越简单越好,并且可以存储的值类型越小,更好

*/

#3。字符类型

/*

较短的文本:

char

varchar

较长的文本: L Texto BLOB(较大的二进制)

功能:书写方法的拼写

CHAR CHAR (M) 固定长度字符可以包含的最大字符数。高

varchar Carchar(M) 最大字符数,不能省略 可变长度字符 更经济 低

*/

CREATE TABLE tab_char(

c1 ENUM('a','b' ,' c')

)

表创建tab_set(

s1设置('a','b','c','d')

)

#4。日期类型

特点:

DateTime 8 10000-9999 不在 TimestAmp 4 1970-2038 下

/*

含义:用于限制表中数据的限制,以保证表中数据的准确性和可靠性

类别:六大约束

NOT NULL:不为空,用于保证该字段的值不能为空,如姓名、学号等。

Default:默认,用于保证该字段有默认值,如性别

Primary Key:主键,用于保证该字段的值唯一且不为空,如学号等。

unique:唯一,用于保证该字段的值唯一,可以为空,如座位号

Check:检查约束[mysql不支持],如年龄,性别

国外key:外键,用于约束两个表之间的关系,用于保证该字段的值必须来自主表关联列的值,在从表中添加外键约束,用于值主表中要引用的列,例如员工表的部门号、员工表的工号

添加约束的时机:

1. 创建表时

2. 修改表时

约束 添加猫:

列级约束:

语法上支持六种约束,但外键约束不起作用

表级约束:

除了非空和默认外,其他都支持? 语法:

只需在字段名称后面添加约束类型并输入

仅支持:

*/

#1。添加分层约束

创建表stuinfo(

id int 主键, #主键

StuName varchar(20) not null, #非空

sex char(1) check(gender='male' ORender='female'), #Check Constraint

Seat int unique,#唯一约束

age int default 18,#默认约束

MajorId int 外键引用 Major (id) #外键

)

) id int Primary key ,

MajorName varchar (20)

)

desc Stuinfo #查看表结构 unique

#2.添加表级约束

create table Stuinfo (

id int

StuName varchar(20)

性别 char(1)

Seat int ,

MajorId int

约束 pk 主键 (ID), #主键

约束 uq unique (座位), # unique key

约束 ck check (gender = 'male' 或 sex = 'female'), #check

约束 fk_stuinfo_major 外键(majorid) 参考major(id) #foreign key

)

如何用于mysql性别的类型

mysql没有enum数据类型吗?

创建表biao(

sex enum('男','女') not null;

);

版权声明

本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。

热门