数据操作语言(DML)一:插入数据insert、修改数据update、删除delete

一、插入数据(insert)

1、insert语句插入数据

语法格式:
insert into 表名(字段名1,字段名2,字段名3,…) values(值1,值2,值3,…)
举例:

insert into t_student(no,name,sex,classno,birth) values(1,'zhangsan','1','gaosan1ban');
//ERROR 1136 (21S01): Column count doesn't match value count at row 1

要求:字段的数量和值的数量相同,并且数据类型要对应相同。
方法一:省略字段的插入
// 字段可以省略不写,但是后面的value对数量和顺序都有要求。
不建议使用此种方式,因为当数据库表中的字段位置发生改变的时候会影响到insert语句

mysql> insert into t_student values(1,'Tom',1,'Senior 3','1992-11-27');
Query OK, 1 row affected (0.06 sec)
mysql> select * from t_student;

±-----±-----±-----±---------±-----------+
| no | name | sex | classno | birth |
±-----±-----±-----±---------±-----------+
| 1 | Tom | 1 | Senior 3 | 1992-11-27 |
±-----±-----±-----±---------±-----------+
1 row in set (0.00 sec)
方法二:指定字段的插入(建议使用此种方式)
举例1:

mysql> insert into t_student(no,name,sex,classno,birth) values(2,'Mary',0,'Senior 3','1992,5,4');

举例2:

mysql> insert into t_student(no,name) values (3,'Jack');// 除no,name字段之外,剩下的所有字段自动插入NULL。
Query OK, 1 row affected (0.07 sec)
mysql> select * from t_student;

一次插入多行数据

mysql> insert into t_student(no,name,sex,classno) values(4,'Ket',1,'Senior 3'),(5,'Jerry',1,'Senior 3');

需要注意的地方
当一条insert语句执行成功之后,表格当中必然会多一行记录。即使多的这一行记录当中某些字段是NULL,后期也没有办法在执行insert语句更改那些为NULL的数据了,只能使用update进行更新。

2、如何将查询的数据直接放到已经存在的表中,可以使用条件

mysql> insert into dept1 select * from dept;

二、修改数据:update

语法格式:

update 表名 set 字段名1=值1,字段名2=值2... where 条件;

注意:没有条件整张表数据全部更新
可以修改数据,可以根据条件修改数据
举例1:
将部门10的LOC修改为SHANGHAI,将部门名称修改为RENSHIBU

update dept1 set loc = 'SHANGHAI', dname = 'RENSHIBU' where deptno = 10;

举例2:
将job为manager的员工的工资上涨10%

update emp set sal=sal+sal*0.1 where job='MANAGER';

更新所有记录

update dept1 set loc = 'x', dname = 'y';

注意: • 如果需要回滚数据,需要保证在DML前,进行 设置:SET AUTOCOMMIT = FALSE

三、删除数据delete

可以删除数据,可以根据条件删除数据

1、语法格式:

delete from 表名 where 条件;

注意:没有条件全部删除。
举例:
删除10部门数据?

mysql> delete from dept1 where deptno = 10;

删除所有记录?

mysql> delete from dept1;

注意:删除完所有数据之后,表仍然存在,而且不释放表的存储空间
可以使用 DELETE 语句删除数据,可以回滚 • 对比: delete from emp2; select * from emp2; rollback; select * from emp2

2.怎么删除大表中的数据?(重点)

TRUNCATE TABLE 语句:

  • 删除表中所有的数据
  • 释放表的存储空间
truncate table 表名; // 表被截断,不可回滚。永久丢失。
上一篇:Mysql实战(DML增删改+Select)


下一篇:DML语句、DQL语句、完整性以及约束