目录
前言:
1.mysql中常用的数据类型:
1.1数值类型:
1.1.1INT:
1.1.2FLOAT 和 DOUBLE:
1.1.3DECIMAL (或 NUMERIC):
1.2日期和时间类型:
1.2.1DATE:
1.2.2TIME:
1.2.3DATETIME:
1.2.4TIMESTAMP:
1.2.5YEAR:
1.3字符串类型:
1.3.1CHAR:
1.3.1VARCHAR:
1.3.1TEXT:
1.3.1BINARY 和 VARBINARY:
1.3.1BLOB:
1.4空间类型:
1.4.1GEOMETRY:
1.4.2POINT:
1.4.3LINESTRING:
1.4.4POLYGON:
1.4.5MULTIPOINT、MULTILINESTRING、MULTIPOLYGON:
1.4.6GEOMETRYCOLLECTION:
1.4.7不过关于使用这个空间类型的时候还有几个点要注意一下:
1.5枚举和集合类型:
1.5.1枚举(ENUM)类型:
1.5.1.1定义:
1.5.1.2使用场景:
1.5.1.3特点:
1.5.1.3.1只能选择列表中的一个值。
1.5.1.3.1如果尝试插入不在列表中的值,MySQL会报错(除非该字段被设置为可NULL,并且插入了NULL值)。
1.5.1.3.1存储效率高,因为实际存储的是值的索引而不是完整的字符串。
1.5.2集合(SET)类型:
1.5.2.3.1可以选择列表中的零个或多个值。
1.5.2.3.1值在SET列中以逗号分隔的字符串形式存储。
1.5.2.3.1MySQL提供了一些特定的函数来操作和查询SET类型的数据,如FIND_IN_SET()等。
1.5.2.3.1与ENUM相比,SET类型更加灵活,但存储效率可能稍低一些,因为需要存储多个值的索引。
1.6JSON类型:
1.6.1JSON数据类型的优势:
1.6.1.1验证:
1.6.1.1查询:
1.6.1.1索引:
1.6.1.1更新:
2主键primary key:
3.DDL之表操作:table:
3.1创建表(CREATE TABLE):
3.2删除表(DROP TABLE):
3.3 修改表结构(ALTER TABLE):
3.3.1修改表名:
3.3.2添加字段:
3.3.3删除字段:
3.3.4修改字段名和数据类型:
3.3.5或者只修改数据类型:
3.4.查询表结构(DESCRIBE 或 DESC):
结语:
前言:
在昨天我们已经对MySQL数据库有了一些基础的认识,接下来我们将继续去分享关于MySQL数据库的一些内容.由于这是我个人的一点学习笔记,难免会有所遗漏希望大家能够多多包涵,同时也希望大家在评论区和谐讨论.
1.mysql中常用的数据类型:
1.1数值类型:
1.1.1INT:
用于整数。有符号的范围是-2147483648到2147483647。无符号的范围是0到4294967295。还有其他大小的整数类型,如TINYINT, SMALLINT, MEDIUMINT, BIGINT。
1.1.2FLOAT 和 DOUBLE:
用于浮点数。DOUBLE的精度比FLOAT高。
1.1.3DECIMAL (或 NUMERIC):
用于存储精确的小数,如货币数据。
1.2日期和时间类型:
1.2.1DATE:
日期,格式为'YYYY-MM-DD'。
1.2.2TIME:
时间,格式为'HH:MM:SS'。
1.2.3DATETIME:
日期和时间组合,格式为'YYYY-MM-DD HH:MM:SS'。
1.2.4TIMESTAMP:
时间戳,与UNIX时间戳相似,但表示为'YYYY-MM-DD HH:MM:SS'格式。它会自动存储时区信息,并根据MySQL服务器的时区进行转换。
1.2.5YEAR:
年份,可以用2位('YY')或4位('YYYY')格式表示。
1.3字符串类型:
1.3.1CHAR:
定长字符串。如果存储的字符串长度小于定义的长度,MySQL会用空格填充剩余的空间。
1.3.1VARCHAR:
变长字符串。只使用必要的空间来存储字符串,不会像CHAR那样填充空格。
1.3.1TEXT:
用于存储长文本数据。还有其他大小的文本类型,如TINYTEXT, MEDIUMTEXT, LONGTEXT。
1.3.1BINARY 和 VARBINARY:
类似于CHAR和VARCHAR,但存储的是二进制数据。
1.3.1BLOB:
用于存储二进制大对象。还有其他大小的BLOB类型,如TINYBLOB, MEDIUMBLOB, LONGBLOB。
1.4空间类型:
空间数据类型包括:
1.4.1GEOMETRY:
这是一个基础的空间数据类型,用于表示任何类型的空间对象。实际上,它并不经常直接用于列定义,而是作为其他空间数据类型的超类存在。
1.4.2POINT:
表示一个二维空间中的点,由X和Y坐标组成。
1.4.3LINESTRING:
表示一条由两个或多个点构成的线。这些点按顺序连接。
1.4.4POLYGON:
表示一个多边形,由一条或多条封闭的线(即环)组成。多边形内部可以包含洞(由内部环表示)。
1.4.5MULTIPOINT、MULTILINESTRING、MULTIPOLYGON:
这些类型分别表示点、线、多边形的集合。
1.4.6GEOMETRYCOLLECTION:
表示任何类型的空间对象的集合。
1.4.7不过关于使用这个空间类型的时候还有几个点要注意一下:
MySQL提供了空间函数来与这些空间数据类型一起使用,如ST_Distance()
来计算两个空间对象之间的距离,ST_Area()
来计算多边形的面积等。此外,MySQL还支持空间索引,这可以大大加速涉及空间数据的查询。
需要注意的是,为了使用空间数据类型和函数,MySQL服务器必须配置有对空间扩展的支持,这通常是默认情况。在创建表时,您可以使用上述数据类型之一来定义列,然后使用空间函数来查询和操作这些数据。
1.5枚举和集合类型:
1.5.1枚举(ENUM)类型:
1.5.1.1定义:
ENUM
是一个字符串对象,它的值必须从预定义的值列表中选取。在创建表时,需要明确指定这个列表。
1.5.1.2使用场景:
通常用于表示固定的、不可更改的值集合,例如性别(男、女)、订单状态(待支付、已支付、已发货、已完成)等。
1.5.1.3特点:
1.5.1.3.1只能选择列表中的一个值。
1.5.1.3.1如果尝试插入不在列表中的值,MySQL会报错(除非该字段被设置为可NULL,并且插入了NULL值)。
1.5.1.3.1存储效率高,因为实际存储的是值的索引而不是完整的字符串。
1.5.2集合(SET)类型:
1.5.2.1定义:SET
也是一个字符串对象,但它的值可以从预定义的值列表中选取多个。与ENUM
类似,在创建表时需要指定这个列表。
1.5.2.2使用场景:通常用于表示可以具有多个选项的字段,例如用户的兴趣爱好(阅读、旅行、音乐等)。
1.5.2.3特点:
1.5.2.3.1可以选择列表中的零个或多个值。
1.5.2.3.1值在SET
列中以逗号分隔的字符串形式存储。
1.5.2.3.1MySQL提供了一些特定的函数来操作和查询SET
类型的数据,如FIND_IN_SET()
等。
1.5.2.3.1与ENUM
相比,SET
类型更加灵活,但存储效率可能稍低一些,因为需要存储多个值的索引。
1.6JSON类型:
用于存储JSON格式的数据。MySQL提供了许多函数来查询和操作JSON数据。
1.6.1JSON数据类型的优势:
1.6.1.1灵活性:
JSON数据类型允许您存储各种结构的数据,包括数组、对象和嵌套结构。
1.6.1.1验证:
MySQL提供了函数来验证JSON数据的格式是否正确。
1.6.1.1查询:
您可以使用MySQL提供的JSON函数来查询JSON数据中的特定值或子文档。
1.6.1.1索引:
MySQL支持对JSON数据中的特定字段创建索引,以加快查询速度。
1.6.1.1更新:
您可以使用JSON函数来更新JSON数据中的特定值,而无需重写整个JSON对象。
2主键primary key:
2.1唯一性:
主键的值必须是唯一的。这意味着在整个表中,没有任何两个记录可以有相同的主键值。
2.1非空(Not Null):
主键字段不能存储空值(NULL)。每个记录都必须有一个对应的主键值。
2.2稳定性:
一旦为某个记录分配了主键值,就不应该更改它。主键值的稳定性对于维护数据完整性和关系数据库的参照完整性至关重要。
2.3单字段或多字段:
主键可以由表中的单个字段组成,这种情况下称为单字段主键(或简单主键)。它也可以由多个字段组合而成,称为复合主键。在复合主键中,组合起来的字段值在整个表中必须是唯一的,尽管单独的字段可能包含重复值。
2.4自动增长:
在某些数据库管理系统中,主键字段可以被设置为自动增长,这样每当向表中插入新记录时,数据库会自动为新记录分配一个唯一的主键值。这通常用于整型主键。
2.5数据完整性:
主键的存在有助于维护数据的完整性和准确性,因为主键约束确保了每个记录的唯一标识。
2.6性能优化:
由于主键约束创建了索引,因此在基于主键值的查询上,数据库检索速度通常会更快
3.DDL之表操作:table:
3.1创建表(CREATE TABLE):
这个命令用于创建一个新的数据表。语法结构通常为CREATE TABLE 表名 (字段名1 数据类型, 字段名2 数据类型, ...);
例如,CREATE TABLE Students (ID int, Name varchar(255), Age int);
就会创建一个包含ID、Name和Age三个字段的Students表。
3.2删除表(DROP TABLE):
这个命令用于删除一个已存在的数据表。语法结构为DROP TABLE 表名;
例如,DROP TABLE Students;
就会删除名为Students的表。注意,这个操作会永久删除表及其所有数据,且无法恢复。
3.3 修改表结构(ALTER TABLE):
这个命令用于修改已存在数据表的结构。具体的操作包括:
3.3.1修改表名:
ALTER TABLE 旧表名 RENAME TO 新表名;
3.3.2添加字段:
ALTER TABLE 表名 ADD 列名 数据类型;
3.3.3删除字段:
ALTER TABLE 表名 DROP COLUMN 列名;
3.3.4修改字段名和数据类型:
ALTER TABLE 表名 CHANGE 旧列名 新列名 新数据类型;
3.3.5
或者只修改数据类型:
ALTER TABLE 表名 MODIFY 列名 新数据类型;
3.4.查询表结构(DESCRIBE 或 DESC):
这个命令用于查询已存在数据表的结构。语法结构为DESCRIBE 表名;
或DESC 表名;
执行后,将返回表的所有字段、数据类型和索引等信息。
结语:
今天关于MySQL数据库的内容就写到这里了,这些都是我自己学习的一些成果,同时也欢迎大家的斧正.