mysql DML

mysql DML

DML-INSERT

插入完整的行;
插入行的一部分;
插入多行;
插入某些查询的结果

【权限】可针对每个表或每个用户,禁止使用INSERT语句。

单行插入

# 需要按顺序填写,且不能省略,可以用NULL代替
INSERT INTO table_name VALUES(col1_val, col2_val, );

高度依赖于表中列的定义次序,并且还依赖于其次序容易获得的信息。需要知道次序信息,麻烦,不安全。

INSERT INTO table_name(col1_name, col2_name, ...) VALUES(col1_val, col2_val, ...);

在表名后的括号里明确地给出了列名,并对应赋值。即使表的结构改变,此INSERT语句仍然能正确工作。推荐使用。

提高整体性能:如果数据检索是最重要的(通常是这样),则你可以通过在INSERTINTO之间添加关键字LOW_PRIORITY,指示MySQL降低INSERT语句的优先级,如下所示:(对UPDATEDELETE也适用)

INSERT LOW_PRIORITY INTO ...

多行插入

# 重复提交
INSERT INTO table_name(col1_name, col2_name, ...) VALUES(col1_val, col2_val, ...);
INSERT INTO table_name(col1_name, col2_name, ...) VALUES(col1_val, col2_val, ...);
INSERT INTO table_name(col1_name, col2_name, ...) VALUES(col1_val, col2_val, ...);

进一步,提高性能,

INSERT INTO table_name(col1_name, col2_name, ...) 
VALUES(col1_val, col2_val, ...), (col1_val, col2_val, ...),(col1_val, col2_val, ...) ...;

使用()代表一行数据。这样可以提高性能。因为MySQL用单条INSERT语句处理多个插入使用多条INSERT语句快。


插入检索出的数据

将一条SELECT语句的结果插入表中
这就是所谓的INSERT SELECT,顾名思义,它是由一条INSERT语句和一条SELECT语句组成的。

INSERT INTO table_name(col1_name, col2_name, ...) 
VALUES	SELECT col1_name, col2_name, ... FROM table_name_new 

规则:
列名不需要匹配,只根据列位置匹配。具体地说,SELECT查询的第一列的数据会插入到INSERTtable_name()指定的第一列。
SELECT子句符合查询语法就行,可以使用数据过滤的等子句。

INSERT子句符合插入语法就行。

DML-UPDATE,DELETE

UPDATE:

​ 更新表中特定行;更新表中所有行

DELETE:

​ 删除表中特定行;删除表中所有行

UPDATE

UPDATE table_name 
SET column_name = column_val[,column_name = column_val, ...]
WHERE conditions

UPDATE语句由3部分组成,分别是:

  • 要更新的表;UPDATE table_name
  • 指定列名和它们的新值;SET column_name = column_val[,column_name = column_val, ...]
  • 确定要更新行的过滤条件。WHERE conditions

UPDATE语句中可以使用子查询,进行数据的更新。

IGNORE关键字 更新多行时如果出错默认回滚恢复到初始值,使用IGNORE可以忽略错误,继续进行更新:

UPDATE IGNORE table_name ...

DELETE

按行删除数据

删除的是表内容(表中数据),不是表本身

DELETE FROM table_name
WHERE conditons

更快的删除方式:当删除表中所有数据时可以用。

TRUNCATE TABLE

相当于删除原来的表再重新创建一个同样的表,比逐行删除快。

TRUNCATE属于DDL。

使用注意

在对UPDATE或DELETE语句使用WHERE子句前,应该先用SELECT进行测试,保证它过滤的是正确的记录,以防编写的WHERE子句不正确。

MySQL没有撤销(undo)按钮。所以数据不会回复。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值