• 数据库DML数据操作语言


    DML 数据操作语言

    DML:对表中数据进行操作的语言,涵盖的内容为:INSERT(增),DELETE(删),UPDATE(改)

    准备一张表:

    CREATE TABLE person(
                         name VARCHAR(30),
                         age INT(3)
    )
    
    • 1
    • 2
    • 3
    • 4

    1. 插入数据(INSERT)

    1.1 语法:

    INSERT INTO 表名[(字段1,字段2,...)] VALUES(字段的1,字段2的值,...)
    
    • 1

    注:在语法定义上"[]"中的内容表示可写可不写

    INSERT INTO person(name,age) VALUES('张三',25)
      INSERT INTO person(age,name) VALUES(33,'李四')
    
    • 1
    • 2

    注:

    • 数据库中字符串的字面量是使用单引号’'表达的

    • VALUES中指定的值要与指定的字段名个数,顺序,以及类型完全一致

    • 查看表中数据

      SELECT * FROM person
      
      • 1

    1.2 插入默认值

    当插入数据时不指定某个字段,那么该字段插入默认值。若创建表时字段没有显示的指定默认值时,默认值插入NULL

    例:

    INSERT INTO person (name) VALUES ('王五')
    
    • 1

    请添加图片描述

    注意事项:
    • age字段没有指定,因此插入默认值NULL

    • 数据库中任何字段任何类型默认值都是NULL,当然可以在创建表时使用DEFAULT指定。

      修改person表中age的默认值为20
      ALTER TABLE person CHANGE age age INT(3) DEFAULT 20
      
      修改后向person表中插入数据
      INSERT INTO person (name) VALUES ('赵六')
      
      
      提示:也可在创建person表时为字段指定默认值
      CREATE TABLE person(
      	name VARCHAR(30) DEFAULT '无名氏',
          age INT(3) DEFAULT 20
      )
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12

      为age添加默认值20:

    请添加图片描述

    插入’赵六’
    请添加图片描述

    1.3 全列插入

    当我们插入数据是不指定任何字段名时,就是全列插入。此时VALUES子句中需要为每个字段指定值。并且要求(个数,顺序,类型必须与表完全一致)

    例:

    INSERT INTO person VALUES('钱七',21);
    
    若某个字段有默认值,可以用DEFAULT表示默认值
    INSERT INTO person VALUES('钱七',DEFAULT);
    
    若某个字段想插入NULL值,可以使用NULL表达
    INSERT INTO person VALUES('钱七',NULL);
    
    下列为错误示例
    INSERT INTO person VALUES('钱七');		列的值个数不匹配
    INSERT INTO person VALUES(27,'钱七');		列的值类型不匹配
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    2. 修改数据(UPDATE)

    2.1 语法

    UPDATE 表名 SET 字段1=新值1[,字段2=新值2,...][WHERE 过滤条件]
    
    • 1

    UPDATE person SET age=15
      上述SQL执行后会导致person表中所有记录的age字段值都被改为15
    
    • 1
    • 2
    注意

    UPDATE语句通常都要添加WHERE子句,用于添加要修改记录的条件,否则全表修改!

    2.2 修改指定记录(添加WHERE子句)

    将张三的年龄改成20UPDATE person
    SET age=20
    WHERE name='张三'		仅将person表中某条记录name字段值为‘张三’的age改为20
    
    将person表中年龄为16岁的人改为36UPDATE person
    Set age=36
    WHERE age=16		  person表中凡是满足WHERE条件的记录都会被修改
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    (1) WHERE子句中常用的条件

    =, <, <= ,> ,>= ,<>(不等于使用<>。!=不是所有数据库都支持)

    将person表中年龄大于30岁的人改为年龄29
    UPDATE person
    SET age=29
    WHERE age>30
    
    • 1
    • 2
    • 3
    • 4

    2.3 将一个计算表达式的结果作为值使用

    将person表中每个人的年龄涨1UPDATE person
    SET age=age+1			将每条记录年龄的值+1后再修改回年龄字段
    
    • 1
    • 2
    • 3

    2.4 同时修改多个字段

    '李四'改为'李老四'且年龄改为55UPDATE person
    SET name='李老四',age=55
    WHERE name='李四'
    
    • 1
    • 2
    • 3
    • 4

    3. 删除语句(DELETE)

    3.1 语法:

    DELETE FROM 表名 [WHERE 过滤条件]
    
    • 1

    注:DELETE语句通常都要添加WHERE子句,否则是清空表操作

    例:

    删除'李老四'
    DELETE FROM person
    WHERE name='李老四'	仅删除person表中满足WHERE条件的记录
    
    
    删除年龄大于等于30岁的人
    DELETE FROM person
    WHERE age>=30
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    3.2 清空表操作

    DELETE FROM person
    
    • 1

    练习:

    1.创建数据库day1db 字符集utf8并使用
      CREATE DATABASE day1db CHARSET=utf8
      USE day1db
    2.创建t_hero表, 有name字段,字符集utf8
    CREATE TABLE t_hero(
      name VARCHAR(30)
    )CHARSET=utf8
    3.修改表名为hero
      RENAME TABLE t_hero TO hero
    4.最后面添加价格字段money, 最前面添加id字段, name后面添加age字段
    ALTER TABLE hero ADD money INT
    ALTER TABLE hero ADD id INT FIRST
    ALTER TABLE hero ADD age INT AFTER name
      
    5.表中添加以下数据: 1,李白,50,6888 2,赵云,30,13888 3,刘备,25,6888
      INSERT INTO hero(id,name,age,money) VALUES(1,'李白',50,6888)
      INSERT INTO hero(id,name,age,money) VALUES(2,'赵云',30,13888)
      INSERT INTO hero(id,name,age,money) VALUES(3,'刘备',25,6888)
    6.修改刘备年龄为52UPDATE hero
    SET age=52
    WHERE name='刘备'
      7.修改年龄小于等于50岁的价格为5000
    UPDATE hero
    SET money=5000
    WHERE age<=50
      8.删除价格为5000的信息
    DELETE FROM hero
    WHERE money=5000
      9.删除表, 删除数据库
    DROP TABLE hero
    DROP DATABASE day1db
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33

    4. 总结

    • DML:数据操作语言,它是对表中数据进行操作的语言,涵盖操作:增(INSERT),删(DELETE),改(UPDATE)

    • INSERT语句用于将数据插入表中

      • INSERT时指定的字段顺序可以与表不一致,但是VALUES子句中值的顺序要与指定顺序一致

      • INSERT时可以不指定某字段,那么此时该条记录该字段会插入默认值

      • INSERT时为某个字段插入其指定的默认值,使用关键字DEFAULT。

        字段若指定了默认值则使用该默认值,否则字段默认值为NULL。

      • INSERT时使用NULL插入一个字段为null值。

      • INSERT时可以不指定字段名,那么为全列插入,此时VALUES子句指定的值顺序,个数,类型必须与表结构完全一致。

    • UPDATE语句用于修改表中数据

    • DELETE语句用于删除表中数据

    • UPDATE语句和DELETE语句通常都要添加WHERE子句,否则是对全表所有记录操作。

    数据库相关文章推荐

    1. 数据库基本概念介绍和MariaDB安装
    2. 数据库DDL数据定义语言
    3. 数据库DQL数据查询语言
    4. 数据库常用的数据类型和约束条件
  • 相关阅读:
    Spring Retry教程(3)-模板方式的实现
    什么是RESTful API,以及如何它使用构建 web 应用程序(InsCode AI 创作助手)
    接口的幂等性——详细谈谈接口的幂等即解决方案
    前端文件下载的正确打开方式以及网页间的跳转方式
    DAY37:SSRF 漏洞
    Ruby中Rack中间件的使用场景和注意事项
    装openwrt路由器断电重启后变砖
    CDMP证书是什么样?CDMP证书有用吗?
    IOU GIOU DIOU CIOU
    [C++][算法基础]求组合数(II)
  • 原文地址:https://blog.csdn.net/aiheshuicxy/article/details/128013092