MySQL数据类型详解:存储范围与用途

0 下载量 42 浏览量 更新于2024-08-04 收藏 60KB DOC 举报
MySQL是一种广泛使用的开源关系型数据库管理系统,其数据类型设计灵活且强大,能够支持各种不同类型的数据存储和处理。本文档详细介绍了MySQL中的主要数据类型及其特性,这些类型按照长度和用途被分类: 1. 整数类型: - TINYINT(M):1字节长度,无符号时用于存储0到255的数值,有符号时范围为-128到127。 - BIT/BOOL/BOOLEAN:无具体长度,但通常用于存储布尔值。 - SMALLINT(M):2字节,无符号时存储0到65535,有符号时范围为-32768到32767。 - MEDIUMINT(M):3字节,同上,但范围更大。 - INT(M):4字节,无符号时最大值为4294967295,有符号时为-2147483648到2147483647。 - BIGINT(M):8字节,无符号时最大值为18446744073709551615,有符号时范围宽广。 2. 浮点数类型: - FLOAT(precision):4或8字节,根据precision确定精度,如果小于等于24位,转换为单精度浮点数,大于24且小于等于53位则为双精度浮点数。 - FLOAT(M,D):单精度浮点数,M表示总长度,D表示小数部分位数。 - DOUBLE(M,D):双精度浮点数,同上。 - REAL:等同于DOUBLE。 3. 数字和货币类型: - DECIMAL(M,D),DEC,NUMERIC,FIXED:未打包的浮点数,M+1或M+2字节长度,M为整数部分位数,D为小数部分位数。 4. 日期和时间类型: - DATE:存储日期,格式为YYYY-MM-DD。 - DATETIME:存储日期和时间,同样格式。 - TIMESTAMP:类似DATETIME,但通常用于记录操作时间。 - TIME:存储时间,格式为HH:MM:SS。 - YEAR:仅存储年份,格式为YYYY。 5. 字符串类型: - CHAR(M):定长字符串,M表示字符长度。 理解并正确选择MySQL的数据类型对于数据库设计至关重要,它直接影响到数据的存储效率、查询性能以及应用程序的兼容性。在实际操作中,需要根据业务需求来确定最合适的数据类型,以确保数据的一致性和准确性。同时,了解这些数据类型的限制和转换规则也有助于避免潜在的问题和错误。

# See: https://doc.scrapy.org/en/latest/topics/item-pipeline.html import pymysql import redis from spiders.items import TravelsItem, TravelsDetailItemclass Travels(object): @staticmethod def insert_db(item, pipeline_obj): sql = ''' INSERT travels(id,name,authorId,viewCount,likeCount, commentCount,publishTime,picUrl,authorName, authorHeadImg,authorIndentity,hasLike) VALUES('{}','{}','{}','{}','{}','{}','{}','{}','{}','{}','{}','{}') '''.format(item["id"], item["name"], item["authorId"], item["viewCount"], item["likeCount"], item["commentCount"], item["publishTime"], item["picUrl"], item["authorName"], item["authorHeadImg"], item["authorIndentity"], item["hasLike"]) pipeline_obj.mysql_conn.query(sql ) pipeline_obj.mysql_conn.commit() @staticmethod def insert_redis(item, pipeline_obj): detail_url = "http://www.tuniu.com/trips/" + str(item["id"]) pipeline_obj.redis_obj.rpush("tuniu:detail_urls", detail_url) class TravelsDetail(object): @staticmethod def insert_db(item, pipeline_obj): sql = ''' INSERT travels_detail(id,taglist,destination,price)VALUES('{}','{}','{}','{}') '''.format(item["id"], item["taglist"], item["destination"], item["price"]) pipeline_obj.mysql_conn.query(sql) pipeline_obj.mysql_conn.commit()class TuniutripsPipeline(object): def open_spider(self, spider): self.mysql_conn = pymysql.connect(host="localhost", port=3306, user="root", passwd="123456", db="test") pool = redis.ConnectionPool(host="127.0.0.1", password='') self.redis_obj = redis.Redis(connection_pool=pool) def process_item(self, item, spider): if isinstance(item, TravelsItem): Travels.insert_db(item, self) Travels.insert_redis(item, self) elif isinstance(item, TravelsDetailItem): TravelsDetail.insert_db(item, self) def close_spider(self, spider): self.mysql_conn.close()将每一行代码都做解释

2023-06-08 上传