插入数据
①插入一行记录
INSERT INTO TABLE_NAME(列名1,列名2,.......)
VALUES(值1,值2,.......);
②插入多行记录
INSERT INTO TABLE_NAME(列名1,列名2,.......)
VALUES(值1,值2,.......),
...........
VALUES(值1,值2,.......);
③插入查询结果(可能是结果集)
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条件,没有条件的话,会修改所有记录。更新操作需谨慎,此操作不可逆