MySQL 系统学习系列 - SQL 语句 DML 语句的使用《MySQL系列篇-02》

SQL语句DML

数据库DML操作

0. MySQL中大小写问题tip

  • 1.数据库名与表名是严格区分大小写的 (window不区分)
  • 2.表的别名是严格区分大小写的(如stu as s)(window不区分)
  • 3.列名忽略大小写
  • 4.变量名也是严格区分大小写

1. 插入数据

  • 其中分别可以使用全列插入、缺省插入与批量插入三种方式

sql 复制代码
# 全列插入:INSERT INTO 表名 VALUES(v1,v2,v3,...)
  INSERT INTO stu VALUES(1,'kong',18);
  INSERT INTO stu VALUES(2,'deng',18);
  
# 缺省插入 [即直插入指定列的数据]
  # INSERT INTO 表名(c1,c2,c3,..) VALUES(v1,v2,v3,..)  [其中c1等是指定所要添加数据的列-主要约束问题]
  # 使用缺省插入需要主要有些列是否为非空的
    INSERT INTO stu(id,name) VALUES(0,'wang');
    
# 批量插入 [全列插入多行数据]
  # 全列批量插入:INSERT INTO 表名 VALUES(v1-1,v1-2,...),(v2-1,v2-2,...),.......
    INSERT INTO stu VALUES(0,'v1',1),(0,'v2',2),(0,'v3',3);
  # 缺省值批量插入:INSERT INTO 表名(c1,c2,..) VALUES(v1-1,v1-2,..),(v2-1,v2-2,..),....
    INSERT INTO stu(id,name) VALUES(0,'id1'),(0,'id2');
  
# 批量插入中也可以存在全列插入与缺省插入两种方式,使用方法与上面的无异

2. 更新数据update

  • 更新数据也可以理解为是修改数据:update 表名 set 列1=值1,...... where 条件;

sql 复制代码
# 下面该语句表示更新stu表中的name为kong的数据为new_kong
  UPDATE stu SET name='new_kong' where name='kong'; 
  
# 同时修改多列
  UPDATE stu SET name='kong',age=3 WHERE name='new_kong';
  
    # 当然上面的语句也可以不加 where 条件语句,不过风险会比较大

3. 删除数据

  • delete语句删除

    sql 复制代码
    # 清空表中所有的数据:DELETE FROM 表名
      DELETE FROM stu; # 清空stu表中的所有数据
      
    # 清空表中符合条件的数据:DELETE FROM 表名 WHERE 条件
      DELETE FROM stu WHERE age<7; # 清空stu表中所有age小于7的数据
  • truncate语句删除

    • truncate也是删除数据,但是不可以加where(即只能清空表中所有的信息),执行效率要比delete要高

    sql 复制代码
    # 清空表中所有的数据:TRUNCATE FROM 表名
     TRUNCATE TABLE stu; # 清空stu表中的所有数据
  • delete与truncate语句的区别

    • delete可以加where条件判断使用,来指定删除符合某一个条件的数据 - 而truncate不能加where语句
    • truncate比delete效率要高 缺:不能加where
  • 删除表(整张表都会被删除):drop table 表名

物理删除和逻辑删除

物理删除: 就是将数据从数据库中彻底删除(delete操作属于物理删除,物理删除的数据无法恢复,对于一些重要的数据,还是建议使用逻辑删除)

逻辑删除:

  • 逻辑删除本质是修改(UPDATE)操作,对于重要数据表,增加一个isDelete字段,一般默认为0(没有被删除的的意思),该字段逻辑上表示该条数据是否被删除,真实情况是在数据库中本条数据还存在

    sql 复制代码
    create table student(
        id int not nul1 auto_increment primary key,
        age int,
        name char(20).
        isDelete bit default 0
        engine=innodb defaut charset=utf8;
    )
  • 也可以理解为是添加了一个回收站,并非是真正的删除

相关推荐
一楼的猫3 分钟前
茄子写作助手是什么——网文作者长篇小说AI创作工具完整说明
人工智能·学习·机器学习·chatgpt·ai写作
AI_零食3 分钟前
HarmonyOS-鸿蒙原生 ArkTS 布局系统:width(‘100%‘) 的本质与 padding 陷阱
前端·学习·华为·harmonyos·鸿蒙
Kobebryant-Manba11 分钟前
学习自定义层&读写文件&使用gpu
学习
TDengine (老段)14 分钟前
TDengine SQL 解析与词法分析 — 从字符串到 AST 的转换之路
大数据·数据库·sql·物联网·时序数据库·tdengine·涛思数据
StarRocks_labs15 分钟前
StarRocks × Iceberg:联邦查询实践解析
数据库·starrocks·sql·iceberg·物化视图
啦哈拉哈15 分钟前
【Python】知识点零碎学习7
python·学习·算法
熊文豪18 分钟前
SQL并行查询优化实践:从执行计划看并行能力的正确使用
数据库·sql·电科金仓
Fuly102421 分钟前
LangGraph学习-(1)跑通一个最小状态图
数据库·学习
段一凡-华北理工大学21 分钟前
工业领域的Hadoop架构学习~系列文章19:能源行业Hadoop应用实践
大数据·人工智能·hadoop·分布式·学习·架构·高炉炼铁
syagain_zsx22 分钟前
Linux进程控制学习总结(1/2)
linux·运维·学习