MySQL 数据类型一览表

本文详细介绍了MySQL中的数据类型,包括整数、浮点数、字符串、日期和其他类型,并给出了各类型长度和范围的一览表。同时,提供了数据类型选择的使用建议,强调遵循从小原则以提高运行效率,并提醒在数据表设计时注重简洁性和可扩展性。

参考文章:

1. http://hi.baidu.com/me19860115/blog/item/e9764fee500b25e4cf1b3e25.html

 

一、MySQL的数据类型

主要包括以下五大类:

整数类型:BIT、BOOL、TINY INT、SMALL INT、MEDIUM INT、 INT、 BIG INT

浮点数类型:FLOAT、DOUBLE、DECIMAL

字符串类型:CHAR、VARCHAR、TINY TEXT、TEXT、MEDIUM TEXT、LONGTEXT、TINY BLOB、BLOB、MEDIUM BLOB、LONG BLOB

日期类型:Date、DateTime、TimeStamp、Time、Year

其他数据类型:BINARY、VARBINARY、ENUM、SET、Geometry、Point、MultiPoint、LineString、MultiLineString、Polygon、GeometryCollection等

二、MYSQL数据类型的长度和范围

 

各数据类型及字节长度一览表:

数据类型 字节长度 范围或用法
Bit1无符号[0,255],有符号[-128,127],备注:BIT和BOOL布尔型都占用1字节
TinyInt1整数[0,255]
SmallInt2无符号[0,65535],有符号[-32768,32767]
MediumInt3无符号[0,2^24-1],有符号[-2^23,2^23-1]]
Int4无符号[0,2^32-1],有符号[-2^31,2^31-1]
BigInt8无符号[0,2^64-1],有符号[-2^63 ,2^63 -1]
Float(M,D)4单精度浮点数。这里的D是精度,如果D<=24则为默认的FLOAT,如果D>24则会自动被转换为DOUBLE型。
Double(M,D)8双精度浮点。
Decimal(M,D)M+1或M+2未打包的浮点数,用法类似于FLOAT和DOUBLE,如果在ASP中使用到Decimal数据类型,直接从数据库读出来的Decimal可能需要先转换成Float或Double类型后再进行运算。
Date3以YYYY-MM-DD的格式显示,比如:2009-07-19
Date Time8以YYYY-MM-DD HH:MM:SS的格式显示,比如:2009-07-19 11:22:30
TimeStamp4以YYYY-MM-DD的格式显示,比如:2009-07-19
Time3以HH:MM:SS的格式显示。比如:11:22:30
Year1以YYYY的格式显示。比如:2009
Char(M)M
定长字符串。
VarChar(M)M变长字符串,要求M<=255
Binary(M)M类似Char的二进制存储,特点是插入定长不足补0
VarBinary(M)M类似VarChar的变长二进制存储,特点是定长不补0
Tiny TextMax:255大小写不敏感
TextMax:64K大小写不敏感
Medium TextMax:16M大小写不敏感
Long TextMax:4G大小写不敏感
TinyBlobMax:255大小写敏感
BlobMax:64K大小写敏感
MediumBlobMax:16M大小写敏感
LongBlobMax:4G大小写敏感
Enum1或2最大可达65535个不同的枚举值
Set可达8最大可达64个不同的值
Geometry
Point
LineString
Polygon
MultiPoint
MultiLineString
MultiPolygon
GeometryCollection

三、使用建议

1、在指定数据类型的时候一般是采用从小原则,比如能用TINY INT的最好就不用INT,能用FLOAT类型的就不用DOUBLE类型,这样会对MYSQL在运行效率上提高很大,尤其是大数据量测试条件下。

2、不需要把数据表设计的太过复杂,功能模块上区分或许对于后期的维护更为方便,慎重出现大杂烩数据表

3、数据表和字段的起名字也是一门学问

4、设计数据表结构之前请先想象一下是你的房间,或许结果会更加合理、高效

5、数据库的最后设计结果一定是效率和可扩展性的折中,偏向任何一方都是欠妥的

 

 

<think>好的,用户想要查看MySQL的语法大全,我需要根据提供的引用内容来组织回答。首先,我需要确认用户的需求是全面了解MySQL的语法结构,可能包括数据库操作、数据表管理、数据增删改查等。 引用[1]提到了创建、删除数据库,选择数据库,数据类型,创建和删除数据表,插入、查询数据,WHERE子句,UPDATE,DELETE,LIKE,UNION,排序,分组,正则表达式,事务以及函数等内容。引用[2]补充了SQL分类和基本操作,包括DDL、DML、DCL、DTL。引用[3]详细列出了数据库操作、数据表操作和CRUD的具体命令,如登录退出MySQL,新建、使用、查看、删除数据库,表的创建修改删除,数据的增删改查的各种方法。 用户可能需要一个结构清晰的分类,比如按照SQL语句类型或功能模块来组织。我需要将这些内容分门别类,确保覆盖主要语法点。例如,先介绍数据库级别的操作,然后是表操作,接着是数据操作,再是查询和高级功能。同时,要注意每个部分的常见命令和示例,帮助用户理解。 另外,用户示例中的快速排序部分有代码块,但MySQL语法通常使用SQL语句,所以应该用代码块展示SQL示例。比如创建数据库、创建表、插入数据等。需要确保每个代码示例正确,符合MySQL语法规范。 可能还需要注意用户提到的“全面列表”,所以要尽可能涵盖更多方面,如事务处理、函数使用、高级查询技巧等。同时,根据引用中的信息,补充事务控制命令如COMMIT、ROLLBACK,以及字符串函数、日期函数等例子。 最后,生成相关问题时要围绕用户可能进一步询问的方向,比如如何优化查询、事务的使用场景、索引的创建等。确保问题与提供的引用内容相关,并且引导用户深入了解更多细节。</think>### MySQL 语法大全 以下是MySQL主要语法分类及核心操作,基于其功能模块整理: --- #### 一、**数据库操作** 1. **创建数据库** ```sql CREATE DATABASE database_name; ``` 2. **删除数据库** ```sql DROP DATABASE database_name; ``` 3. **选择数据库** ```sql USE database_name; ``` 4. **查看所有数据库** ```sql SHOW DATABASES; ``` --- #### 二、**数据表操作** 1. **创建表** ```sql CREATE TABLE table_name ( column1 datatype [约束], column2 datatype [约束], ... ); ``` **示例**: ```sql CREATE TABLE users ( id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(50) NOT NULL, email VARCHAR(100) UNIQUE ); ``` 2. **删除表** ```sql DROP TABLE table_name; ``` 3. **修改表结构** - 添加列: ```sql ALTER TABLE table_name ADD column_name datatype; ``` - 修改列类型: ```sql ALTER TABLE table_name MODIFY column_name new_datatype; ``` - 删除列: ```sql ALTER TABLE table_name DROP COLUMN column_name; ``` --- #### 三、**数据增删改查(CRUD)** 1. **插入数据** - 全字段插入: ```sql INSERT INTO table_name VALUES (value1, value2, ...); ``` - 指定字段插入: ```sql INSERT INTO table_name (column1, column2) VALUES (value1, value2); ``` 2. **更新数据** ```sql UPDATE table_name SET column1 = value1, column2 = value2 WHERE condition; ``` 3. **删除数据** ```sql DELETE FROM table_name WHERE condition; ``` 4. **查询数据** - 基础查询: ```sql SELECT column1, column2 FROM table_name; ``` - 条件查询: ```sql SELECT * FROM table_name WHERE age > 18 AND city = 'Beijing'; ``` - 排序: ```sql SELECT * FROM table_name ORDER BY column_name DESC; ``` - 分组聚合: ```sql SELECT department, COUNT(*) FROM employees GROUP BY department; ``` --- #### 四、**高级功能** 1. **事务控制** ```sql START TRANSACTION; -- SQL操作 COMMIT; -- 或 ROLLBACK; ``` 2. **索引管理** ```sql CREATE INDEX index_name ON table_name (column1); ``` 3. **正则表达式查询** ```sql SELECT * FROM table_name WHERE column REGEXP 'pattern'; ``` 4. **联合查询(UNION)** ```sql SELECT column1 FROM table1 UNION SELECT column1 FROM table2; ``` --- #### 五、**常用函数** 1. **字符串函数** ```sql SELECT CONCAT(first_name, ' ', last_name) AS full_name FROM users; SELECT SUBSTRING(email, 1, 5) FROM users; ``` 2. **日期函数** ```sql SELECT NOW(); -- 当前时间 SELECT DATE_FORMAT(birthday, '%Y-%m-%d') FROM employees; ``` 3. **聚合函数** ```sql SELECT AVG(salary), MAX(age), SUM(sales) FROM employees; ``` --- #### 六、**权限管理(DCL)** 1. **授予权限** ```sql GRANT SELECT, INSERT ON database.* TO 'user'@'localhost'; ``` 2. **撤销权限** ```sql REVOKE DELETE ON database.* FROM 'user'@'localhost'; ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值