3.8 数据的插入、修改和删除
本节介绍如何向表中插入数据、修改数据和删除数据。
3.8.1 实例16:向表中插入数据
一个刚创建的表是没有数据的。必须插入数据,这个表才能发挥作用。用户可以使用INSERT命令向表中插入数据。
方式1 不指定字段插入数据
(1)创建department表,代码如下:
(2)使用INSERT命令插入数据,代码如下:
当插入数据时需要表的名称和字段的值。字段的值可以是常量,也可以是常量表达式。
在上面的实例中,VALUES关键字后面的参数是表中各个字段的取值列表,该列表的顺序和表中字段顺序必须一致。所以,在采用这种方式向表中插入数据时,用户必须知道表中字段的顺序。
方式2 指定字段插入数据
如果不想拘泥于表中的字段顺序,则需要在语句中增加字段名列表,插入的各个字段值与列出的字段名列表依次对应。下面两个语句的运行效果是一样的。
语句1如下:
语句2如下:
提示:
如果表中字段有默认值,则INSERT语句中就可以忽略该字段。如下所示,createtime字段的默认值为空值,当不需要给该字段显式赋值时,INSERT语句可以省略该字段的赋值。
postgres=#INSERT INTO department (deptid,deptname) VALUES (1,′IT′);
INSERT 0 1
方式3 字段值从左到右匹配插入数据
下面这种形式是PostgreSQL的一个扩展形式。值列表中的数据会从左到右依次匹配到字段中,剩余没有匹配到的字段则取默认值,代码如下:
也可以直接采用下面这种形式,第3个字段的值取默认值,代码如下:
方式4 所有的字段都取默认值时插入数据
如果表的所有字段有默认值或允许为空值,则一条记录所有的字段都取默认值时,也可以直接使用CREATE TABLE命令插入数据。下面定义一个所有字段允许为空值的department_default表,代码如下:
例如,向department_default表插入数据,所有字段都取默认值,代码如下:
方式5 同时插入多条数据
【举例】使用INSERT命令同时插入多条数据,代码如下:
3.8.2 实例17:修改表中的数据
如果表中已经存在数据,可以使用UPDATE命令修改数据。UPDATE命令可以修改一条或多条记录的所有字段的值或部分字段的值。
UPDATE命令需要以下3个方面的信息。
● 待修改数据的表名和字段名。
● 字段修改后的值。
● 哪些行需要修改。
【举例】修改department表,将字段deptid=2的记录中的字段createtime的值修改为“2018-09-01 00:00:00”,代码如下:
其中,UPDATE后面是表名,SET子句由字段名、等号、字段取值组成,WHERE子句由字段名、等号、字段取值组成。
如果没有语句符合UPDATE命令的条件,则语句不会报错。
在UPDATE命令中可以同时更新多个字段,字段之间用逗号分隔,代码如下:
1.SET子句
在SET子句中,字段的值可以是一个表达式(与表中字段相关的表达式)。
【举例】在department表中,所有字段deptid的值在原有的基础上增加10,代码如下:
2.WHERE子句
WHERE子句不是必需的。如果没有WHERE子句,则表中所有的记录都会被修改。
WHERE子句中的等号和SET子句中的等号作用是不同的。
● WHERE子句中的等号用于比较,这里也可以是其他比较运算符。
● SET子句中的等号用于赋值。
【举例】在department表中,将deptname等于“IT”的所有字段的deptid值在原有的基础上增加10,代码如下:
3.8.3 实例18:删除表中的数据
下面介绍如何删除表中的数据。与插入数据一样,必须删除整行数据,不允许只删除一行中的某些字段。
● 如果表中有主键,则可以通过主键直接定位到某个特定的行。
● 如果表中没有主键,则只能通过特定的条件来匹配表中需要删除的数据。
删除数据需要使用DELETE命令。与UPDATE命令类似,一次可以删除一行数据,也可以删除多行数据或所有数据。
【举例】删除department表中所有deptid<5的数据,代码如下:
【举例】删除department表中所有数据,代码如下: