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. java记录3--抽象

    1.由来 利用抽象类是i为了更好的对类加以分类,例如各种植物有具体名字,也有“植物”这个抽象的词对所有具体植物进行归类. 2.抽象类通常用来作为一个类族的最顶层的父类(表示该类族所有事物的共性), 用 ...

  2. warning:Pointer is missing a nullability type specifier (__nonnull or __nullable)

    当我们定义某个属性的时候  如果当前使用的编译器版本比较高(6.3+)的话经常会遇到这样一个警告:warning:Pointer is missing a nullability type speci ...

  3. Linux centosVMware PHP动态扩展模块

    PHP动态扩展模块 /usr/local/php/bin/php -m //查看模块 下面安装一个redis的模块 cd /usr/local/src/ wget https://codeload.g ...

  4. springboot内置的定时任务简单使用

    直接上图:搞定(一定要加@EnableScheduling(开启定时任务)这个注解@Component(让spring扫描到)),下面是每五秒执行一次 结果:

  5. Random Variables

    可测空间(Measurable Space)和测度空间(Measure Space) 集合X,X上的一个σ-algebra A,则(X,A)被称为可测空间(measurable space) 再在A上 ...

  6. VNC怎么和宿主机共享粘贴板

    VNC怎么和宿主机共享粘贴板 假设目标主机是linux,终端主机是windows(就是在windows上使用VNC登陆linux) 在linux中执行vncconfig -nowin& 在li ...

  7. git提交代码报:fatal: Unable to create 'E:/testGit/test/.git/index.lock': File exists.

    git提交代码报错,提示:fatal: Unable to create 'E:/testGit/test/.git/index.lock': File exists. 具体截图如下: 在.git目录 ...

  8. Oracle 提取数据表信息

    参考: https://www.progress.com/blogs/jdbc-tutorial-extracting-database-metadata-via-jdbc-driver http:/ ...

  9. SPring整合Mybatis方式一

    Spring整合Mybatis 需要maven包: mysql-connector-java 5.1.47, mybatis 3.5.2, spring-webmvc 5.2.2.RELEASE, s ...

  10. luogu P3358 最长k可重区间集问题

    网络流建图好难,这题居然是网络流(雾,一般分析来说,有限制的情况最大流情况可以拆点通过capacity来限制,比如只使用一次,把一个点拆成入点出点,capacity为1即可,这题是限制最大k重复,可以 ...