之前主要讲的是数据的查询,这里讲的是数据的插入、修改、删除。
数据插入
主要分成两类,一种是元组(基本是自己写的数据插入到表中),另一种是子查询结构(拼凑其他表的数据)
插入元组
insert into <表名> [(<列名>, .....)] values (<常量>);
values
可以通过,
隔开加多个数据。
insert into <表名> [(<列名>, ...)] values (<常量>,...), (<常量>,...);
PS.表名后不加列名,sql会默认你要输入所以的字段,并且按照数据库中表列顺序
例子:
INSERT INTO emp(id, username, password) value (1, 张三, 123), (2, 李四, 123)
例子中在emp
表中加入了有三个字段值的两条数据。
PS. 往表里加数据时,非空字段的数据一定要加,否则会失败
插入子查询结果
insert into <表名> [(<列名>, .....)] 子查询
一般不写列明,以子查询的select
后跟的字段为列名
数据修改
通过update
关键词进行数据的更新,也就是俗称的"改"操作。
update <表名> set <列名>=<表达式>,.... where <条件>;
PS.如果where
中不写条件,则作用在全表中
可以一次性设置多行记录的值,也可以一次性修改多列数据的值。
提示 在MySQL中,update和delete操作的子查询中不能出现select这张表的数据 解决方法:
-
给这个子查询的表重命名然后再在这张重命名的表里进行查询。
-
使用视图(虚表)。(后面会讲)
数据删除
通过delete
关键词进行数据的删除,也就是俗称的"删"操作。
delete<表名> where <条件>;
PS. 一定注意,删除数据之后恢复很难,所以进行数据删除时都要再删考虑一下是否要做
删除时要先删从表,再删主表。不然无法删除。并且删除后要确保数据库的三大完整性。
私货
带数据的复制表: create table 新表名 select * from 旧表名
不带数据的复制表: create table 新表名 like 旧表名