1.插入记录
    基本语法 :
        INSERT INTO tbl_name (col_name ,col_name1,..,col_nameN) VALUES (val1,val2,…,valN) ;
        对于可空字段/非空但用默认值字段/自增字段 可以不在insert后的字段列表中出现,对应的值分别为NULL/默认值/自增的下一个数字
 
    批量插入:
        INSERT INTO tbl_name (col_name1,col_name2,..,col_nameN)
        VALUES (val1,val2,..,valN)
        ,(val1,val2,..,valN)
        ,(val1,val2,..,valN)
        ,(val1,val2,..,valN);
        批量操作的好处是插入大量记录的时候,节省网络开销,大大提高插入效率。
 
2.更新记录
    基础语法:
        UPDATE tbl_name SET col_name1 = val1 ,..,col_nameN = valN [WHERE CONDITION];
    拓展语法:
        UPDATE t1,t2,..,tn SET t1.col_name1 = val1 ,tn.col_nameN = valN [WHERE CONDITION] ;
 
    ⚠️注意:多表更新的方式多用于根据一个表的字段动态更新另外一个表的字段 的场景。
 
3.删除记录
    基础语法:
        DELETE FROM tbl_name [WHERE CONDITION] ;
    拓展语法:
        DELETE FROM t1,t2,..,tn FROM t1,t2,..,tn [WHERE CONDITION] ;
 
4.查询记录
    基础语法:
        SELECT * FROM tbl_name [WHERE CONDITION] ;
    查询不重复记录:
        demo : SELECT DISTINCT deptno FROM emp ;
 
    排序和限制:
        SELECT * FROM tbl_name [WHERE CONDITION] [ORDER BY col_name1 [DESC|ASC] ,col_name2 [DESC|ASC] , .. ,col_nameN [DESC | ASC] [LIMIT offset_start , row_cnt] ;
        ⚠️注意:如果LIMIT后只有一个参数 表示 offset_start=0 ,而这个参数代表的是row_cnt
 
    聚合(group by)
        SELECT [col_name1,col_name2,..col_nameN] func_name 
        FROM tbl_name 
        [WHERE CONDITION] 
        [GROUP BY col_name1,col_name2,..,col_nameN]
        [WITH ROLLUP]
        [HAVING where_condition] ;
 
        其中,func_name : 代表的是聚合函数,如SUM(),COUNT(),MAX(),MIN()等。
        WITH ROLLUP : 表示是否要对分类聚合后对结果进行再汇总。
        HAVING :表示对分类结果再进行条件过滤。
 
 
        HAVING和WHERE等区别:
            WHERE是先进行条件过滤,而HAVING是对结果进行再过滤。
            如果逻辑上允许,首先考虑用WHERE,这样结果集变小对进行聚合操作的效率将大大提高。
 
 
5.表连接
    分为内连接和外连接。区别是内连接只选出两个表中相互匹配的记录;而外链接会连同不匹配的记录一并选取出来。通常使用内连接。
 
    a.内连接:
        demo : SELECT * FROM t1 ,t2 where t1.id = t2.id ;
    b.外连接:
        分为左连接和右连接。
        左连接:包含所有左表中的数据,不管是否在右表中是否匹配到相关数据。
        右连接:包含所有右表中的数据,无论是否在左表中是否有匹配记录。
        demo:
            select col1,col2 from t1 LFET JOIN t2 ON t1.xx = t2.xx ;
        
6.子查询
    关键字主要包括: in , not in , = , != , exists , not exists
    demo :
        SELECT * FROM  emp where deptno in(SELECT eptno FROM dept) ;
        当子查询记录数唯一,可用=代替in
        某些时候子查询可以转化为表连接。
        例如:
            SELECT * FROM emp WHERE deptno IN(SELECT deptno FROM dept);
        可以转化为
            SELECT emp,* FROM emp,dept WHERE emp.deptno = dept.deptno ;
        表连接在很多时候 用于优化子查询。
 
7.记录联合
    关键字: union , union all
 
    SELECT * FROM t1
    UNION | UNION ALL
    SELECT * FROM t2
    UNION | UNION ALL
    ...
    SELECT * FROM tn ;
 
    UNION 和 UNION ALL 主要区别:
        UNION ALL 是将结果集直接合并到一起,而UNION是将UNION ALL后到结果进行一次DISTINCT , 去除重复记录后的结果。
 
    ⚠️注意:做UNION / UNION ALL操作的两(多)张表,他们的字段名,字段类型以及要显示的字段个数/顺序都要保持一致 todo
 
 
 

02 DML(DataManipulationLanguage)的更多相关文章

  1. 服务管理之mysql基础

    目录 mysql基础 1. 关系型数据库介绍 1.1 数据结构模型 1.2 RDBMS专业名词 2. mysql安装与配置 2.1 mysql安装 2.2 mysql配置 3. mysql的程序组成 ...

  2. 详解MySQL---DDL语句、DML语句与DCL语句

    背景:近几年,开源数据库逐渐流行起来.由于具有免费使用.配置简单.稳定性好.性能优良等优点,开源数据库在中低端应用上占据了很大的市场份额,而 MySQL 正是开源数据库中的杰出代表.MySQL 数据库 ...

  3. Oracle 之——子查询 DDL DML 集合 及其他数据对象

    Oracle 学习笔记(二) 知识概要: 1.子查询 2.集合操作 3.DML语句操作 4.其他数据库对象 1.子查询 查询工资比SCOTT高的员工信息 1  select * 2  from emp ...

  4. 在SQL Server中实现关系模型的阶梯到级别3的t -SQL DML

    在SQL Server中实现关系模型的阶梯到级别3的t -SQL DML 格雷戈里·拉森(Gregory Larsen),2017/08/02(第一次出版:2011 /11/09) 原文链接:http ...

  5. Oracle-06:DML语言数据表的操作

    ------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 开篇放上一个SQL脚本,供测试使用 create table DEPT ( deptno ) not null ...

  6. ORACLE中如何查找定位表最后DML操作的时间小结

    在Oracle数据库中,如何查找,定位一张表最后一次的DML操作的时间呢? 方式有三种,不过都有一些局限性,下面简单的解析.总结一下. 1:使用ORA_ROWSCN伪列获取表最后的DML时间 ORA_ ...

  7. mysql语句-DML语句

    DML语句 DML是指对数据库中表记录的操作,主要包括数据的增删改查以及更新,下面依次介绍 首先创建一张表:: 表名:emp 字段:ename varchar(20),hiredate date ,s ...

  8. SQL DML 数据操纵语句

    前言 DML(Data Manipulation Language)语句:数据操纵语句,用于添加.删除.更新和查询数据库记录,并检查数据完整性.常用的语句关键字主要包括 insert.delete.u ...

  9. ODPS SQL <for 数据操作语言DML>

    基本操作: 查询: SELECT [ALL | DISTINCT] select_expr, select_expr, ... FROM table_reference [WHERE where_co ...

随机推荐

  1. C++结构体struct与C语⾔结构体和C++引⽤&与传值的区别

    写再最前面:摘录于柳神的笔记: (1)定义好结构体 stu 之后,使⽤这个结构体类型的时候,C语⾔需要写关键字 struct ,⽽C++⾥⾯可以省 略不写: (2)这个引⽤符号 & 要和C语⾔ ...

  2. JavaWeb开发记录全过程--(1)环境配置

    一. 开发工具:idea 理由:根据idea 如何连接服务器,可以直接在idea上连接服务器 安装:根据IntelliJ IDEA 下载安装(含注册码),进行非常规手段使用idea 二.分析问题: # ...

  3. bash脚本编程

    一.bash中的变量 变量类型: 本地变量:只对当前shell进程有效,对其子shell以及其它shell都无效;   定义变量:[set]Var_name="value" 变量赋 ...

  4. 【PAT甲级】1034 Head of a Gang (30 分)

    题意: 输入两个正整数N和K(<=1000),接下来输入N行数据,每行包括两个人由三个大写字母组成的ID,以及两人通话的时间.输出团伙的个数(相互间通过电话的人数>=3),以及按照字典序输 ...

  5. 【PAT甲级】1021 Deepest Root (25 分)(暴力,DFS)

    题意: 输入一个正整数N(N<=10000),然后输入N-1条边,求使得这棵树深度最大的根节点,递增序输出.如果不是一棵树,输出这张图有几个部分. trick: 时间比较充裕数据可能也不是很极限 ...

  6. 为什么maven没有.m2文件

    该问题可能描述不清,建议你重新提问 为什么maven没有.m2文件 彼岸之恋°DD | 浏览 4793 次 问题未开放回答 2016-09-23 17:29 最佳答案 对于初学者在安装配置好maven ...

  7. 解决新建maven工程没有web.xml的问题

    首先确定创建maven工程时选择的打包方式为 war 创建后如图所示没有web.xml文件以及相关文件夹,错误信息:缺少web.xml文件 解决方法: 右击maven项目,找到ProjectFacet ...

  8. 《React后台管理系统实战 :一》:目录结构、引入antd、引入路由、写login页面、使用antd的form登录组件、form前台验证、高阶函数/组件

    实战 上接,笔记:https://blog.csdn.net/u010132177/article/details/104150177 https://gitee.com/pasaulis/react ...

  9. LeetCode206. Reverse Linked List(反转链表)

    题目链接:https://leetcode.com/problems/reverse-linked-list/ 方法一:迭代反转 https://blog.csdn.net/qq_17550379/a ...

  10. springboot打包的问题可执行jar和不可执行jar

    具体解释可以参看:https://www.cnblogs.com/liaojie970/p/9007577.html 如果只是想要依赖那么可以将springboot自带的打包插件换掉就可以了,换为如下 ...