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. JS 表单相关

    var title = $("#subjects option:selected").text();

  2. Write-up-Bob_v1.0.1

    关于 下载地址:点我 哔哩哔哩视频:哔哩哔哩 信息收集 网卡:vmnet8:IP在192.168.131.1/24 ➜ ~ ip a show dev vmnet8 5: vmnet8: <BR ...

  3. ypeError: __init__() got an unexpected keyword argument 'shape'

    采用TensorFlow支持通过tf.Graph函数来生成新的向量图,代码如下: import tensorflow as tf g1 = tf.Graph() with g1.as_default( ...

  4. 使用SourceTree的注意事项

    1.我使用SourceTree时,使用的下面的配置全局忽略: *~ .DS_Store xcuserdata 2. 远程仓库的url路径不要使用域名,而应该使用ip地址.否则会显示“这是一个无效的ur ...

  5. 等级保护2.0-oracle

  6. scrapy 开发流程

    一.Spider 开发流程 实现一个 Spider 子的过程就像是完成一系列的填空题,Scrapy 框架提出以下问题让用户在Spider 子类中作答: 1.爬虫从哪个或者那些页面开始爬取? 2.对于一 ...

  7. Python自动化运维的职业发展道路(暂定)

    Python职业发展之路 Python自动化运维工程 Python基础 Linux Shell Fabric Ansible Playbook Zabbix Saltstack Puppet Dock ...

  8. 吴裕雄 Bootstrap 前端框架开发——Bootstrap 按钮:制作一个超小按钮

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

  9. 为安卓手机刷上手机kali系统Nethunter

    kali Nethunter是一个装在手机上的kali,集成了kali的工具包,hid,无线攻击等等. 本文主要叙述如何安装此系统并正确的配置.不让你走弯路. 首先我们拒绝傻瓜安装软件 kali ne ...

  10. JuJu团队1月10号工作汇报

    JuJu团队1月10号工作汇报 JuJu   Scrum 团队成员 今日工作 剩余任务 困难 飞飞 fix出现的bug -- 无 婷婷 完善main.jl 训练流程 -- 无 恩升 绘图 -- 无 金 ...