首页 > 数据库 >MySQL(三)MySQL DML数据库操作语言

MySQL(三)MySQL DML数据库操作语言

时间:2025-01-04 16:59:49浏览次数:3  
标签:goods 删除 数据库 MySQL DML 插入 表名 数据 字段名

1. MySQL DML数据库操作语言

  SQL(Structure Query Language)语言是数据库的核心语言。
  SQL语言共分为四大类:数据查询语言DQL,数据操纵语言DML,数据定义语言DDL,数据控制语言DCL。
  DML(data manipulation language)数据操纵语言,以INSERT、UPDATE、DELETE三种指令为核心,分别代表插入、更新与删除,主要用来对数据库的数据进行一些操作。

1.1. 数据插入(添加数据)

1.1.1. 插入数据有3种形式:

  (1)形式1:可以一次插入多条数据
  字段列表部分可以省略(不推荐),此时值列表部分必须依次完全对应该表的每一个字段;

insert into  表名 [(字段名1,字段名2,...)] values (值a1,值a2, ...),(值b1,值b2,...),...;

  (2)形式2:可以一次插入多条数据
  数据来源是由其中的select语句所获取的。
  字段列表部分可以省略(不推荐),此时值列表部分必须依次完全对应该表的每一个字段;

insert into  表名1 [(字段名1,字段名2,...)] select  字段名1,字段名2,...  from  表名2;

  (3)形式3:

insert  into  表名  set  字段名1=值1,字段名2=值2, ...;

1.1.2. 注意事项

  (1)字段名和字段值都有“一 一对应”关系:数量,顺序和类型都应该对应。
  (2)每次插入数据都必然是以“行”为单位进行,要么成功插入一行,要么失败。
  (3)对于语句中没有给定的字段,成功的插入必然会根据表或系统的设定而获得“默认值”(有时候默认值就是空值“null”)。
  (4)字符串类型和时间日期类型的字面量值通常都需要用单引号引起来,比如:‘abc’,‘web前端’, '2021-4-5 6:7:8"
  (5)值的形式,通常是这样:数字直接写,字符串和时间加单引号,但如果是函数值,则不能加引号。
  (6)语句中所给定的字段名的顺序可以不是表中的实际顺序。
  (7)有的字段通常都无需插入数据,比如具有auto_increment属性的字段,或类型为timestamp的字段。

1.1.3. 插入数据示例

在这里插入图片描述

1.1.4. 类似插入数据的语句

  载入文本数据:
  语法:

load  data  infile  '文件完整名(含路径)'  into  table  表名;

  作用:从一个外部的记事本文件中导入数据到某个表中。该记事本中的数据通常要求“比较整齐”,一行文本对应表的一行数据,一行中用某种字符(通常用tab符)来分割一个一个字段的值,
  类似这样:
在这里插入图片描述
  该语句的语法简单解释如图所示:
在这里插入图片描述
  插入数据示例:
在这里插入图片描述

1.2. 删除数据

1.2.1. 基本语法形式:

delete from 表名 [where条件] [order排序] [limit限定];

1.2.2. 注意事项

  (1)删除是“以行为单位”进行的,一行数据要么删除成功,要么删除失败。
  (2)删除语句中,where条件可选,但通常都要有,用来删除满足条件的数据;如果没有设定条件,则会删除所有数据,应用中极少如此。
  (3)order排序子句可选,应用中通常不需要,用来指定按设定的数据顺序删除。
  (4)limit限定子句可选,应用中通常不需要,用来限定删除哪些行的数据(指从第几行开始的多少条)。

1.2.3. 类似删除数据的语句truncate

  (runcate用于直接删除整个表(结构)并重新创建该表。

truncate [table] 表名;

  此时数据自然全部没有了,而且表恢复到初始状态(比如auto_increment的当前值就变成初始值了,而如果用delete删除即使删除所有数据,auto_increment值也会保留)。
  (1)删除整个表(数据和结构都没有了)。
  (2)重新创建该表(全新表)。
  (3)跟delete 语句不带where条件,有什么区别?
  主要影响的是类似auto_increment这种类型的字段值:runcate结果会重新计算,delete还能继续增长。
  示例:
在这里插入图片描述
  翻译:执行成功,0行受影响(0.00秒)

1.3. 修改数据

1.3.1. 基本语法:

update 表名 set 字段名1=值表达式1,字段名2=值表达式2,....[where条件] [order排序] [limit限定];

1.3.2. 注意事项

  (1)修改是以“行”为单位进行的,一行数据要么修改成功,要么没有修改,虽然可以设定只修改表中的部分字段,但也应该以“行”为单位去理解它。
  (2)where条件子句可选,但通常都必须有,用来修改满足条件的数据;如果没有设定条件,则会修改所有数据。
  (3)order排序子句可选,通常不需要,用来指定按设定的数据顺序修改。
  (4)limit限定子句可选,通常不需要,用来限定修改哪些行的数据(指从第几行开始的多少条,比如:前500行)。
  (5)字段的值可以是表达式,或直接值,或函数,如果是直接值,同样遵循insert语句中的值的写法。
  修改数据示例:
在这里插入图片描述

1.3. 复制表

  (1)复制表结构:

create table tab2 like tab1;

  (2)复制表数据:

insert into tab2 select * from tab1;

  (3)复制一个表:
  完整复制一个表(包括表结构和表数据):

create table 新表名 select * from 原表名;

  这种方法可能会丢一些结构信息,比如:索引,约束,自增长属性。

2. MySQL DML数据库操作语言示例

  DML:data manipulation language
  适用对象:表中的记录。
  功能:
  id int, goods_name varchar(50),goods_price int, goods_type varchar (40)

2.1. insert插入数据

2.1.1. 向表中添加数据

  插入数据表

 create table goods(id int not null,goods_name varchar(50) not null,goods_price int,goods_type varchar(40),primary
 key(id));

  插入数据

mysql>insert into yourtablename (列1,列2,...)  values(值1,值2...);
 insert into goods (id,goods_name,goods_price,goods_type) values (1,'羽绒服',500,'服装');

2.1.2. 查询数据

mysql>select * from tablename;(不指定where查询表中所有行*代表查询所有列)
select * from goods;

在这里插入图片描述
在这里插入图片描述

2.2. update更新数据

  更新表中的数据

mysql>update 表名 set 列名=表达式;将整个列的数据更新
mysql>update 表名 set 列名=表达式 where 条件表达式;更新部分数据
mysq1>update 表名 set 列名1=表达式1,列名2=表达式2 where 条件表达式;多列同时更新

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.3. delete删除数据

  删除表中的数据

mysql>drop table 表名;将表完全删除,包括数据和结构
mysql>delete from 表名;清空表,删除表内所有数据
mysql>delete from 表名 where id=12;只删除符合表达式的数据

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

标签:goods,删除,数据库,MySQL,DML,插入,表名,数据,字段名
From: https://blog.csdn.net/qq_36158551/article/details/144913312

相关文章

  • MYSQL中Join的用法.240430
    1、笛卡尔积(没有加筛选条件的内连接)两表关联,把左表的列和右表的列通过笛卡尔积的形式表达出来。mysql>select*fromt1joint2;或者mysql>select*fromt1innerjoint2;或者mysql>select*fromt1,t2;2、左连接两表关联,左表全部保留,右表关联不上用null表......
  • activiti6.0.0 二次开发兼容达梦数据库(亲测有效)
    一、前因最近公司做数据库国产化,数据从MySql数据库中迁移到达梦(DM8),在迁移过程中,当迁移工作流(Activiti6.0.0)时,提换达梦(DM8)数据库驱动后启动过程报错:Causedby:org.activiti.engine.ActivitiException:couldn'tdeductdatabasetypefromdatabaseproductname'DMDBMS'二......
  • Redis数据库笔记——内存分配器
    大家好,这里是GoodNote,关注公主号:Goodnote,专栏文章私信限时Free。本文详细介绍Redis数据库的内存分配器,这是redis为什么这么快的原因,以及其作为内存数据库的内存管理策略。文章目录Redis的内存分配器内存分配器的作用Redis支持的内存分配器jemalloclibcmalloctc......
  • Redis数据库——内存淘汰机制
    本文详细介绍Redis的8种内存淘汰机制。文章目录过期键删除策略内存淘汰机制内存限制设置常见策略Redis3.0的淘汰机制——近似LRU算法Redis4.0的新增的淘汰机制——LFU算法过期键删除策略Redis为管理内存,对设置了过期时间的键采用了以下三种删除策略......
  • mysql-触发器
        触发器是与表有关的数据对象,指在insert/update/delete之前或之后,触发并开始执行触发器中定义的SQL语句集合,触发器这种特性可以协助应用在数据库段确保数据的完整性,日志记录,数据校验等操作。语法:  创建createtriggertrigger_namebefore/afterinsert/update......
  • Python高校大学生社交系统(Pycharm Flask Django Vue mysql)
    文章目录开发技术介绍具体实现截图开发技术设计思路系统测试核心代码部分展示文章目录/写作提纲参考开发与测试:源码/演示视频获取方式开发技术介绍语言设计并实现了高校社交系统。该系统基于B/S即所谓浏览器/服务器模式,应用vue框架,选择MySQL作为后台数据库。系统主......
  • 让 Java 再次伟大 - 什么是 ORM 什么是 JOOQ 什么是数据库操作层?
    学会这款......
  • MySQL事务(上)
    MySQL事务背景知识一个买票行为可能被多个线程访问,这就有可能造成一些错误,如上图所示一张票就卖出去两次,这是因为买票的过程不是原子的,这个过程会被打断,如何解决上述问题。买票的过程是原子的买票互相应该不能影响买完票是永久有效的前后的状态是确定的这就有点像操作......
  • 科创活动|基于java的科创微应用平台小程序(源码+数据库+文档)
    科创活动|科创微应用平台小程序目录基于java的科创微应用平台小程序一、前言二、系统设计三、系统功能设计四、数据库设计 五、核心代码 六、论文参考七、最新计算机毕设选题推荐八、源码获取:博主介绍:✌️大厂码农|毕设布道师,阿里云开发社区乘风者计划专家博主,C......
  • 汽车保养维修|基于java的汽车保养系统小程序(源码+数据库+文档)
    汽车保养系统小程序目录基于java的汽车保养系统小程序一、前言二、系统设计三、系统功能设计四、数据库设计 五、核心代码 六、论文参考七、最新计算机毕设选题推荐八、源码获取:博主介绍:✌️大厂码农|毕设布道师,阿里云开发社区乘风者计划专家博主,CSDN平台Java领......