首页
技术小册
AIGC
面试刷题
技术文章
MAGENTO
云计算
视频课程
源码下载
PDF书籍
「涨薪秘籍」
登录
注册
5.1 MySQL存储引擎
5.1.1 MySQL存储引擎的概念
5.1.2 查询MySQL中支持的存储引擎
5.1.3 InnoDB存储引擎
5.1.4 MyISAM存储引擎
5.1.5 MEMORY存储引擎
5.1.6 选择存储引擎
5.1.7 设置数据表的存储引擎
5.2 MySQL数据类型
5.2.1 数字类型
5.2.2 字符串类型
5.2.3 日期和时间类型
6.1 创建数据表(CREATE TABLE语句)
6.2 查看表结构
6.2.1 使用SHOW COLUMNS语句查看
6.2.2 使用DESCRIBE语句查看
6.3 修改表结构(ALTER TABLE语句)
6.3.1 添加新字段和修改字段定义
6.3.2 修改字段名/类型
6.3.3 删除字段
6.3.4 修改表名
6.4 重命名表(RENAME TABLE语句)
6.5 复制表(CREATE TABLE…LIKE语句)
6.6 删除表(DROP TABLE语句)
7.1 运算符
7.1.1 算术运算符
7.1.2 比较运算符
7.1.3 逻辑运算符
7.1.4 位运算符
7.2 流程控制语句
7.2.1 IF语句
7.2.2 CASE语句
7.2.3 WHILE循环语句
7.2.4 LOOP循环语句
7.2.5 REPEAT循环语句
8.1 增添数据
8.1.1 使用INSERT…VALUES语句插入数据
8.1.2 使用INSERT…SET语句插入数据
8.1.3 使用INSERT...SELECT语句插入查询结果
8.2 修改数据
8.3 删除数据
8.3.1 使用DELETE语句删除数据
8.3.2 使用TRUNCATE TABLE语句删除数据
当前位置:
首页>>
技术小册>>
MySQL从入门到精通(二)
小册名称:MySQL从入门到精通(二)
### 6.1 创建数据表(CREATE TABLE语句) 在MySQL数据库中,数据表是存储数据的核心结构,它按照特定的格式组织数据,使得数据的查询、更新、删除等操作变得高效且有序。`CREATE TABLE`语句是MySQL中用于创建新数据表的基本命令,它允许你定义表的结构,包括列的名称、数据类型、是否允许为空、默认值、主键、外键等约束条件。掌握`CREATE TABLE`语句的使用,是数据库设计和管理的基础。 #### 6.1.1 基本语法 `CREATE TABLE`语句的基本语法如下: ```sql CREATE TABLE table_name ( column1 datatype constraints, column2 datatype constraints, column3 datatype constraints, .... PRIMARY KEY (one or more columns), FOREIGN KEY (column_name) REFERENCES parent_table(column_name), INDEX (column_name), UNIQUE (column_name), CHECK (condition), ... ); ``` - `table_name`:你想要创建的数据表的名称。 - `column1, column2, ...`:表中各列的名称。 - `datatype`:每列的数据类型,如`INT`、`VARCHAR`、`DATE`等。 - `constraints`:对列的约束条件,如`NOT NULL`(不允许为空)、`DEFAULT`(默认值)、`UNIQUE`(唯一值)等。 - `PRIMARY KEY`:定义表的主键,主键的值必须唯一且不允许为空。 - `FOREIGN KEY`:定义外键,用于建立表之间的关联。 - `INDEX`、`UNIQUE`、`CHECK`:分别用于创建索引、唯一约束和检查约束。 #### 6.1.2 数据类型 在定义列时,选择合适的数据类型至关重要,它不仅影响数据的存储效率,还决定了数据的表示范围和格式。MySQL支持多种数据类型,包括数值类型(如`INT`、`FLOAT`、`DECIMAL`)、日期和时间类型(如`DATE`、`TIME`、`DATETIME`)、字符串类型(如`CHAR`、`VARCHAR`、`TEXT`)等。 - **数值类型**:用于存储数字,根据存储范围和精度选择。 - `INT`:整数,有符号范围从-2,147,483,648到2,147,483,647,无符号范围加倍。 - `FLOAT`和`DOUBLE`:浮点数,用于存储近似数值,`DOUBLE`比`FLOAT`精度更高。 - `DECIMAL(M,D)`:定点数,用于存储精确的小数,`M`是数字的最大位数(精度),`D`是小数点后的位数(标度)。 - **日期和时间类型**:用于存储日期和时间值。 - `DATE`:日期值,格式为YYYY-MM-DD。 - `TIME`:时间值,格式为HH:MM:SS。 - `DATETIME`:日期和时间值,格式为YYYY-MM-DD HH:MM:SS。 - `TIMESTAMP`:时间戳,与`DATETIME`类似,但范围较小,且有时区支持。 - **字符串类型**:用于存储文本数据。 - `CHAR(M)`:固定长度的字符串,`M`是列的最大字符数。 - `VARCHAR(M)`:可变长度的字符串,`M`是列的最大字符数(MySQL 5.0.3及以后版本最大为65535)。 - `TEXT`:长文本数据,有`TINYTEXT`、`TEXT`、`MEDIUMTEXT`、`LONGTEXT`四种类型,分别对应不同的最大长度。 #### 6.1.3 约束条件 约束条件用于限制表中数据的类型和值,确保数据的准确性和可靠性。 - **NOT NULL**:指定列不能存储NULL值。 - **DEFAULT**:为列指定默认值,当插入行时未指定该列的值时,将使用默认值。 - **UNIQUE**:保证列中的所有值都是唯一的,可以与`PRIMARY KEY`一起使用,但`PRIMARY KEY`自动具有`UNIQUE`约束。 - **PRIMARY KEY**:表的主键,用于唯一标识表中的每一行。主键列的值不能重复且不允许为NULL。 - **FOREIGN KEY**:外键,用于在两个表之间建立关系,确保参照完整性。 - **CHECK**:检查约束,用于限制列中值的范围或格式,MySQL 8.0.16及以后版本支持。 #### 6.1.4 示例 假设我们要创建一个名为`students`的表,用于存储学生的信息,包括学号(ID)、姓名(name)、年龄(age)、入学日期(enrollment_date)和班级(class_id,假设班级信息存储在另一个表中)。 ```sql CREATE TABLE students ( ID INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(100) NOT NULL, age INT CHECK (age > 0 AND age <= 100), enrollment_date DATE NOT NULL, class_id INT, FOREIGN KEY (class_id) REFERENCES classes(id) ); ``` 在这个例子中,`ID`列被设置为主键,并自动增长(`AUTO_INCREMENT`),这意味着每当向表中插入新行时,MySQL会自动为`ID`列生成一个唯一的值。`name`列不允许为空,且最大长度为100个字符。`age`列通过`CHECK`约束确保年龄值在1到100之间(包含边界值)。`enrollment_date`列也不允许为空,用于存储学生的入学日期。`class_id`列是外键,它引用了另一个名为`classes`的表的`id`列,从而建立了`students`表和`classes`表之间的关联。 #### 6.1.5 注意事项 - 在设计表结构时,应充分考虑数据的完整性和查询效率,合理设置主键、外键和索引。 - 尽量避免使用`SELECT *`查询,特别是在表结构复杂或数据量大的情况下,明确指定需要查询的列可以提高查询效率。 - 定期对表进行维护,如优化索引、清理无用数据等,以保持数据库的性能。 - 在使用外键时,确保参照的表(父表)和列(父列)已经存在,并且数据类型一致。 通过本章的学习,你应该能够熟练掌握`CREATE TABLE`语句的使用,包括定义表结构、选择数据类型、设置约束条件等。这将为你后续进行数据库设计、数据管理和查询优化打下坚实的基础。
上一篇:
5.2.3 日期和时间类型
下一篇:
6.2 查看表结构
该分类下的相关小册推荐:
MySQL从入门到精通(四)
MySQL从入门到精通(五)
MySQL8.0入门与实践
SQL零基础到熟练应用(增删改查)
细说MySQL(零基础到高级应用)
MySQL从入门到精通(三)
MySQL 实战 45 讲
MySQL从入门到精通(一)
MySQL必会核心问题