MySQL命令学习笔记(五)

1 插入数据

1.1 数据插入

数据插入的方式有:插入完整的行、插入行的一部分、插入多行、插入某些查询的结果。

1.2 数据插入

将数据插入表中最简单的方法是使用INSERT语法,其要求指定表名和被插入到新行中的值。命令示例如下:

INSERT INTO table1 VALUES('TN8', 8, '14723580', 'x', 9, 8.88, '2019-05-21');

结果如下:
insertTN8
从下图可以看出,TN8已经插入到表中TN8insert
上述语句中table1表示要插入的表格,VALUSE表示一行数据,这里是按列的顺序依次填充的,若数据与表格的格式不对应,则会报错。因此这样的SQL语句高度依赖表中列的定义次序,并且还依赖于其次序任意获得的信息。更加安全但稍微繁琐的方法是将列名一并列出来,示例如下:

INSERT INTO table1(name,id,phone,home,quantity,price,order_date) VALUES('TN8', 8, '14723580', 'x', 9, 8.88, '2019-05-21');

按照此方式,由于提供了列名,VALUES必须以其指定的次序匹配指定的列名,不一定按各个列出现在实际表中的次序。其优点是即使表的结构改变,此INSERT语句仍然能正确工作。一般不要使用没有明确给出列的列表的INSERT语句
省略列: 若表的定义允许,这可以在INSERT操作中省略某些列。其中省略的列必须满足以下某个条件:

  • 该列定义为允许NULL值(无值或空值)
  • 在表定义中给出默认值

在数据检索时可以通过在INSERTINTO之间添加关键字LOW_PRIORITY,指示MySQL降低INSERT语句的优先级,示例如下:

INSERT LOW_PRIORITY INTO

这也适用于后面的UPDATEDELETE语句。

1.3 插入多行

使用单条插入的方法,增加多个VALUES即可:

INSERT INTO table1(name, id, phone, home, quantity, price, order_date) VALUES('TN9', 9, '12367809', 'x', 8, 11, '2019-05-21'),('TN10', 10, '09751256', 'x', 7, 12, '2019-05-21');

其中单条INSERT语句有多组值,每组值用一对用逗号分隔,圆括号括起来。此方式可以提高数据库处理的性能,因为MySQL用单条INSERT语句处理多个比使用多条INSERT语句快。

1.4 插入检索出的数据

INSERT还存在另一种形式,可以利用它将一条SELECT语句的结果插入表中,即INSERT SELECT。若想从table1中合并某些数据到table2。不需要每次读取一行,然后再将它用INSERT插入,可以进行如下操作:

INSERT INTO 
table2(name,quantity,price,order_date)
SELECT name,quantity,price,order_date
FROM table1;

结果如下:
insert+select_cmd
使用Navicat查看列表

操作前操作后
table2_origin在这里插入图片描述

注意: 没有设置默认值的列一定要加上

2 更新和删除数据

2.1 更新数据

为了更新(修改)表中的数据,可使用UPDATE语句,UPDATE的两种使用方法:

  • 更新表中的特定行
  • 更新表中的所有行

基本的UPDATE语句由三部分组成:

  • 要更新的表
  • 列名和其新值
  • 确定要更新行的过滤条件

若要更新表中某一个phone的值:

UPDATE table1 SET phone = '11112222' WHERE id = 5;

结果如下:
UPDATE.png
这里要更新的表的名字为table1,SET命令用来将新值赋给被更新的列;WHERE命令来指示MySQL更新哪一行。若要修改多个值,则在SET后面增加一个“列 = 值”对即可,每个“列 = 值”对之间用逗号分隔(最后一列之后不用逗号)

UPDATE table1 SET phone = '11112222', home = 's' WHERE id = 5;

为了删除某个列的值,可将其设置为NULL(假设表定义允许NULL值)。示例如下:

UPDATE table1 SET phone = NULL
WHERE id = 5;

2.2 删除数据

为了删除(去掉)表中的数据,可使用DELETE语句,DELETE的两种使用方法:

  • 从表中删除特定行
  • 从表中删除所有行

不要省略WHERE子句:在使用DELETE时一定要注意,因为稍不注意,就会错误地删除表中所有行,若要删除表中某一行:

DELETE FROM table1 WHERE id = 5;

结果如下:
delete.png
DELETE不需要列名或通配符。DELETE删除整行而不是删除列。为了删除指定的列,需要使用UPDATE语句。

更快的删除: 如果想从表中删除所有行,不要使用DELETE。可使用TRUNCATE TABLE语句,改语句可以完成相同的工作,且速度更快( TRUNCATE实际是删除原来的表并重新创建一个表,而不是逐行删除表中的数据)。

2.3 更新和删除的指导原则

如果执行UPDATE而不带WHERE子句,则表中每个行都将用新值更新。类似地,如果执行DELETE语句而不带WHERE子句,表的所有数据都将被删除。使用UPDATEDELETE时,一般遵循的原则:

  • 除非打算更新或删除每一行,否则一定要使用带WHERE子句的UPDATEDELETE语句
  • 保证每个表都有主键,尽可能像WHERE子句那样使用它
  • 在对UPDATEDELETE语句使用WHERE子句前,应该先用SELECT进行测试,保证它过滤的是正确的记录,以防编写的WHERE子句不正确。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值