数据库操作语言总共有 3 类:

  • 插入语句:INSERT
  • 修改语句:UPDATE
  • 删除语句:DELETE

    4.1 INSERT


顾名思义,INSERT 是用来插入(或添加)行到数据库表的,插入可以用几种方式使用:

  • 插入完整的行
  • 插入行的一部分
  • 插入多行
  • 插入某些查询的结果

    4.1.1 普通方式

    语法:
    1. INSERT INTO 表名(列名1,列名2,...,列名n) VALUES(值1,值2,...,值n);
    实例1:插入的值的类型要与列的类型一致或兼容
    1. INSERT INTO beauty
    2. (id,`name`,sex,borndate,phone,photo,boyfriend_id)
    3. VALUES (null,'王冰冰','女','1996-06-01',13097217207,null,22);
    实例2:字段不能为 null 的字段在插入时必须插入值,可以为 null 的字段如果插入 null,可以在对应的位置填入 null
    1. INSERT INTO beauty
    2. (id,`name`,sex,borndate,phone,photo,boyfriend_id)
    3. VALUES (15,'王大拿','女','1996-06-01',13097217207,null,22);
    实例3:只写部分字段
    1. INSERT INTO beauty
    2. (id,`name`,sex,borndate,phone,boyfriend_id)
    3. VALUES (16,'李婷婷','女','1996-06-01',13097217207,22);

    列数和值的个数必须一致

实例4:调换插入的值的顺序

  1. INSERT INTO beauty(`name`,sex,id,phone)
  2. VALUES('蒋欣','女',17,13097217207)

实例5:可以省略列名,默认是所有列,而且列的顺序和表中列的顺序一致

  1. INSERT INTO beauty
  2. VALUES (18,'王冰晶','女','1996-06-01',13097217207,null,22);

4.1.2 SET 方式

语法:

  1. INSERT INTO 表名
  2. SET 列名1=值1,列名2=值2,...

实例:

  1. # 第二种方式插入
  2. INSERT INTO beauty
  3. SET id=19,`name`='刘涛',phone=999

4.1.3 两种方式对比

  1. 普通方式支持多行插入,SET 方式不支持
  2. 普通方式支持子查询插入,SET 方式不支持

4.2 UPDATE

4.2.1 修改单张表中的记录

语法:

  1. UPDATE 表名
  2. SET 1=新值1,列2=新值2,...,列n=新值n
  3. WHERE 筛选条件

实例1:修改 beauty 表中的姓唐的女生的电话为 13899999

  1. UPDATE beauty
  2. SET phone = '13899999'
  3. WHERE `name` LIKE '唐%';

实例2:修改boys表中id号为2的数据,名字改成张飞,魅力值为10

  1. UPDATE boys
  2. SET boyName = '张飞',userCP=10
  3. WHERE id = 2;

4.2.1 修改多张表的记录【级联更新】

语法:

  1. # sql92
  2. UPDATE 1 别名,表2 别名
  3. SET 1=值1,列2=值2,...
  4. WHERE 筛选条件
  5. # sql99
  6. update 1 别名
  7. INNER|LEFT|RIGHT JOIN 2 别名
  8. ON 连接条件
  9. SET 1=值1,列2=值2
  10. WHERE 筛选条件

实例1:修改女朋友的电话号码为 114

  1. UPDATE boys b
  2. LEFT JOIN beauty be
  3. ON b.id=be.id
  4. SET phone = '114'
  5. WHERE boyName = '周杰伦';

实例2:将没有男朋友的女神的男朋友都改成张飞

  1. UPDATE beauty be
  2. LEFT JOIN boys b
  3. on be.boyfriend_id = b.id
  4. SET be.boyfriend_id = 2
  5. WHERE b.id IS NULL

4.3 DELETE


方式一:delete 关键字

语法 1:删除单表中的数据

  1. DELETE FROM 表名 WHERE 筛选条件

语法 2:删除多表中的数据

  1. ## sql92 语法
  2. DELETE 1的别名,表2的别名
  3. FROM 1 别名,表2 别名
  4. WHERE 连接条件
  5. AND 筛选条件
  6. ##sql99语法
  7. DELETE 表的别名1,表的别名2 FROM 1 别名
  8. INNER|LEFT|RIGHT JOIN 2 别名
  9. ON 连接条件
  10. WHERE 筛选条件

如果不加筛选条件默认删除所有的数据

实例1:删除手机号以 9 结尾的女神的信息

  1. DELETE FROM beauty
  2. WHERE phone LIKE '%9'

实例2:删除周杰伦的女朋友

  1. DELETE be FROM beauty be
  2. LEFT JOIN boys b
  3. ON be.boyfriend_id = b.id
  4. WHERE b.boyName = '周杰伦'

多表的删除,要确定删除的是那张表中的数据,所以 delete 后面要跟表的别名,可以跟多个,以确定是删除连接的表中的哪些表的数据要删除

方式二:truncate 关键字

语法:

  1. TRUNCATE table 表名;

不能加筛选条件,默认删除表中的所有数据

实例1:删除表中的所有数据

  1. TRUNCATE TABLE boys;

总结

  1. DELETE 可以加 WHERE 条件,TRUNCATE 不能加
  2. TRUNCATE 删除,效率高一点
  3. 加入要删除的表中有自增长列,如果用 DELETE 删除后,再插入数据,自增长列的值从断点开始;而 TRUNCATE 删除后,再插入数据,自增长列的值从 1 开始。
  4. TRUNCATE 删除不能回滚,DELETE 删除可以回滚