mysql 必知必会整理—数据插入和更新还有删除[十]
前言
简单整理数据插入更新还有删除。
正文
插入:
INSERT INTO customers(
customers.cust_address,
customers.cust_city,
customers.cust_state,
customers.cust_zip,
customers.cust_country,
customers.cust_contact,
customers.cust_email
)
VALUES('zhangsan','good','111','ca','dasdsa','usa',NULL)
这样就插入成功了。
在插入的时候为了安全起见,那么每次插入的时候应该写好列名。
不管使用哪种INSERT语法,都必须给出VALUES的正确数目。
如果不提供列名,则必须给每个表列提供一个值。如果提供列名,则必须对每个列出的列给出一个值。
如果不这样,将产生一条错误消息,相应的行插入不成功。
省略列 如果表的定义允许,则可以在INSERT操作中省略某些列。省略的列必须满足以下某个条件。
-
该列定义为允许NULL值(无值或空值)。
-
在表定义中给出默认值。这表示如果不给出值,将使用默认值
提高整体性能 数据库经常被多个客户访问,对处理什么请求以及用什么次序处理进行管理是MySQL的任务。
INSERT操作可能很耗时(特别是有很多索引需要更新时),而且它可能降低等待处理的SELECT语句的性能。
如果数据检索是最重要的(通常是这样),则你可以通过在INSERT和INTO之间添加关键字LOW_PRIORITY,指示MySQL降低INSERT语句的优先级。
INSERT INTO customers(
customers.cust_address,
customers.cust_city,
customers.cust_state,
customers.cust_zip,
customers.cust_country,
customers.cust_contact,
customers.cust_email
)
VALUES('zhangsan','good','111','ca','dasdsa','usa',NULL)
,('zhangsan','good','111','ca','dasdsa','usa',NULL)
,('zhangsan','good','111','ca','dasdsa','usa',NULL)
,('zhangsan','good','111','ca','dasdsa','usa',NULL)
如果想插入多行,只需要加入多个values即可。
INSERT一般用来给表插入一个指定列值的行。但是,INSERT还存在另一种形式,可以利用它将一条SELECT语句的结果插入表中。
这就是所谓的INSERT SELECT,顾名思义,它是由一条INSERT语句和一条SELECT语句组成的。
假如你想从另一表中合并客户列表到你的customers表。不需要每次读取一行,然后再将它用INSERT插入,可以如下进行:
insert into customers(xx,xx,xx)
select xx,xx,xx
from newcustomers
差不多就是这样的了。
INSERT SELECT中的列名 为简单起见,这个例子在INSERT和SELECT语句中使用了相同的列名。
但是,不一定要求列名匹配。事实上,MySQL甚至不关心SELECT返回的列名。
它使用的是列的位置,因此SELECT中的第一列(不管其列名)将用来填充
表列中指定的第一个列,第二列将用来填充表列中指定的第二个列,如此等等。
这对于从使用不同列名的表中导入数据是非常有用的。
下面介绍更新操作。
为了更新(修改)表中的数据,可使用UPDATE语句。可采用两种方式使用UPDATE:
1.更新表中特定行;
2.更新表中所有行。
UPDATE customers
SET cust_email = 'email@qq.com'
where cust_id = 10005;
上面这就是更新语句了。
如果更新多个列的话:
UPDATE customers
SET cust_email = 'email@qq.com',
cust_name = 'game'
where cust_id = 10005;
IGNORE关键字 如果用UPDATE语句更新多行,并且在更新这些行中的一行或多行时出一个现错误,则整个UPDATE操作被取消(错误发生前更新的所有行被恢复到它们原来的值)。
为即使是发生错误,也继续进行更新,可使用IGNORE关键字,如下所示: UPDATE IGNORE customers…
这么说明一下,如果确定只更新一行的话,那么建议是更新是用update 1这种模式,指明只更新一行。
为了从一个表中删除(去掉)数据,使用DELETE语句。可以两种方式使用DELETE:
-
从表中删除特定的行;
-
从表中删除所有行。
删除表的内容而不是表 DELETE语句从表中删除行,甚至是
删除表中所有行。但是,DELETE不删除表本身。
更快的删除 如果想从表中删除所有行,不要使用DELETE。
可使用TRUNCATE TABLE语句,它完成相同的工作,但速度更快(TRUNCATE实际是删除原来的表并重新创建一个表,而不是逐行删除表中的数据)
结
下一节,表和视图。
相关文章
- MySQL添加中文字符集问题 --- java.sql.SQLException: Incorrect string value
- MySQL_(Java)使用JDBC向数据库中删除(delete)数据
- MySQL Cluster在线添加数据节点
- 「mysql优化专题」90%程序员没听过的存储过程和存储函数教学(7)
- MySQL 之 数据操作
- Mysql中查找并删除重复数据的方法
- MySQL数据类型与优化
- thinkphp5.1格式化mysql时间戳为日期的多种方式
- mysql 5.1.x 比较 5.6.x版本的日志
- MySql删除重复数据并保留一条
- MySQL中, 如何查询某一天, 某一月, 某一年的数据.
- PDI(Kettle)的使用四 获取REST api数据并保存到mysql
- MySQL的information_schema数据库
- MySQL超时参数以及相关数据集成、DataX数据同步案例分享
- Linux环境中MySQL主从同步--添加新的从库
- 一个比较常用的关于php下的mysql数据操作类
- MySQL同步数据到本地自建数据库
- Python基础——PyCharm版本——第九章、MySQL操作(核心4)
- MySQL数据的插入更新和删除
- 【华为云技术分享】华为云MySQL新增MDL锁视图特性,快速定位元数据锁问题
- Mysql可重复读、避免幻读原理
- Mysql 根据一个表数据更新另外一个表
- UBUNTU如何改变mysql默认文件夹数据文件夹
- 【MySQL】记一次线上重大事故:二狗子竟然把线上数据库删了!!
- mysql的数据类型- 特别是表示日期/时间的数据类型: 参考: http://www.cnblogs.com/bukudekong/archive/2011/06/27/2091590.html
- Mysql原理篇之Innodb如何调整磁盘与CPU之间的矛盾--07
- MySQL — 创建表,插入数据,更新数据,删除数据
- MySQL安全秘籍:守护数据金库,防火防盗防攻击
- 【大数据开发运维解决方案】sqoop增量导入oracle/mysql数据到hive时时间字段为null处理