本章将介绍MySQL中的DML操作
1、添加数据(INSERT)
1.1、插入
语法结构:
INSERT INTO 表名(column1,column2,...) VALUES(value1,value2,....)
上述插入是指定列插入,如果表名后面的没有括号则是完全插入,数据库会将值按列的顺序插入进去。注意:在完全插入模式下如果主键是自动增长,则需要使用default或者null或者0占位。
示例一:向department表中添加一条数据,部门名称为market,工作地点ID为1
USE test01; INSERT INTO departments(department_name, location_id) VALUES("market",1)
示例二:向department表中添加一条数据,部门名称为development,工作地点ID为2,使用default占位
USE test01; INSERT INTO departments VALUES(default, "development", 2)
示例三:向department表中添加一条数据,部门名称为human,工作地点ID为3,使用null占位
USE test01; INSERT INTO departments VALUES(null, "human", 3)
1.2、默认值处理:
在MySQL中可以使用DEFAULT为字段设定一个默认值。如果在插入数据时并未指定该列的值,那么MySQL会将默认值添加到该列中。可以在创建表时,在指定字段后面使用DEFAULT关键字来设定默认值,例如下面示例一:
示例一:创建一个emp3表,该表包含emp_id主键且自动增长,包含name,包含address该列默认值为“未知”。
USE test01; CREATE TABLE emp3( emp_id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(30), address VARCHAR(30) DEFAULT "未知" )
我们使用DESC emp3来查看表信息,可以看到,address这一列有一个默认值是“未知”。
我们也可以使用修改表的列的方式为一个列增加默认值。
ALTER TABLE 表名 MODIFY 列名 数据类型 DEFAULT 默认值
注意,在插入数据时并未指定该列的值那么MySQL将会把默认值添加到该列中。如果完全项插入时需要使用default占位。
2、更新(UPDATE)
语法结构:
UPDATE 表名 [别名] SET column1=value1[, column2=value2,...] [WHERE condition]
注意MySQL中更新操作有几点需要注意的:
- 更新的表不能再set和where中用于子查询
- update后面可以做任意的查询
示例一:更新emp3表中id为1的数据,添加address为Beijing。
USE test01; UPDATE emp3 e SET address="Beijing" WHERE e.emp_id=1
示例二:更新emp3中id为2的数据,将地址修改为与id为1的用户的地址相同。
USE test01; UPDATE emp3 e, (SELECT address FROM emp3 WHERE emp_id=1) t SET e.address=t.address WHERE e.emp_id=2;
由于我们无法再SET后做子查询,因此我们可以再UPDATE时做一个临时表出来实现这个操作。
3、删除(DELETE)
语法结构:
DELETE FROM table [WHERE condition]
示例一:删除emp3表中emp_id为1的雇员信息
USE test01; DELETE FROM emp3 WHERE emp_id=1;
我们也可以使用TRUNCATE来删除所有数据。
TRUNCATE TABLE 表名
TRUNCATE和DELETE的区别:
- truncate是整体删除,delete是逐行删除
- truncate会重置自增值,相当于自增列会从初始值重新开始记录。而delete删除以后自增值仍然会继续累加。