基础篇
MySQL概述
MySQL概述
- SQL(Structured Query Language)
- SQL通用语法
DDL
查询
SHOW DATABASES
SELECT DATABASE()
CREATE DATABASE [IF NOT EXISTS] 数据库名 [DEFAULT CHARSET 字符集] [COLLATE 排序规则];
DROP DATABASE [IF EXISTS]数据库名;
USE 数据库名;
DDL-表结构-查询
SHOW TABLES
查询表结构
DESC 表名
查询指定表的建表语句
SHOW CREATE TABLE 表名
DDL-表操作-创建
在SQL中,数据类型是用于定义列的数据存储方式及其限制的重要概念。以下是一些常见的数值、字符串和日期类型的数据类型:
数值类型
- INT - 整型,用于存储整数值,可以是正数、负数或零。
- SMALLINT - 短整型,用于存储较小范围的整数值。
- MEDIUMINT - 中整型,存储整数值的范围介于INT和SMALLINT之间。
- BIGINT - 大整型,用于存储非常大的整数值。
- DECIMAL 或 NUMERIC - 用于存储精确的小数值,可以指定精度(小数点后的位数)。
- FLOAT - 浮点数,用于存储单精度浮点数。
- DOUBLE - 双精度浮点数,用于存储双精度浮点数。
- TINYINT - 微小整型,用于存储非常小范围的整数值,常用于存储布尔值(0或1)。
在SQL中,无符号数据类型(Unsigned Data Types)用于存储非负数,即它们不能表示负数。使用无符号数据类型可以增加列可以存储的最大值,因为不使用负数的表示方法可以为非负数提供额外的数值范围。
以下是一些常见的无符号数值数据类型:
- TINYINT UNSIGNED - 无符号的微小整型,通常用于存储非常小的非负整数值。
- SMALLINT UNSIGNED - 无符号的短整型,存储非负的短整数值。
- MEDIUMINT UNSIGNED - 无符号的中等整型,存储非负的中等整数值。
- INT UNSIGNED - 无符号的整型,存储非负的整数值。
- BIGINT UNSIGNED - 无符号的大整型,存储非常大的非负整数值。
对于浮点数,通常没有无符号的版本,因为浮点数的设计初衷就是用来表示正数和负数。
当您确定某个字段将不会存储负数时,使用无符号数据类型可以提高存储效率并扩大存储范围。例如,一个表示年龄的字段就非常适合使用无符号整型,因为年龄不可能是负数。
以下是创建一个使用无符号整数类型的表的示例:
CREATE TABLE example_table ( id INT UNSIGNED AUTO_INCREMENT, value BIGINT UNSIGNED, PRIMARY KEY (id) );
在这个例子中,id 字段被定义为无符号整型,并且设置了自动增长(AUTO_INCREMENT),通常用于表的主键。value 字段也被定义为无符号大整型,意味着它将存储非常大的非负数。
字符串类型
- CHAR - 固定长度字符串,存储长度固定的数据。
- VARCHAR - 可变长度字符串,存储长度可变的数据,比CHAR类型更节省空间。
- TEXT - 长文本数据类型,用于存储大量文本,如文章或评论。
- BINARY - 二进制字符串,用于存储二进制数据。
- VARBINARY - 可变长度二进制字符串,用于存储长度可变的二进制数据。
日期和时间类型
- DATE - 日期,格式为 YYYY-MM-DD。
- TIME - 时间,格式为 HH:MM:SS。
- DATETIME - 日期和时间的组合,格式为 YYYY-MM-DD HH:MM:SS。
- TIMESTAMP - 时间戳,格式为 YYYY-MM-DD HH:MM:SS,通常用于记录数据的创建或更新时间。
- YEAR - 年份,只存储年份部分。
选择适当的数据类型对于数据库的性能和数据的准确性至关重要。例如,如果您知道某个字段只包含整数值,那么使用 INT 或其他整型数据类型会是合适的。同样,如果字段需要存储文本,根据文本的长度和是否固定,您可以选择 CHAR 或 VARCHAR。日期和时间类型的选择取决于您需要存储的时间信息的详细程度。
DDL-表操作-修改
添加字段
ALTER TABLE 表名 ADD 字段名 类型(长度) [comment 注释] [约束];
修改数据类型
ALTER TABLE MODIFY 字段名 新数据类型(长度);
修改字段名和字段类型
ALTER TABLE 表名 CHANGE 旧字段名 新字段名 类型(长度) [COMMENT 注释] [约束];
删除字段
ALTER 表名 DROP 字段名;
修改表名
ALTER TABLE 表名 RENAME TO 新表名;
删除表
DROP TABLE [IF EXISTS] 表名;
删除指定表,并重新创建该表
TRUNCATE TABLE 表名;