mysql数据库中触发器有什么作用

这就是陷阱,不要在频繁的操作列表中使用复杂的触发器。

实用提醒:测试激活逻辑,避免性能影响和嵌套风险。

mysql如何向表中添加数据 insert插入数据的多种写法

嘿嘿,这个INSERT语句……技巧可真多啊。
当我开始学习时,我无法区分其中的差异。
2 02 2 年的时候,我还在那个公司,对数据库不是很熟悉。
他们要求我将数据添加到名为 user 的表中。
表结构有三列,ID、Name 和 Email。

我们先来说最简单的,就是单行插入。
像这样:
sql INSERT INTO 用户(姓名、电子邮件)VALUES('John Doe', 'john@example.com');
这很容易,对吧?是列名,然后是 VALUES,值必须匹配。
我当时很困惑,觉得这很重要。
如果后面信息很多,一一输入的话,肯定不行。
所以我检查了多行插入。

输入多行,以逗号分隔:
sql 插入用户(姓名、电子邮件)VALUES('Alice', 'alice@example.com'), ('Bob', 'bob@example.com');
哇,同时放入两个感觉效率更高。
不过后来我发现并不是所有的数据库都支持这个,这取决于版本。
我们当时用的是MySQL。
到 2 02 2 年,看起来大多数系统都会升级到 8 .0,这很好。

然后我想从 CSV 文件导入数据库。
该文件很大,包含数千个用户数据。
这次我使用了LOAD DATA INFILE。
规模 将数据本地内文件“/path/to/users.csv”加载到以“,”(姓名、电子邮件)结尾的表用户字段中。

实际上,这非常有效。
但是,文件路径必须正确并且格式必须匹配。
我尝试了一次,但是路径写错了,导入失败,着实困扰了我。
另外,还应注意安全性,LOCAL 选项有时可以被禁用。

还有 INSERT...return,我对它印象不太深刻,因为这个功能在 MySQL 8 .0 之前似乎不存在。
即输入后可以直接返回自动添加的ID。
当时,当我们遇到需要ID的情况时,我们总是使用SELECT LAST_INSERT_ID()。
规模 INSERT INTO users(name, email) VALUES('Dave', 'dave@example.com'); 选择 LAST_INSERT_ID();
这很简单并且有效。
不过如果MySQL支持的话返回会更方便。

然后是用重复键更新,这是常用的。
插入时如果主键或特殊键重复则其他列而不是报错他们会进步。
规模 双键更新时插入用户(姓名、电子邮件)VALUES('Eve', 'eve@example.com') email = VALUES(email);
这是非常实用的。
例如,如果您从其他系统导入数据且 ID 可能重复,请使用此方法。
但是,您应该仔细设计更新逻辑,以免意外更改重要信息。

最后是一个与交易相结合的群组槽位。
有时候数据量很大,插入很慢,必须检查原子性,这时就必须使用事务。
规模 开始购物; INSERT INTO 命令 (user_id, Product_id) VALUES(1 , 1 01 ), (2 , 1 02 ); 提交;
这样要么一切成功,要么一切失败,不存在一半成功一半失败的情况。
在处理那个大订单表的时候,我们就用了这个,感觉性能有很大的提升。

所以,你看,根据不同的需求,你要选择不同的方法。
对单行使用基本 INSERT。
对于组,加载多行或多数据。
如果需要 ID,请使用 LAST_INSERT_ID() 或返回,具体取决于数据库版本。
要捕获重复的密钥,请使用重复的密钥更新程序。
如果你想要高性能,请使用事务。
选择正确的方法可以提高效率。