JAVA语言MYSQL数据库比较运算符 > < >= <= = !=和<>/and 和 or 和 not/is null 和 is not null/between x and y两者之间

数据库SQL语句的分类

  1. DDL: 数据定义语言, 包括数据库相关和表相关的SQL,
    • truncate table 表名;  删除表并创建新表
  1. DML: 数据操作语言,包括:增删改查相关的SQL语句
  1. DQL: 数据查询语言,包括:select查询相关
  1. TCL: 事务控制语言,包含和事务相关的SQL语句
  1. DCL: 数据控制语言, 包含创建用户以及用户权限分配相关SQL

导入*.sql批处理文件

  1. 从老师工程中把emp.zip压缩文件复制到某个盘的根目录下面并解压到当前文件夹
  2. 在命令行客户端中 执行source F:/emp.sql;
  1. 执行show tables;  
  1. 如果经过测试出现中文乱码问题 执行  set names utf8;     或 set names gbk;

比较运算符 > < >= <= =  !=和<>

  1. 查询工资大于等于3000的员工姓名,工资和工作

select name,sal,job from emp where sal>=3000;

  1. 查询1号部门的员工姓名,工资,部门id

select name,sal,dept_id from emp where dept_id=1;

  1. 查询程序员的名字和工资

select name,sal from emp where job="程序员";

  1. 查询员工表中不是销售的员工姓名和工作(两种写法)

select name,job from emp where job!="销售";

select name,job from emp where job<>"销售";

and 和 or 和 not

  1. and: 等效java中的&&,  需要多个条件同时满足时使用
  1. or: 等效java中的|| ,  多个条件满足一个时使用
  1. 查询1号部门工资高于2000的员工信息

select * from emp where dept_id=1 and sal>2000;

  1. 查询3号部门或工资等于5000的员工信息

select * from emp where dept_id=3 or sal=5000;

  1. 查询出CEO和项目经理的名字

select name from emp where job="CEO" or job="项目经理";

  1. 查询有奖金的销售名字和奖金

select name,comm from emp where comm>0 and job="销售";

is null 和 is not null

  1. 查询有上级领导的员工姓名和领导id

select name,manager from emp where manager is not null;

  1. 查询没有上级领导的员工姓名和领导id

select name,manager from emp where manager is null;

between x and y两者之间(包含x和y)

  1. 查询工资在2000到3000之间的员工信息

select * from emp where sal>=2000 and sal<=3000;

select * from emp where sal between 2000 and 3000;

  1. 查询工资在2000到3000之外的员工信息

select * from emp where sal not between 2000 and 3000;

in(x,y,z)

  1. 当查询某个字段的值等于多个值的时候使用
  1. 查询工资等于1500,3000和5000的员工姓名和工资

select name,sal from emp where sal=1500 or sal=3000 or sal=5000;

select name,sal from emp where sal in(1500,3000,5000);

  1. 查询工作不是销售和程序员的信息

select  * from emp where job not in("销售","程序员");

distinct去重

  1. 去掉重复的数据
  1. 查询员工表中出现了哪几种不同的工作

select distinct job from emp;

  1. 查询员工表中出现了哪几个部门的id

select distinct dept_id from emp;

综合练习题

  1. 查询2号部门工资高于1000的员工信息

select * from emp where dept_id=2 and sal>1000;

  1. 查询3号部门或工资等于5000的员工信息

select * from emp where dept_id=3 or sal=5000;

  1. 查询工资在1000到2000之间的员工姓名和工资

select name,sal from emp where sal between 1000 and 2000;

  1. 查询工资不等于3000和5000的员工信息

select * from emp where sal not in(3000,5000);

  1. 查询1号部门有哪几种不同的工作

select distinct job from emp where dept_id=1;

模糊查询like

  1. %: 代表0或多个未知字符
  1. _:代表1个未知字符
  1. 举例:
    • 以x开头       x%
    • 以x结尾       %x
    • 包含x           %x%
    • 第二个字符是x       _x%
    • 以x开头以y结尾    x%y
    • 第三个是x倒数第二个是y       __x%y_
  1. 查询姓孙的员工信息

select * from emp where name like "孙%";

  1. 查询名字以精结尾的员工姓名

select name from emp where name like "%精";

  1. 查询工作中包含销售的员工信息

select * from emp where job like "%销售%";

  1. 查询工作中第二个字是售的员工姓名和工作

select name,job from emp where job like "_售%";

  1. 查询名字中包含僧 并且工资高于2000的员工姓名和工资

select name,sal from emp where name like "%僧%" and sal>2000;

  1. 查询1号和2号部门中工作以市开头的员工信息

select * from emp where job like "市%" and dept_id in(1,2);

排序  order by

  1. 格式: order by 字段名 asc升序(默认)/desc降序;
  1. 查询员工姓名和工资,按照工资升序排序

select name,sal from emp order by sal;

select name,sal from emp order by sal desc;

  1. 查询工资高于2000的员工姓名和工资, 按照工资降序排序

select name,sal from emp where sal>2000 order by sal desc;

  1. 查询每个员工的姓名,工资和部门id 按照部门id升序排序,如果部门id一致则按照工资降序

select name,sal,dept_id from emp order by dept_id,sal desc;

分页查询

  1. 格式: limit 跳过的条数,请求的条数(每页的条数)
  1. 跳过的条数= (请求的页数-1)*每页的条数
  1. 举例:
    • 查询第一页的5条数据(1-5)   limit 0,5 
    • 查询第2页的5条数据(6-10)   limit 5,5
    • 查询第5页的5条数据             limit 20,5
    • 查询第8页的10条数据        limit  70,10
    • 查询第7页的8条数据          limit  48,8
  1. 查询工资最低的3个人的信息

select * from emp order by sal limit 0,3;

  1. 查询工资最高的员工信息

select * from emp order by sal desc limit 0,1;

  1. 按照入职日期排序 查询第2页的3条数据

select * from emp order by hiredate limit 3,3;

  1. 按照工资升序排序查询第3页的2条数据

select * from emp order by sal limit 4,2;

me like "%精%";

聚合函数

  1. 通过聚合函数可以对查询的多条数据进行统计查询
  1. 有哪些统计方式?
    • 平均值avg
    • 最大值max
    • 最小值min
    • 求和sum
    • 计数count
  1. 平均值avg()
    • 查询1号部门的平均工资

select avg(sal) from emp where dept_id=1;

  1. 最大值max()
    • 查询1号部门的最高工资

select max(sal) from emp where dept_id=1;

  1. 最小值min()
    • 查询1号部门的最低工资

select min(sal) from emp where dept_id=1;

  1. 求和sum()
    • 查询程序员的工资总和

select sum(sal) from emp where job="程序员";

  1. 计数count(*)
    • 查询员工表的人数

select count(*) from emp;

聚合函数练习题

  1. 查询销售的平均工资

select avg(sal) from emp where job="销售";

  1. 查询程序员的最高工资

select max(sal) from emp where job="程序员";

  1. 查询名字包含精的员工数量

select count(*) from emp where name like "%精%";

  1. 查询和销售相关的工作一个月工资总和

select sum(sal) from emp where job like "%销售%";

  1. 查询2号部门的最高工资和最低工资起别名

select max(sal) 最高工资, min(sal) 最低工资 from emp where dept_id=2;

分组查询group by

  1. 可以将某个字段相同值的数据划分为一组,然后以组为单位进行统计查询 
  1. 如果题目中出现每个或每种这样的关键字 并且查询的内容为聚合函数的结果
  1. 查询每个部门的平均工资

select dept_id,avg(sal) from emp group by dept_id;

  1. 查询每个部门的最高工资

select dept_id,max(sal) from emp group by dept_id;

  1. 查询每种工作的平均工资

select job,avg(sal) from emp group by job;

  1. 查询每个部门工资高于2000的人数

select dept_id,count(*) from emp where sal>2000 group by dept_id;

  1. 查询每种工作的最低工资

select job,min(sal) from emp group by job;

  1. 查询1号部门和2号部门的人数  

select dept_id,count(*) from emp where dept_id in(1,2) group by dept_id;

  1. 查询平均工资最高的部门id和平均工资 

select dept_id,avg(sal) from emp group by dept_id order by avg(sal) desc limit 0,1;

having关键字

  1. where后面只能写普通字段条件,不能写聚合函数条件
  1. having后面专门写聚合函数条件,而且需要和group by分组查询结合使用,写在group by 的后面
  1. 查询每个部门的平均工资,要求平均工资大于2000  

select dept_id,avg(sal) from emp group by dept_id having avg(sal)>2000;

select dept_id,avg(sal) a from emp group by dept_id having a>2000;

  1. 查询每种工作的人数,只查询人数大于1的

select job,count(*) c from emp group by job having c>1;

  1. 查询每个部门的工资总和,只查询有领导的员工, 并且要求工资总和大于5400.

select dept_id,sum(sal) s from emp where manager is not null group by dept_id having s>5400;

  1. 查询每个部门的平均工资, 只查询工资在1000到3000之间的,并且过滤掉平均工资低于2000的

select dept_id,avg(sal) a from emp where sal between 1000 and 3000 group by dept_id having a>=2000;

各种查询相关的关键字顺序

  1. select 字段信息 from 表名 where 普通字段条件 group by 分组字段名 having 聚合函数条件 order by 排序字段名 limit 跳过条数,请求条数.

子查询(嵌套查询)

  1. 可以将一条SQL语句查询的结果当做另外一条SQL语句条件的值
  1. 查询工资大于2号部门平均工资的员工信息

select avg(sal)  from emp where dept_id=2;

select * from emp where sal>(select avg(sal)  from emp where dept_id=2);

  1. 查询工资高于程序员最高工资的员工信息

select max(sal) from emp where job="程序员";

select * from emp where sal>(select max(sal) from emp where job="程序员");

  1. 查询工资最高的员工信息

select * from emp where sal=(select max(sal) from emp);

  1. 查询和孙悟空相同工作的员工信息

select * from emp where job=(select job from emp where name="孙悟空") and name!="孙悟空";

  1. 查询工资最低的员工的同事们的信息(指同一部门)
  1. 得到最低工资

select min(sal) from emp;

  1. 通过最低工资得到拿最低工资人的部门id

select dept_id from emp where sal=(select min(sal) from emp);

  1. 通过部门id查询员工

select * from emp where dept_id=(select dept_id from emp where sal=(select min(sal) from emp)) and sal!=(select min(sal) from emp);

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值