《MySQL必知必会》读书笔记 —— 第19章 插入数据、第20章 更新和删除数据、第21章 创建和操纵表

INSERT INTO my_table VALUES(col1_val,col2_val,……,coln_val);

这样的插入不介意使用,一方面它依赖列的顺序,而且必须给出所有列的值。

一种更啰嗦,但更安全的做法,也是推荐的做法,

INSERT INTO my_table(

col1,

col2,

……

coln)

VALUES(

val1,

val2,

……,

valn);

这种做法没有必要给出所有列,而且不需要知道列的顺序,只需要知道有哪些列即可。

但是省略的列,必须或者可以为null,或者有默认值

19.3 插入多个行


此技术可以提高数据库处理的性能,因为MySQL用单条INSERT语句处理多个插入比使用多条INSERT语句快。

INSERT INTO my_table(

col1,

col2,

……

coln)

VALUES(

val1_1,

val1_2,

……,

val1_n

),

(

val2_1,

val2_2,

……,

val2_n

);

其中单条INSERT语句有多组值,每组值用一对圆括号括起来,

用逗号分隔。

19.4 插入检索出的数据


INSERT一般用来给表插入一个指定列值的行。但是,INSERT还存在

另一种形式,可以利用它将一条SELECT语句的结果插入表中。这就是所

谓的INSERT SELECT,顾名思义,它是由一条INSERT语句和一条SELECT

语句组成的。

INSERT SELECT 语句类似一种子查询。

举个例子,有customer,custnew(新来的客户),现在需要把新来的客户导入到customer里。怎么做?

INSERT INTO customer

(

cust_id,

cust__email,

cust_address

)

SELECT

cust_id,

cust__email,

cust_address

FROM custnew;

要注意的是,进行的匹配的时候,仅仅是根据列出的顺序与列名毫无关系

第20章 更新和删除数据

============================================================================

20.1 更新数据


  1. 要更新的表

  2. 列名和它们的值

  3. 确定要更新行的过滤条件

UPDATE my_table

SET col1 = val1,

col2 = val2,

col3 = val3

WHERE (filter condition);

注意:如果没有过滤条件,就会更新表中所有行的数据,这是一个很危险的操作

  • UPDATE语句中使用子查询也是可以的。

  • UPDATE语句具有回滚特性

如果update语句要更新很多行,有些成功更新,有些更新失败。

那么只要有一个更新失败,**则整个UPDATE操作被取消

(错误发生前更新的所有行被恢复到它们原来的值)。**。

很明显这样做是比较安全的,但是如果确实想要即使某一行发生了错误,也不妨碍其余行的更新,就可以使用IGNORE关键字。

UPDATE IGNORE …

  • 将某个列的值删除

所谓删除其实是置空,SET col = NULL 即可。

20.2 删除数据


DELETE FROM my_table

WHERE (filter condition);

如果没有过滤条件,会删除所有行,这是一个很危险的操作!

DELETE不需要列名或通配符。DELETE删除整行而不是删除列。为了

删除指定的列,请使用UPDATE语句。

  • 删除表的内容而不是表

DELETE语句从表中删除行,甚至是删除表中所有行。但是,DELETE不删除表本身。

  • 更快的删除

如果想从表中删除所有行,不要使用DELETE。

可使用TRUNCATE table_name语句,它完成相同的工作,但速度更(TRUNCATE实际是删除原来的表并重新创建一个表,而不是逐行删除表中的数据)。

几条使用的建议:

  • 除非确实打算更新和删除每一行,否则绝对不要使用不带WHERE

子句的UPDATE或DELETE语句。

  • 在对UPDATE或DELETE语句使用WHERE子句前,应该先用SELECT进

行测试,保证它过滤的是正确的记录,以防编写的WHERE子句不

正确。

  • 使用强制实施引用完整性的数据库(关于这个内容,请参阅第15

章),这样MySQL将不允许删除具有与其他表相关联的数据的行。

第21章 创建和操纵表

===========================================================================

21.1 创建表


一般有两种创建表的方法:

  • 使用具有交互式创建和管理表的工具(如第2章讨论的工具);
  • 表也可以直接用MySQL语句操纵。

由于一般使用图形化工具创建,这里不再拘泥于语法。

讲一下注意点就好。

基本语法:

create table my_table

(

id int NOT NULL AUTO_INCREMENT ,

name char(100) NOT NULL ,

address char(200) NULL ,

PRIMARY KEY (id)

) ENGINE = InnoDB;

  • 主键

主键值必须唯一。即,表中的每个行必须具有唯一的主

键值。如果主键使用单个列,则它的值必须唯一。如果使用多个列,则

这些列的组合值必须唯一。

为创建由多个列组成的主键,应该以逗号分隔的列表给出各列名,

PRIMARY KEY(colx,coly,colz)

**每个表只允许一个AUTO_INCREMENT列,而且它必须被索引(如,通

过使它成为主键)。**

  • 确定AUTO_INCREMENT值

最后

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
轻大家的负担。**

[外链图片转存中…(img-XtYkWGwp-1715109068706)]

[外链图片转存中…(img-fMdzQw92-1715109068707)]

[外链图片转存中…(img-V9zUS9z0-1715109068707)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

  • 20
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值