dml语句包括哪些_MySQL数据操作(DML)语句,入门掌握这些足够了

e275e97deb0399d9b85a37d659b9d320.png

DML是(Data Manipulation Languages)数据定义语言的缩写

主要包括表记录的插入insert、更新update、删除select

插入记录

insert into table(field1,field2,...fieldn) values(value1,value2,...value)如:向表 emp 中插入以下记录:+--------+----------+---+------+| ename | hiredate | sal | deptno+--------+---------+----+------+| xxto | 2000-01-01 | kk | 1+--------+---------+---+-------+
mysql> insert into emp(ename,hiredate,sal,deptno) value('xxto','2000-01-01','kk',1);

在字段是设置默认值、允许为空、自增字段,可以不用在value后写值,字段名可不用写

如:只对表中的 ename 和 sal字段显式插入值

mysql> insert into emp(ename,sal) value ('dony', 1000); mysql> insert into emp(ename,sal) value ('dony', 1000);mysql> select * from emp;+------+-------+-------+------------+---------+--------+| age | ename | birth | hiredate | sal | deptno |+------+-------+-------+------------+---------+--------+| NULL | zzxl | NULL | 2000-01-01 | 2000.00 | 1 || NULL | dony | NULL | NULL | 1000.00 | NULL |+------+-------+-------+------------+---------+--------+2 rows in set (0.00 sec)

插入多条值

mysql> insert into emp(ename,sal) value ('name1', 1001), ('name2', 1002);mysql> insert into emp(ename,sal) value ('name1', 1001), ('name2', 1002); mysql> select * from emp;+------+-------+-------+------------+---------+--------+| age | ename | birth | hiredate | sal | deptno |+------+-------+-------+------------+---------+--------+| NULL | zzxl | NULL | 2000-01-01 | 2000.00 | 1 || NULL | dony | NULL | NULL | 1000.00 | NULL || NULL | name1 | NULL | NULL | 1001.00 | NULL || NULL | name2 | NULL | NULL | 1002.00 | NULL |+------+-------+-------+------------+---------+--------+4 rows in set (0.00 sec)

更新记录

update tablename set field1=value1,field2=value2,...fieldn =valuen[where condition]

如:将表 emp 中 ename 为 “name1”的 sal 从 1001 更改为 4000

mysql> update emp set sal=4000 where ename='name1';

同时更新两个数据表的数据

mysql> update emp a, dept b set a.sal=a.sal*b.deptno, b.deptname=a.ename where a.deptno=b.deptno;

查询记录

select * from tablename[where condition]

查询表中所有字段

mysql> select * from emp;

查询不重复字段值的记录(需要使用关键字distinct),如:查询字段deptno

mysql> select * from emp;+------+-------+-------+------------+---------+--------+| age | ename | birth | hiredate | sal | deptno |+------+-------+-------+------------+---------+--------+| NULL | zzxl | NULL | 2000-01-01 | 2000.00 | 1 || NULL | dony | NULL | NULL | 1000.00 | 2 || NULL | name1 | NULL | NULL | 4000.00 | 1 || NULL | name2 | NULL | NULL | 1002.00 | 2 |+------+-------+-------+------------+---------+--------+4 rows in set (0.00 sec)mysql> select distinct deptno from emp;+--------+| deptno |+--------+| 1 || 2 |+--------+2 rows in set (0.00 sec)

根据条件查询

mysql> select * from emp where deptno=1;

多条件查询

mysql> select * from emp where deptno=1 and sal<3000;

排序和查询

select * from tablename [where condition] [order by field1 [DESC|ASC], field2 [DESC|ASC,...field[DESC|ASC]]]默认是升序排列(ASC)field

如:吧emp表中的记录按照 sal 高低进行显示

mysql> select * from emp order by sal;

根据多个字段排序

从第一个字段排序,遇到相同的值则相同的记录以第二个字段重新裴谞,以此类推。

mysql> select * from emp order by deptno,sal desc;+------+-------+-------+------------+---------+--------+| age | ename | birth | hiredate | sal | deptno |+------+-------+-------+------------+---------+--------+| NULL | name1 | NULL | NULL | 4000.00 | 1 || NULL | zzxl | NULL | 2000-01-01 | 2000.00 | 1 || NULL | name2 | NULL | NULL | 1002.00 | 2 || NULL | dony | NULL | NULL | 1000.00 | 2 |+------+-------+-------+------------+---------+--------+

限制显示的记录

select ...[limit offset_start,row_count]

offset_start表示记录的起始偏移量,如果没写则默认为0,记录起始下标为0。row_count表示显示的行数

mysql> select * from emp order by sal limit 3;mysql> select * from emp order by sal limit 1,4;

聚合

对数据进行汇总、求和、最大值、最小值等条件的过滤

在 emp 表中统计记录数

mysql> select count(1) from emp;

统计字段相同值的记录数

mysql> select deptno, count(1) from emp group by deptno;

统计字段相同值得记录数和总记录数

mysql> select deptno, count(1) from emp group by deptno with rollup;

统计字段deptno大于2的记录数

mysql> select deptno, count(1) from emp group by deptno having count(1) > 2;

统计 字段sal 的总和、最高和最低记录

mysql> select sum(sal),max(sal),min(sal) from emp;

表连接

56b76bf10a580ff0a0233600c44a250f.png

表连接

内连接

内连接和外连接的区别在于仅选出两张表中互相匹配的记录

如:显示出两张表(empdept)中 字段(deptno)值相同记录的ename和deptname字段

mysql> select ename, deptname from emp,dept where emp.deptno=dept.deptno;

外连接

外链接分为左连接和右连接

左连接:包含所有的左边表的记录甚至是右边表中没有和它匹配的记录。

右连接:包含所有的右边表的记录甚至是左边表中没有和它匹配的记录。

如:查询表(emp 和 dept)中的字段(ename 和 deptname),条件是两边相同值得字段(deptno)

左连接:

mysql> select ename, deptname from emp left join dept on dept.deptno=emp.deptno;

右连接:

mysql> select ename, deptname from dept right join emp on dept.deptno=emp.deptno;

子查询

当进行查询的时候,需要的条件是另外一个select语句的结构,这个时候就要用到子查询。用于子查询的关键字主要包括in、not in、=、!=、exists、not exists等。

从 emp 表中查询出所有部门在 dept 表中的记录

mysql> select * from emp where deptno in ( select deptno from dept );

如果子查询记录数唯一,可以用=代替in

mysql> select * from emp where deptno = (select deptno from dept);

表连接:

mysql> select emp.* from emp, dept where emp.deptno=dept.deptno;

记录联合

将两个表的数据按照一定的查询条件查询出来后,将结果合并到一起显示出来

需要使用union和union all关键字来实现

如: 将 emp 和 dept 表中的部门编号的集合显示出来:

使用union all:全部显示

mysql> select deptno from emp -> union all -> select deptno from dept;

使用union:去除重复后显示

mysql> select deptno from emp -> union -> select deptno from dept;

选择操作

显示数据表前50行

SELECT * FROM `库名`.`表名` ORDER BY `id` DESC LIMIT 0,50;

删除操作

10572de1911a039f7a5b5bf6d7a494d0.png

删除操作

删除数据表指定ID行

delete from `库名`.`表名` where `id`=82;DELETE FROM tbname WHERE id > 49 AND id < 151

修改操作

修改数据表指定行的ID值为1

update `库名`.`表名` set `id`=1 where `id`=2;

更改索引值

让自动索引从3开始

ALTER TABLE `emp` AUTO_INCREMENT=3;

查询结果输出到excel文件

select * into outfile '/tmp/tmp.xls' from help_cat where 1 order by cat_id desc limit 0,20;

图片源于网络,如有侵权请联系删除!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/332401.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Servlet 的实例对象

Servlet 实例是由 Servlet 容器自动创建&#xff0c;也可以说是由 Web Server 创建的。 当请求到达服务器的时候&#xff0c;或者在 web.xml 中配置了 init 方法的时候&#xff0c;容器就会自动创建 Servlet 实例。 如果在 web.xml 中配置了 init 方法&#xff0c;那么启动服…

java 手动装箱拆箱对象_将旧对象装箱可自动关闭

java 手动装箱拆箱对象从Java 7开始&#xff0c;我们可以使用try-with-resources并自动关闭任何实现Autocloseable接口的对象。 如果资源是 Autocloseable 。 一些类需要一些总结&#xff0c;但不是Autocloseable 。 这些主要是某些遗留框架中的旧类&#xff0c;仍然妨碍我们前…

delphi查看源码版本_[Mybatis]-IDEA导入Mybatis源码

该系列文章针对 Mybatis 3.5.1 版本一、下载 Mybatis 源码step1、下载 Mybatis-3.5.1 源码Mybatis 源码仓库地址下载版本信息如下&#xff1a;下载后进行解压&#xff0c;并打开 pom 文件&#xff0c;查看pom 中的父级依赖&#xff0c;如下&#xff1a;根据上述版本信息&#x…

Struts项目中,检测用户名是否被占用/查询账户名称是否被占用/查询账户名称是否已被注册/检查用户名是否被注册

在客户端无法检测注册用户名是否被占用&#xff0c;这需要查询数据库&#xff0c;所以是服务器端负责这块。 实现思路大致描述&#xff1a; 注册表单中添加自动检测用户名是否被占用的功能&#xff0c;其实就是利用 ajax 向服务器发送请求&#xff0c;并带着用户输入的用户名过…

羽毛球双打区域_测试双打简介

羽毛球双打区域当您编写单元测试时&#xff0c;您会遇到许多协作者&#xff0c;而且他们都有非常特殊的行为&#xff0c;知道在正确的时间必须使用哪种测试两倍可以使您的生活更轻松。 假 第一个是Dummy对象&#xff0c;它是最简单的一个&#xff0c;Dummy只是您为满足构造函数…

可为空的对象必须具有一个值_前端:这里有8个常见的JavaScript经典问题,总有一个你不会的...

参考前端小智&#xff1a;https://juejin.im/post/5d2d146bf265da1b9163c5c91.了解函数提升使用var关键字声明的变量在JavaScript中会被提升&#xff0c;并在内存中分配值undefined。 但初始化恰发生在你给变量赋值的地方。 另外&#xff0c;var声明的变量是函数作用域的&#…

Struts2的配置文件struts.xml详解

<?xml version"1.0" encoding"UTF-8"?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN""http://struts.apache.org/dtds/struts-2.3.dtd"> <struts><!-- 所有匹…

hibernate教程_Hibernate多对多教程

hibernate教程介绍&#xff1a; 在本教程中&#xff0c;我们将学习使用Hibernate ManyToMany注释定义和使用多对多实体关联。 上下文构建&#xff1a; 为了继续学习本教程&#xff0c;我们假设我们有两个实体– 雇员和资格&#xff1a; 众所周知&#xff0c;一名员工可以拥有…

python常用命令格式_python常用命令有哪些

原标题&#xff1a;python常用命令有哪些 Python是一种计算机程序设计语言。是一种动态的、面向对象的脚本语言。它包含了许多命令来帮助我们实现各种各有的功能&#xff0c;接下来在文章中为大家分享【推荐课程&#xff1a;Python教程】 &#xff08;1&#xff09;打开csv文件…

java.lang.ClassNotFoundException: javax.servlet.jsp.jstl.core.LoopTag

开发工具&#xff1a;IntelliJ IDEA for Mac 开发项目&#xff1a;struts2-demo 构建工件&#xff1a;Maven 问题描述&#xff1a;在 jsp 中使用了 jstl 标签 <c:forEach>&#xff0c;浏览器访问 Action 组件提示错误&#xff1a; java.lang.ClassNotFoundException: ja…

latex 多行公式_Markdown中输入多行并列的公式

本篇旨在以两个Markdown文件编辑器-Typora与Visual Code Studio为例&#xff0c; 说明对于多行并列公式不同的处理方式。Latex中输入多行并列公式在latex文件编辑器中使用align环境输入多行并列的公式&#xff0c; 如下例&#xff1a;begin{align} x & v_0costheta t y &am…

java 常规类的可见性_Java 12常规可用性

java 常规类的可见性马克雷因霍尔德&#xff08;Mark Reinhold&#xff09; 今天宣布 &#xff0c;“ Java 12的参考实现JDK 12现在已全面上市。” Reinhold在该公告中指出&#xff0c;“可以从https://jdk.java.net/12获得来自Oracle的GPL许可的OpenJDK构建&#xff0c;并且“…

python支持复数以及相关的运算吗_Python: 复数的数学运算

写的最新的网络认证方案代码遇到了一个难题&#xff0c;唯一的解决办法就是使用复数空间&#xff0c;需要使用复数来执行一些计算操作。 复数可以用使用函数complex(real, imag) 或者是带有后缀j 的浮点数来指定。 比如&#xff1a; >>> a complex(2, 4) >>>…

分页查询的实现(struts2+jsp+jstl+el)

文章目录MySQL的分页查询语句如何设置《上一页》和《下一页》的有效性呢&#xff1f;示例代码MySQL的分页查询语句 使用 MySQL 的分页查询语句 select * from project limit 5,5&#xff0c;打开表 project&#xff0c;获取全部记录&#xff0c;只要第 5 条记录后的 5 条记录&…

junit 测试执行顺序_JUnit 5中的测试执行顺序

junit 测试执行顺序一般实践认为&#xff0c;自动化测试应能够独立运行且无特定顺序&#xff0c;并且测试结果不应依赖于先前测试的结果。 但是在某些情况下&#xff0c;可以证明特定的测试执行顺序是正确的&#xff0c;尤其是在集成或端到端测试中。 默认情况下&#xff0c;在…

python的起源和发展_Python入门第一课——Python的起源、发展与前景!

我们在做任何一件事情之前&#xff0c;我们都会通过各种渠道去搜集事情的信息&#xff0c;了解事情的来龙去脉&#xff0c;学习一门编程语言也是如此&#xff0c;只有知根知底&#xff0c;我们才能有明确的方向和目标&#xff0c;以及底气去完成这件事情&#xff0c;今天我带大…

MySQL分页查询语句

单表分页查询语句&#xff1a; select * from tbl_name limit start_index, rows_per_page&#xff1b;start_index&#xff1a;每页数据的起始行的索引值&#xff0c;行的索引值从 0 开始 rows_per_page&#xff1a;每页显示的行数 page_num&#xff1a;查询的页码 关系式&a…

spring依赖注入_Spring依赖注入

spring依赖注入介绍&#xff1a; 在设计良好的Java应用程序中&#xff0c;这些类应尽可能独立。 这样的设计提高了组件的可重用性。 它还使对各个组件进行单元测试变得更加容易。 依赖注入的概念促进了Java对象之间的松散耦合。 在本教程中&#xff0c;我们将讨论Spring框架中…

excel 时间戳_我没有Excel基础,可以学Power BI吗

当然可以&#xff01;没有Excel基础一样可以熟练掌握Power BI !Excel基础可以略微影响Power BI的上手速度&#xff0c;却不能决定最终对Power BI的运用能力。如果有Excel基础学习Power BI在最初阶段会更快&#xff0c;但经过实践证明&#xff0c;Excel基础对于PBI的学习进度影响…