# DML
CREATE TABLE IF NOT EXISTS t1_user (
`user_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '用户ID',
`dept_id` bigint(20) DEFAULT NULL COMMENT '部门ID',
`user_name` varchar(30) NOT NULL COMMENT '用户账号',
`email` varchar(50) DEFAULT '' COMMENT '用户邮箱',
`password` varchar(100) DEFAULT '' COMMENT '密码',
PRIMARY KEY (`user_id`)
) COMMENT = '用户信息表';
# 1、插入数据
批量插入可以一次性解决多条数据插入,但 MySQL8 以后默认有事务安全,即批量要么都成功要么都失败。所以数据不多的情况下还是逐条插入,便于排查错误。
批量插入数据--for 循环
const mysql = require('mysql2')
const connection = mysql.createConnection({
host: 'localhost',
port: 3306,
user: 'root',
password: 'mysql666.',
database: 'coderhub'
})
const statement = `INSERT INTO products SET ?;`
const phoneJson = require('./phone.json')
for (let phone of phoneJson) {
connection.query(statement, phone, (err, results, fields) => {
console.log(results) // results contains rows returned by server
console.log(fields) // fields contains extra meta data about results, if available
})
}
-- 需顺序插入
INSERT INTO t1_user VALUES(20857,4,'dingding','[email protected]','123456');
-- 可乱序插入
INSERT INTO t1_user(user_id,dept_id,user_name,email,password) VALUES(20857,4,'dingding','[email protected]','123456');
-- 批量插入
-- 略
# 2、更新数据
更新数据时,非特殊情况下一定要携带条件,不然会一次新修改所有数据。
-- 修改所有
UPDATE t1_user SET password = '123456';
-- 修改部分
UPDATE t1_user SET user_name = 'hanghang' WHERE user_id = 20858;
-- 高级更新
update t1_user set account = account + 10 limit 3; # 对会员选3个发送10元红包(添加到账户)
# 3、清除数据
拓展:truncate t1_user; 也可以删除所有数据,不过它是 DDL 语句
-- 删除所有
DELETE FROM t1_user;
-- 删除部分
DELETE FROM t1_user WHERE dept_id = 3;
# 4、建立副本
副本可以用于数据备份或者迁移场景中。
-- 1、使用 as select
-- 结构 + 数据
CREATE TABLE t2_user AS SELECT * FROM db_1.t1_user;
ALTER TABLE t2_user COMMENT '用户信息表-副本';
-- 2、使用 like
-- 结构
CREATE TABLE t3_user like db_1.t1_user;
-- 数据
INSERT INTO t3_user SELECT * FROM db_1.t1_user;