在之前我们就已经学过了数据的插入,在这里再进行一点内容的补充:
在insert语句中,value子句中参数的顺序与表中各个列的顺序是一一对应的。
mysql> insert into first_table(second_column, first_column) values('aaa', 1);
Query OK, 1 row affected (0.00 sec)
就比如这个,交换了列的插入顺序,在value子句中也要交换顺序。
如果我们想把一个表的结果集插入到另一个表中的话一样可以进行操作:
mysql> create table second_table(
-> s varchar(200),
-> i int
-> );
Query OK, 0 rows affected (0.01 sec)
mysql> insert into second_table(s, i) select second_column, first_column from first_table;
Query OK, 1 row affected (0.00 sec)
Records: 1 Duplicates: 0 Warnings: 0
mysql> select * from second_table;
+------+------+
| s | i |
+------+------+
| aaa | 1 |
+------+------+
1 row in set (0.00 sec)
这里我们先创建一个second表格,如果想把之前的first表的结果集插入到second表中的话就可以在insert语句中插入一个select语句,就相当与这句话的执行过程为先select出一些数据,再把这些数据插入到second表格中。
在插入数据的时候也许我们并不知道待插入记录的主键或者unique键是否在表中有重复值,所以我们迫切的需要这样的一个功能,即对于那些是主键或者unique键的列或者列的组合来说,如果标红字那个已经存在的记录中没有与待插入记录在这列列或者列的组合上重复的值,那么就把待插入记录插到表中,否则忽略此次插入操作,MySQL提供了insert ignore语法来实现,第二种语法就是insert。。。。 on duplicate key update语句来更新表中已存在的记录。
删除数据:
语法:
delete from 表名 【where 表达式】
当然除了用where子句来限制删除的数量,用limit语句和order by语句一样也可以
更新数据:
语法:update 表名 set 列1=值1, 列2=值2, 。。。。【where 表达式】;