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. shell脚本中执行shell脚本(2)

    (a.sh)读取用户输入参数,并在脚本(b.sh)中使用 1.a.sh #!/bin/sh read -p "please input name value: " name ./b ...

  2. xcode app 在iOS13.3.1上崩掉

    问题背景: 以前搞的一个项目,昨天测试还好的,今天就无法在iphone上运行了,对比了一下昨天是13.3,今天是13.3.1 其它的没有区别,只要运行就崩,根本没有办法启动. 报错提示: dyld: ...

  3. 更新Android Studio,提示后直接点更新即可。gradle 两种更新方法,我用的第二种:手动添加gradle

    直接更新即可. 更新完毕后,随即会让你更新gradle,但是会一直更新一直更新...... 解决方法: 第一种方法: 手动下载Android Studio 对应的 gradle版本,然后设置一下即可. ...

  4. 解决 U2000 R017 安装报错: 检查SQL server数据库环境变量信息 ( 异常 ) [ 详细信息 ] PATH环境变量中缺少数据库路径的信息

    U2000 R017 安装报错: 检查SQL server数据库环境变量信息 ( 异常 ) [ 详细信息 ] PATH环境变量中缺少数据库路径的信息 管理员模式打开注册表位置: HKEY_LOCAL_ ...

  5. 「国家集训队」Crash的数字表格

    题目描述 求(对 \(20101009\) 取模,\(n,m\le10^7\) ) \[\sum_{i=1}^n\sum_{j=1}^m\operatorname{lcm}(i,j)\] 大体思路 推 ...

  6. red hat 7、centos7的root密码破译

    一.在开机画面时按"E". 二.找到linux16开头的这段,在段尾添加空格"rd.break"然后按Ctrl+x进入系统紧急救援模式. 三.新的界面出现命令行 ...

  7. linux----Nginx能做什么

    linux----Nginx能做什么 标签: nginx负载均衡代理服务器 2017-04-01 14:15 588人阅读 评论(0) 收藏 举报 .embody{ padding:10px 10px ...

  8. 通过python 构建一个简单的聊天服务器

    构建一个 Python 聊天服务器 一个简单的聊天服务器 现在您已经了解了 Python 中基本的网络 API:接下来可以在一个简单的应用程序中应用这些知识了.在本节中,将构建一个简单的聊天服务器.使 ...

  9. PAT B1020 月饼

    #include<iostream> #include<algorithm> using namespace std; struct mooncake { double sto ...

  10. 转,docker学习笔记

    一.Docker 简介 Docker 两个主要部件: Docker: 开源的容器虚拟化平台 Docker Hub: 用于分享.管理 Docker 容器的 Docker SaaS 平台 -- Docke ...