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. Python学习第十课——文件的基本操作

    文件基本操作 文件读操作 #读出路径下的测试.txt文件 f = open('测试.txt', encoding='utf-8') # 打开要读文件 data = f.read() # 读取内容 pr ...

  2. c数据结构线性表的总结

    1:连表的特点   1.链表是一种存储结构,用于存放线性表   2.连表的结点是根据需要调用动态分配内存函数进行分配的,因此链表可随需要伸长缩短      在腰存储的数据个数未知的情况下节省内存.   ...

  3. Android 学习笔记四:创建工具栏按钮

    原文:http://blog.csdn.net/lihongxun945/article/details/48951199 前面我们已经可以在一个Activity中添加一些按钮之类的组件.由于手机的屏 ...

  4. js图片瀑布流效果

    要实现图片瀑布流效果,首先得准备几张图片. html的部分比较简单就是将图片加载到浏览器就可以了 代码如下(注意放的图片多一点要不然之后无法滑动鼠标就无法达到瀑布流效果): <!DOCTYPE ...

  5. Django学习 之 Django安装与一个简单的实例认识

    一.Django简介 1.MVC与MTV模型 (1)MVC模型 Web服务器开发领域里著名的MVC模式,所谓MVC就是把Web应用分为模型(M),控制器(C)和视图(V)三层,他们之间以一种插件式的. ...

  6. 设计模式课程 设计模式精讲 8-11 单例模式源码解析(jdk+spring+mybaties)

    1 源码解析 1.1 单例解析1 1.2 单例解析2(容器单例) 1.3 单例解析3 1.4 单例解析4 1 源码解析 1.1 单例解析1 java.lang.Runtime /** * 饿汉式加载, ...

  7. scrapy 中没有 crawl 命令

    确保两点: 1.把爬虫.py 复制到 spider 文件夹里 如 执行 scrapy crawl demo.py (spiders 中就要有 demo.py 文件) 2.在项目文件夹内执行命令 在 s ...

  8. 深入理解 Python 中的装饰器

    装饰器本质上也是函数,接收函数对象来作为参数,并在装饰器的内部来调用接受的函数对象完成相关的函数调用,也可以这样理解   ,为了方便在几个不同函数调用之前或者完成相关的统一操作,注意是完成统一的操作, ...

  9. 吴裕雄 Bootstrap 前端框架开发——Bootstrap 按钮:按钮被点击

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

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

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