插入更新和删除数据

4.1 插入数据

4.1.1 为表的所有字段插入数据

使用基本的INSERT语句插入数据要求指定表名称和插入到新记录中的值。
INSERT INTO table_name (column_list) VALUES (value_list);

虽然使用INSERT插入数据时可以忽略插入数据的列名称,但是值如果不包含
列名称,那么Values关键字后面的值不仅要求完整,而且顺序必须和表定义时列的顺序相同

4.1.2 为表的指定字段插入数据

为表的指定字段插入数据,就是在INSERT语句中只向部分字段中插入值,而其他字段的值为表定义时的默认值。

4.1.3 同时插入多条记录

INSERT语句可以同时向数据表中插入多条记录,插入时指定多个值列表,每个值列表之间用逗号分隔开,基本语法格式如下,
INSERT INTO table_name (column_list) VALUES (value_list1), (value_list2),...,
(value_listn);

4.1.4 将查询结果插入到表中(把这个表中的数据插入到另外一个表中)

不需要使用values
INSERT语句和SELECT语句组成的组合语句即可快速地从一个或多个表中向一个表中插入多个行。
INSERT INTO table_name1 (column_list1)
SELECT (column_list2) FROM table_name2
WHERE (condition)

4.2 更新数据

MySQL中使用UPDATE语句更新表中的记录,可以更新特定的行或者同时更新所有的行。

UPDATE table_name 
     SET column_name1 = value1,
     column_name2=value2,……,
     column_namen=valuen
     WHERE (condition);

4.3 删除数据

从数据表中删除数据使用DELETE语句,DELETE语句允许WHERE子句指定删除条件。**delete需加FROM在表名之前 **

DELETE FROM table_name、
		[WHERE condition>] ;

DROP和truncate的语法

xxx table tablename # xxx为上述关键字

4.4 为表增加计算列

什么叫计算列呢,简单来说就是某一列的值是通过别的列计算得来,例如a列值为1,b列值为2,c列不需要操作手动插入,定义为a + b的结果为c的值,那么c就是计算列,是通过别的列计算得来。
增加计算列的语法格式如下:

col_name data_type [GENERATED ALWAYS] AS (expression)
      [VIRTUAL | STORED] [UNIQUE [KEY]] [COMMENT comment]
      [NOT NULL | NULL] [[PRIMARY] KEY]

实例

可在创建数据表时使它自动增加

create table tb1(
id int(9) auto_increment,
a int(9) default null,
b int(9) default null,
c int(9) generated always as ((a+b)) virtual,
primary key (id)
);

在哪使用generate always as (字段1+字段2)

一般在创建表的时候,或者可以使用alter table增加字段和属性

在MySQL8.0中,CREAE TABLE和ALTER TABLE中都支持增加计算列
主要使用这句在定义也就是CREAE TABLE的时候中用GENERATED ALWAYS AS (expression)VIRTUAL;expression为表达式

在MySQL 8.0中,CREAE TABLE和ALTER TABLE中都支持增加计算列。下面以在CREAE TABLE中为例进行讲解。

4.5 MySQL 8.0的新特性——DDL的原子化

在MySQL 8.0版本中,InnoDB表的DDL支持事务完整性。即DDL操作要么成功要么回滚。DDL操作回滚日志写入到data dictionary 数据字典表 mysql.innodb_ddl_log 中用于回滚操作,该表是隐藏的表,通过show tables无法看到。通过设置参数,可将DDL操作日志打印输出到mysql错误日志中。

就是删除多个表时,有几个是错误的,删除报错时,并不会把正确的给删除

4.6 综合案例——记录的插入、更新和删除

posted @ 2021-09-19 19:39  索匣  阅读(111)  评论(0编辑  收藏  举报