按照如下脚本创建两个表单:
CREATE TABLE students(id INT, `name` VARCHAR(8), age_id INT);`students`
INSERT INTO students(id, `name`,age_id)
VALUE (1, '林一',2),(2,'王二',1),(3,'张三',3),(4,'李四',8),(5,'王五',1),(6,'赵六',9),(7,'刘七',10);
CREATE TABLE ages(id INT, age INT);
INSERT INTO ages(id, age)
VALUE(1,12),(2,22),(3,32),(4,42),(5,52),(6,62);
创建后的表单如下:
students
ages
一、增:作用是往数据库的记录表里面写入记录值
语法一:
INSERT INTO 表名(字段1,字段2,...) VALUE(字段1的值,字段2的值,...);
注意:
1、INSERT一条记录时,要保持插入数据类型和数据表定义的类型一致,比如定义为INT类型的字段不能插入VARCHAR类型数据。且“字段n"的位置顺序要和”字段n的值“的位置顺序一一对应。
2、表结构设计中定义为不可为空胡字段必须插入记录值,如果定义为null的字段可以不写入数据。
3、"表名"后面的字段列表可以省略,如果省略,则VALUE后面就必须完全按照表单设计顺序一一列出值,不建议这么使用。
#在students表单中插入一个名为何八且age序号为3的数据记录
INSERT INTO students(id, `name`, age_id) VALUE(8, '王八', 3);
结果:
语法二:
INSERT INTO 表名
SET 字段名1=值,字段名2=值,...;
#增加名叫”娄九“的数据到students中去
INSERT INTO students
SET id = 9, `name` = '娄九', age_id = 3;
输出结果:
以上两种语法比较(一般用语法一较多):
1、语法就可以一次性插入多条记录值,语法二不支持。
2、语法一可以支持子查询,语法二不支持。
二、修改语句:修改已有记录胡部分字段的值
1、修改单表记录
语法:update 表名 set 字段名1=新的值,字段2=新的值,...where条件;
#将students中名叫"娄九"的age_id修改为4
UPDATE students SET age_id=4 WHERE `name`='娄九';
输出结果:
2、修改多表记录
语法:92版本
update 表1 别名, 表2 别名
set 字段1=值
where 连接条件 and 筛选条件;
语法:99版本
update 表1 别名
【连接类型】join 表2 别名
on 连接条件
set 字段1=值...
where 筛选条件;
#把students中张三的年纪修改为22
UPDATE students s
INNER JOIN ages a
ON s.`age_id` = a.`id`
SET a.`age` = 22
WHERE s.`name` = '张三';
输出结果:
#修改没有年龄记录的同学的对应年龄的编号都为3
UPDATE students s
LEFT JOIN ages a
ON s.`age_id` = a.`id`
SET s.`age_id` = 3
WHERE a.`age` IS NULL;
三、删除操作:删除表里的记录行(都是整行的删除)
1、单表删除操作
语法:
delete from 表名 where 要删除的记录筛选条件;
#删除students中名为娄九的信息
DELETE FROM students WHERE `name`='娄九';
输出结果:
2、多表删除操作
92版本语法:
delete 别名1, 别名2
from 表1 别名1, 表2 别名2
where 连接条件 and 筛选条件
99版本语法:
delete 别名1,别名2
from 表1 别名1
【连接类型】join 表2 别名2
on 连接条件
where 筛选条件;
#删除名叫”何七“的人的年龄信息
DELETE a FROM students s
INNER JOIN ages a
ON s.`age_id` = a.`id`
WHERE s.`name` = '王八';
输出结果:
四、整表记录全部删除,不能加where条件
1、truncate table表名;
2、delete from 表名;
上述两个的区别:
1、delete可以加where条件,但是truncate不能。
2、truncate删除效率会高一些
3、加入删除表中有自增长字段,如果使用delete删除,再插入数据,自增长从断点值开始,用truncate则是从1开始。
4、truncate删除没有返回值,而用delete删除有返回值。
5、truncate删除不能回滚,而用delete删除可以回滚。
注意:一般不会进行整表删除操作。