DML语句用于插入、更新和删除数据,主要包含INSERT语句、UPDATE语句、DELETE语句。
使用下面的语句可以向前面建的学生表(student)中插入数据:
INSERT INTO student VALUES(1, '张三', 14);
由此可以看出,INSERT语句的语法为:以“INSERT INTO”关键字为首,后面跟表名,然后再跟“VALUES”关键字,最后是由小括号括起来的以逗号分隔的各列数据,数据的顺序与定义表时表列的顺序相同。当然,也可以在表名后指定要插入的数据列的顺序,SQL语句如下:
INSERT INTO student(no, age, student_name) VALUES(2, 13, '李四');
在插入数据时,也可以不为某些列插入数据,此时这些列的数据会被置空,SQL语句如下:
INSERT INTO student(no, student_name) VALUES(2, '王二');
如果在psql中执行了下面的语句,就可以使用SELECT语句查询数据了:
SELECT * FROM student;
SELECT语句的具体用法会在后面的章节中介绍,现在读者只需要掌握基础用法即可。
我们查询到的数据如下:
osdba=# select * from student; no | student_name | age ----+--------------+----- 1 | 张三 | 14 2 | 李四 | 13 3 | 王二 | (3 rows)
从上面的查询结果可以看出,在插入数据时,未提供的列数据会被置为NULL。
假设要把student表中所有学生的年龄(age)更新为“15”,则更新语句如下:
UPDATE student SET age = 15;
从上面的语句可以看出,更新语句以“UPDATE”关键字开始,后面跟表名,然后是“SET”关键字,表示要设置的数据,再后面就是要设置的数据表达式“age=15”,设置数据的表达式也很简单,格式是“列名=数据”。
实际执行的效果如下:
osdba=# UPDATE student SET age = 15; UPDATE 3 osdba=# select * from student; no | student_name | age ----+--------------+----- 1 | 张三 | 15 2 | 李四 | 15 3 | 王二 | 15 (3 rows)
在更新数据时,还可以指定过滤表达式“WHERE”,从而指定更新哪条或哪些数据,比如,要将学号(no)为“3”的学生的年龄更新为14岁,则使用如下语句:
UPDATE student SET age =14 WHERE no = 3;
在SET子句中,还可以同时更新多个列的值,如下所示:
UPDATE student SET age =13, student_name='王明充' WHERE no = 3;
删除学号(no)为“3”的学生的记录的语句如下:
DELETE FROM student WHERE no = 3;
由此可见,删除语句比较简单,以“DELETE FROM”开始,后面跟表名,然后再加一个“WHERE”子句用于指定要删除的记录。
当然也可以没有“WHERE”子句,这表明要删除整个表的数据。删除表student表中所有数据的语句如下:
DELETE FROM student;