• mysql DML(数据操纵语句)


    1.插入记录

    insert into emp(ename,hiredate,sal,deptno) values ('yxm1','2000-01-01','2000',1);

    也可以不指定字段名称,如下

    insert into emp values('yxm1','2000-01-01','2000',1);

    含可空字段、非空但是含有默认值的字段、自增字段,可以不用在insert后的字段列表里面出现,values后面只写对应字段名称的value。这些没写的字段可以自动设置为NULL、默认值、自增的下一个数字,如下

    insert into emp(ename,sal) values  ('yxm2',1000);

    在mysql中,insert语句还有一个很好的特性,可以一次插入多条记录,如下

    insert into dept values (5,'dept5'),(6,'dept6');

    2.更新记录

    update emp set sal=4000 where ename='jack';

    在mysql中,update语句可以同时更新多个表数据,如下

    update emp a,dept b set a.sal = a.sal*b.deptno,b.deptname=a.ename where a.deptno = b.deptno;

    3.删除记录

    delete from emp where ename = 'yxm';

    删除多个表,如下

    delete a,b from emp a,dept b where a.deptno=b.deptno and a.deptno=3;

    4.查询记录

    select * from emp where ename='yxm' order by sal;

    可以通过limit 显示部分数据

    排序

    select * from emp order by sal limit 3; //显示emp表中按照sal排序后的前3条记录。

    select * from emp order by sal limit 1,3; //显示emp表中按照sal排序后的第2条开始的3条记录。

    聚合

    GROUP BY 关键字表示要进行分类聚合的字段,比如要按照部门分类统计员工数量,部门
    就应该写在group by 后面。
    WITH ROLLUP 是可选语法,表明是否对分类聚合后的结果进行再汇总。
    HAVING 关键字表示对分类后的结果再进行条件的过滤

    select deptno,count(1) from emp group by deptno with rollup;//既要统计各部门人数,又要统计总人数

    select deptno,count(1) from emp group by deptno having count(1)>1;//统计人数大于1 人的部门:

    select sum(sal),max(sal),min(sal) from emp;//统计公司所有员工的薪水总额、最高和最低薪水:

    连接

    常用的是内连接

    select ename,deptname from emp,dept where emp.deptno=dept.deptno;

    外连接有分为左连接和右连接,具体定义如下。
     左连接:包含所有的左边表中的记录甚至是右边表中没有和它匹配的记录
     右连接:包含所有的右边表中的记录甚至是左边表中没有和它匹配的记录

    select ename,deptname from emp left join dept on emp.deptno=dept.deptno;

    子查询

    用于子查询的关键字主要包括in、not in、=、!=、exists、not exists 等。

    select * from emp where deptno in(select deptno from dept);

    select * from emp where deptno = (select deptno from dept limit 1);

    子查询可以转化为表连接

    select * from emp where deptno in(select deptno from dept);

    记录联合 

    就需要用union 和union all 关键字来实现这样的功能

    mysql-> select deptno from emp
       -> union all
            -> select deptno from dept;

    如果希望将结果去掉重复记录后显示:

    mysql> select deptno from emp
    -> union
    -> select deptno from dept;

  • 相关阅读:
    【零基础】极星9.5套利详解
    【零基础】极星9.3资金字段详解
    【零基础】易盛9.0API入门三:下单并查询订单状态
    【零基础】极星量化扩展一:如何做跨合约的交易
    【零基础】极星9.3止盈止损用法详解
    【零基础】极星9.3几种套利的说明
    【零基础】MT4量化入门三:写一个双均线指标
    概率与似然
    PCA的计算方法
    隐藏节点数的选择
  • 原文地址:https://www.cnblogs.com/yangxuming/p/6714155.html
Copyright © 2020-2023  润新知