zoukankan      html  css  js  c++  java
  • sql查询

    sql语法

    select * 列名1,列名2... from 表名  【连接查询 内连接/左链接 on条件】 
    where 条件 子查询/in/exists/between...and... 
    group by分组列1,分组列2...
    having 字句  可以对分组结果进行筛选
    order by 拍序列1,拍序列2...

    写sql语句的步骤

    1、先确定从哪个表查询数据,是要从一个表查询还是从多个表查询,如果是多个表必须使用连接查询

    2、确定是否需要分组查询

    3、写where条件

    4、写需要返回的列

    连接查询

    连接查询分内连接和外连接,外连接又分左外连接,右外连接,全连接

    内连接 返回所有满足连接条件的记录

    select * from 表1 inner join 表2 on 表1.外键=表2.主键

    --查询所有有部门的员工的信息
    select * from emp e inner join dept d on e.deptno=d.deptno;

    左外连接返回左表的所有数据+右表匹配到的数据,如果左表匹配不到右表的数据,显示为null

    --查询所有员工信息,如果员工有部门信息,显示出来,否则不显示
    select * from emp e left join dept d on e.deptno=d.deptno;

    右外连接同左外连接

    全连接返回左表的所有数据+右表的所有数据 如果匹配不到对方的数据,都显示为null

    --查询所有员工和部门信息,如果匹配不到显示为空
    select * from emp e full join dept d on e.deptno=d.deptno;

    in用在连接条件中,表示某个字段的值在in提供的列表之中

    select * from 表 where 列名 in(值1,值2...)

    in后还可以是一个子查询,子查询一般会返回多个结果

    in和等号的区别,in后面可以跟多个值,=后面只能有一个值

    beteween...and...

    一般也用在条件中,between开始值 and结束值,开始值和结束值一般是数字,也可以是其他类型(字符串,日期)

    字符串比较和字符串长度无关,会从第一个字符开始向后比较,如果相同再比较下一个

    --举例:查询基本工资在1500到2000之间的员工的信息
    select * from emp where sal between 1500 and 2000;
    
    --查询 1981年到1998年之间雇佣的员工的信息
    --把字符串转换为日期之后再比较
    select * from emp e where e.hiredate between
    to_date('1981-01-01','yyyy-mm-dd') and to_date('1998-12-31','yyyy-mm-dd');
    --把日期转换为字符串之后再比较
    select * from emp e where to_char(e.hiredate,'yyyy-mm-dd') between
    '1981-01-01' and '1998-12-31';

    group by

    分组查询

    select 结果列 from 表 where 条件 group by 列1,列2...

    列只能是两种形式:要么是分组的列;如果要返回其他列,需要对其他列使用聚合函数

    --举例:统计各部门不同职位的人有多少个
    select deptno,job,count(empno) from emp group by deptno,job
    select dname,job,count(empno) from emp e inner join dept d on e.deptno=d.deptno
    group by e.deptno,dname,job;

    having字句可以对分组查询的结果进行过滤

    --举例:统计各部门不同职位的人有多少个,只显示部门人数大于2的信息
    select dname,job,count(empno) c from emp e inner join dept d on e.deptno=d.deptno
    group by e.deptno,dname,job
    having count(empno) >2;

    order by

    order by 排序,可以对多列排序order by 列1 升序/降序 ,列2 升序/降序  默认是升序asc

    --例子:查询员工信息 按基本工资从大小排列
    --先按员工基本工资倒序,再按奖金倒select * from emp order by sal desc,comm desc;
  • 相关阅读:
    【Java-JVM】定量分析解决OutOfMemoryError: PermGen space, 来看科学量化分析
    Oracle11g 主机身份证明问题
    html标签的嵌套规则
    提高程序员职场价值的10大技巧
    IT人应当知道的10个行业小内幕
    趣文:如果编程语言是车
    去除inline-block元素间间距的N种方法
    《大型网站SEO优化实践》学习分享
    如何通过预加载器提升网页加载速度
    网页爬虫及其用到的算法和数据结构
  • 原文地址:https://www.cnblogs.com/shu06/p/10859515.html
Copyright © 2011-2022 走看看