1. 插入数据
1.1 语法形式1:
insert [into] 表名 [(字段名1,字段名2,….)] values (值表达式1,值表达式2,….), (…..), ….;
1.2语法形式2:
replace [into] 表名 [(字段名1,字段名2,….)] values (值表达式1,值表达式2,….), (…..), ….;
其跟insert into几乎一样:唯一区别是,如果插入的数据的主键或唯一键“有重复”,则此时就会变成“修改该行数据”;
1.3语法形式3:
insert [into] 表名 [(字段名1,字段名2,….)] select 字段名1,字段名2,…. from 其他表名;
1.4语法形式4:
insert [into] 表名 set 字段名1=值表达式1,字段名2=值表达式2,….;
1.5其他插入数据语法
- 载入文本数据:load data infile语法(mysql设置的utf8编码,要导入txt文件也要保存utf-8编码);点击链接详见
- 完整复制一个表(包括表结构和表数据):create table 新表名 select * from 原表名;
说明:
1. 形式一和形式三可以一次性插入多条数据,且形式三的数据来源是由其中的select语句所获取的;
2. 形式一和形式三的字段列表部分可以省略(但严重不推荐),此时值列表部分必须依次完全对应该表的每一个字段;
3. 不管哪种形式,字段名和字段值都有“一一对应”关系:数量,顺序和类型都应该对应;
4. 其中的值表达式,可以是一个“直接”,或“函数调用结果”,或变量值;其中,如果对应字段是字符或时间类型,则直接值应该使用单引号;
5. 不管哪种形式,每次插入都必然是以“行”为单位进行,要么成功插入一行,要么失败。对于语句中没有给定的字段,成功的插入必然会根据表或系统的设定而获得“默认值”(有时候默认值就是空值“null”);
6. 注意字符串类型和时间日期类型的字面量值通常都需要用单引号引起来,比如:'hello','你好', '2015-09-12 12:12:08";
7. 语句中所给定的字段名的顺序可以不是表中的实际顺序;
8. 有的字段通常都无需插入数据,比如具有auto_increment属性的字段,或类型为timestamp的字段。
2. 插入数据
基本语法形式:
delete from 表名 [where条件] [order排序] [limit限定];
说明:
1. 删除是以“行”为单位的,一行数据要么删除成功,要么没有删除。
2. where条件可选,但通常都必须有,用来删除满足条件的数据;如果没有设定条件,则会删除所有数据。
3. order排序可选,通常不需要,用来指定按设定的数据顺序删除。
limit限定可选,通常不需要,用来限定删除哪些行的数据(指第几行开始的多少条)。
4.其他类似删除数据语句:
truncate语句:truncate [table] 表名;用于直接删除整个表(结构)并重新创建该表。此时数据自然全部没有了,而且表恢复到初始状态(比如auto_increment的当前值就变成初始值了,而如果用delete删除即使删除所有数据,auto_increment值也会保留)。
3.修改数据
基本语法形式:
update 表名 set 字段名1=值表达式1,字段名2=值表达式2,….[where条件] [order排序] [limit限定];
说明:
1. 修改是以“行”为单位的,一行数据要么修改成功,要么没有修改,虽然我们可以设定只修改表中的部分字段,但也应该以“行”为单位去理解它。
2. where条件可选,但通常都必须有,用来修改满足条件的数据;如果没有设定条件,则会修改所有数据。
3. order排序可选,通常不需要,用来指定按设定的数据顺序修改。
4. limit限定可选,通常不需要,用来限定修改哪些行的数据(指第几行开始的多少条)。