语法:
insert into 表名(列名1,列名2,列名3..) values(值1,值2,值3..);--向表中插入某些列
insert into 表名 values(值1,值2,值3..); /*向表中插入所有列,一般少用,尽量用上一种,因为即使表结构改了上一种也能用*/
如果要省略部分列就要保证,这些列可以为null或者建表的时候设置了默认值。
注意:
mysql> insert into stu values (null,'辛弃疾',default,66),(null,'岳飞','河南',77);
Query OK, 2 rows affected (0.00 sec)
Records: 2 Duplicates: 0 Warnings: 0
注意:INSERT SELECT,它可以用一条INSERT插入多行,不管SELECT语句返回多少行,都将被 INSERT 插入。
insert into 表名1[(列名1,列名2...)]-- 可选插入部分列 或者所有列
select [*|(列名1,列名2...)]--这里查询的列名要和插入的一一对应
from 表名2
[where 条件]
例如:
INSERT INTO Customers(cust_id,
cust_contact,
cust_email,
cust_name,
cust_address)
SELECT cust_id,
cust_contact,
cust_email,
cust_name,
cust_address
FROM CustNew;
update 表名 set 字段名=值,字段名=值...; --更新所有行
update 表名 set 字段名=值,字段名=值... where 条件;--更新特定行
注意:
使用Update 时一定要加 where 条件,如果不加条件就会将整个表的字段更新。所以一定一定一定加条件
delete from 表名 [where 条件]
/*如果不带where 条件就是删除所有行,如果带where 就是删除特定行*/
删除表中所有记录用delete from 表名;还是用 truncate table 表名?
注意:delete 是一条一条的删除,不亲空 auto_increment记录数。
truncate是直接将整张表删除,重新建表,auto_increment 将重置为0。 所以删除效率更高。
事务方面:delete 删除的数据,如果在一个事务内是可以找回,但是truncate 删除的数据是不可以找回的。
UPDATE 或 DELETE 时所遵循的重要原则: