插入数据spa
①插入一行记录开发
INSERT INTO TABLE_NAME(列名1,列名2,.......) 字符串
VALUES(值1,值2,.......);date
②插入多行记录数据类型
INSERT INTO TABLE_NAME(列名1,列名2,.......)总结
VALUES(值1,值2,.......),
数据
...........查询
VALUES(值1,值2,.......);co
③插入查询结果(多是结果集)字符
INSERT INTO TABLE_NAME(列名1,列名2,.......)
SELECT(列名1,列名2,.......)
FROM TABLE_NAME2
WHERE .........
注意:
1. 若是用TABLE_NAME(列名1,列名2,.......) ,那么对于语句里面的字段参数:
顺序能够自定义,不用和表的字段顺序一致;
要插入哪些字段也能够自定义,不用把表的全部字段都写上。
2. VALUES(值1,值2,.......)语句里的赋值参数,会和上面的字段参数一一对应。
并且咱们写要插入的值的时候,必须保证所插入的值和对应字段的数据类型一致,好比字段name数据类型是VARCHAR,那么咱们插入的值就必须是字符串,即单引号 'xxx' ;再好比,字段参数是student(name,age),咱们插入的值不能是 VALUES( ,12),若是想插入空值必须用NULL。
总结一下,一旦咱们选择了要插入的字段,咱们就必须保证要插入的数值和选择的字段的个数,顺序,类型一致。
举个例子,假设如今有表student(id,name,age,sex),咱们选择的要INSERT INTO 的字段是student(name,age),那么VALUES的时候绝对不能出现如下四种状况:
VALUES( ,12) 插入了MYSQL不识别的值,想插入空值必须用NULL。
VALUES( '王一') 插入的数值和选择的字段的个数不一样
VALUES(12, '王一') 字段参数的顺序和插入数值的顺序不一样,不能一一对应
VALUES('王一', '十二') 插入数值和字段类型不一样
3. 上面提到咱们能够只选择部分字段进行插入,那么那些未选择的字段会怎么样呢?
①在具体开发中,有自动增长约束和默认值约束的字段咱们通常会把他们忽略,不须要咱们手动赋值,MYSQL会自动给其赋值。
②有时,有些字段暂时是多余的,假设这些字段既没有默认值约束,也没有自动增长约束,同时咱们又不想删掉这些字段,那么咱们会不选择这些字段,让,MYSQL给他们自动插入NULL值。
4. 若是咱们想选择全部字段,把全部字段都写一遍就太麻烦了,咱们能够忽略字段参数,直接用
INSERT INTO TABLE_NAME
...........
...........
假设有表student(id,name,age,sex),上面的语句INSERT INTO student,就至关于INSERT INTO student(id,name,age,sex)。
可是这种用法虽然方便,但不灵活,这种用法就只能表示表的全部字段,且字段顺序和表的字段顺序同样。
5.插入查询结果其实和插入记录其实差很少,只不过一个是SELECT(列名1,列名2,.......),一个是VALUES(值1,值2,.......),SELECT里面的参数和VALUES的参数同样,都适用且必须遵照上面4条规则。
假设有表student(id,name,age,sex)和表children(id,sex,age,name)
INSERT INTO student(name,age,sex)
SELECT sex,age,name #字段参数的顺序和插入数值的顺序不一样,不能一一对应
FROM children
WHERE age>7;
这样是不行的,MYSQL尚未智能到帮你自动匹配字段。
删除数据
Delete from 表名
[where条件];
注意:通常都会加where条件,没有条件的话,整个表的数据都会被删除。删除操做需谨慎,此操做不可逆
修改数据
Update 表名 set 字段 = 值
[where条件];
注意:通常都会加where条件,没有条件的话,会修改全部记录。更新操做需谨慎,此操做不可逆