首页
技术小册
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从入门到精通(二)
### 8.1.1 使用`INSERT…VALUES`语句插入数据 在MySQL数据库中,`INSERT`语句是用于向表中插入新数据的基本命令之一。其中,`INSERT…VALUES`语法是最直接且常用的方式,它允许用户明确指定要插入的数据值。本章节将详细介绍`INSERT…VALUES`语句的基本语法、使用场景、注意事项以及如何通过该语句高效地插入数据。 #### 8.1.1.1 基本语法 `INSERT…VALUES`语句的基本语法结构如下: ```sql INSERT INTO 表名 (列1, 列2, 列3, ..., 列N) VALUES (值1, 值2, 值3, ..., 值N); ``` - **INSERT INTO 表名**:指定要插入数据的表名。 - **(列1, 列2, ..., 列N)**:可选部分,用于明确指定要插入数据的列名。如果省略此部分,则需要为表中的每一列提供一个值,且顺序必须与表中列的定义顺序一致。 - **VALUES (值1, 值2, ..., 值N)**:为前面指定的列或表中的所有列提供具体的值。值的数量必须与列的数量相匹配,且数据类型需与列定义相匹配。 #### 8.1.1.2 示例 假设我们有一个名为`students`的表,其结构如下: ```sql CREATE TABLE students ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(100) NOT NULL, age INT, gender ENUM('M', 'F') NOT NULL ); ``` **示例1:插入完整数据** 如果我们想插入一个新学生的信息,可以使用如下语句: ```sql INSERT INTO students (name, age, gender) VALUES ('张三', 20, 'M'); ``` 这条语句向`students`表中插入了一行数据,学生的名字是“张三”,年龄是20岁,性别是男性。 **示例2:省略列名(不推荐,除非非常清楚表结构)** 如果省略列名,需要按照表中列的定义顺序提供值,并且必须为所有列提供值(除非某些列有默认值或允许NULL)。 ```sql INSERT INTO students VALUES (NULL, '李四', 22, 'F'); ``` 注意:这里`id`列是自动增长的,所以我们可以显式地插入`NULL`或省略该值。 **示例3:插入多行数据** MySQL还支持在一条`INSERT`语句中插入多行数据,这可以显著提高数据插入的效率。 ```sql INSERT INTO students (name, age, gender) VALUES ('王五', 21, 'M'), ('赵六', 23, 'F'), ('孙七', 22, 'M'); ``` #### 8.1.1.3 注意事项 1. **数据类型匹配**:确保插入的值与列定义的数据类型相匹配。如果类型不匹配,MySQL将尝试进行类型转换,但可能会引发错误或数据丢失。 2. **字符集和排序规则**:对于字符串类型的数据,还需注意字符集和排序规则的匹配,特别是在处理多语言数据时。 3. **默认值与NULL**:如果某列设置了默认值或允许NULL,则可以不为该列提供值,MySQL将自动使用默认值或NULL填充。 4. **自增列**:对于自增列(如本例中的`id`列),可以显式地插入`NULL`或省略该值,MySQL会自动为该列生成一个唯一的值。 5. **性能优化**:在插入大量数据时,应考虑使用批量插入(如上例所示)、关闭自动提交(使用`START TRANSACTION`和`COMMIT`)以及调整MySQL的配置参数(如`innodb_buffer_pool_size`)以提高性能。 6. **安全性**:当插入的数据来自用户输入时,应使用预处理语句(Prepared Statements)来防止SQL注入攻击。 #### 8.1.1.4 进阶用法 - **使用SELECT语句插入数据**:`INSERT INTO ... SELECT`语句允许从其他表中选择数据并插入到目标表中。 ```sql INSERT INTO students (name, age, gender) SELECT name, age, gender FROM temporary_students; ``` - **插入特定值作为列默认值**:在某些情况下,你可能希望插入特定值作为列的默认值,而不是依赖列定义的默认值。这可以通过在`VALUES`列表中明确指定该值来实现。 - **处理重复数据**:如果表设置了唯一索引或主键,尝试插入重复数据将导致错误。可以使用`INSERT IGNORE`或`ON DUPLICATE KEY UPDATE`子句来处理这种情况。 #### 8.1.1.5 总结 `INSERT…VALUES`语句是MySQL中用于向表中插入新数据的基本且强大的工具。通过掌握其基本语法、使用场景、注意事项以及进阶用法,可以高效地管理和维护数据库中的数据。在实际应用中,建议结合业务需求和数据库性能考虑,选择最合适的插入策略。同时,注意数据的安全性和准确性,避免SQL注入等安全问题。
上一篇:
8.1 增添数据
下一篇:
8.1.2 使用INSERT…SET语句插入数据
该分类下的相关小册推荐:
MySQL 实战 45 讲
MySQL从入门到精通(三)
SQL零基础到熟练应用(增删改查)
MySQL8.0入门与实践
细说MySQL(零基础到高级应用)
MySQL从入门到精通(一)
MySQL从入门到精通(五)
MySQL从入门到精通(四)
MySQL必会核心问题