MySQL数据库查询语句

在我们做开发使用数据库的过程中,增删改查是基本操作,在这些操作中,查是重中之重,今天我们说一下查询语句
这里是我们接下来将要用到的数据表
数据表

1基本格式

select 查询内容 from 从哪里查;

– 查询内容 字段名 列名
– 从哪里查 表名

1.1 基本查询,字段表名

– * 所有字段全部展示
– 不建议,如果采用select * 方式整个数据库数据的时间非常长,浪费资源

select * from t_employees;

– 查询指定的字段

select EMPLOYEE_ID, FIRST_NAME, LAST_NAME from t_employees;
1.2 查询结果字段进行数据计算

– 查询员工ID号,员工的名字(FristName LastName) 用户年限

select EMPLOYEE_ID, FIRST_NAME, LAST_NAME, SALARY * 12
from t_employees;

– 这里允许使用+ - * / 可以完成字段和字段直接的算术运算
– %在SQL语句中不是取余,而是占位符!!

1.3 去重查询 distinct

– 查询结果中存在相同内容,第二个数据不要

select distinct MANAGER_ID
from t_employees;

– 不去重

select MANAGER_ID
from t_employees;
1.4 字段别名

– 字段名 as ‘别名’

select EMPLOYEE_ID as 'ID', FIRST_NAME as '名',
LAST_NAME as '姓', SALARY * 12 as '年薪'
from t_employees;

2.排序查询order by

规则效果
asc指定条件升序
desc指定条件降序

– 基本格式

select fieldName from tbName order by fieldName asc/desc;

– 在查询结果展示中,按照执行的字段作为标记完成升序和降序

2.1单一条件排序
select EMPLOYEE_ID, FIRST_NAME, SALARY 
-- 查询展示的字段有哪些
from t_employees -- 从哪里查询
order by SALARY asc ; -- order by 指定字段要求排序 升序

select EMPLOYEE_ID, FIRST_NAME, SALARY -- 查询展示的字段有哪些
from t_employees -- 从哪里查询
order by SALARY desc ; -- order by 指定字段要求排序 降序
2.2 多字段条件排序

– 第一条件是工资降序,当第一条件出现一致情况下,使用第二条件进行二次排序

select EMPLOYEE_ID, FIRST_NAME, SALARY -- 查询展示的字段有哪些
from t_employees -- 从哪里查询
order by SALARY desc, EMPLOYEE_ID desc; -- order by 指定字段要求排序 工资降序 ID降序

3. 条件查询 where

基本格式

select fieldName from tbName where condition;

– 从指定数据表中,按照where之后指定条件,查询对应的字段数据
– where条件是一个是一个boolean类型结果

3.1 等值判断 =

– Java等于判断是用的是 == 或者更严谨的情况,会使用equals
– 数据库中使用 = 在where条件之后是一个等值判断
– 查询在员工表内容,工资等于11000 对应的id号,名,和工资

select EMPLOYEE_ID, FIRST_NAME, SALARY
from t_employees
where SALARY = 11000;
3.2 不等值判断(> < >= <= != <>)

– 查询在员工表内容,工资大于10000 对应的id号,名,和工资

select EMPLOYEE_ID, FIRST_NAME, SALARY
from t_employees
where SALARY > 10000;

– 查询在员工表内容,工资大于10000 对应的id号,名,和工资

select EMPLOYEE_ID, FIRST_NAME, SALARY
from t_employees
where SALARY >= 10000;

– 查询在员工表内容,部门ID不等于80 对应的id号,名,工资和部门ID

select EMPLOYEE_ID, FIRST_NAME, SALARY,
DEPARTMENT_ID
from t_employees
where DEPARTMENT_ID <> 80;

– 查询在员工表内容,部门ID不等于80 对应的id号,名,工资和部门ID

select EMPLOYEE_ID, FIRST_NAME, SALARY, DEPARTMENT_ID
from t_employees
where DEPARTMENT_ID != 80;
3.3 逻辑判断(and, or, not)

– 查询在员工表内容,要求工资大于10000并且部门编号为80 对应的ID号,名,工资和部门ID

select EMPLOYEE_ID, FIRST_NAME, SALARY, DEPARTMENT_ID
from t_employees
where SALARY > 10000 and DEPARTMENT_ID = 80;

– 查询在员工表内容,要求工资小于2500或者部门编号为90对应的ID号,名,工资和部门ID

select EMPLOYEE_ID, FIRST_NAME, SALARY,
DEPARTMENT_ID
from t_employees
where SALARY < 2500 or DEPARTMENT_ID = 90;
3.4 区间 between and

– 要求between min and max 在min <==> max范围以内,而且要求小值之前,大值不然会报
– 错,这里区间范围是包含指定的边界

– 区间范围

select EMPLOYEE_ID, FIRST_NAME, SALARY
from t_employees
where SALARY between 8000 and 10000;
3.5 NULL值判断

– is null 指定当前的字段是null
– is not null 指定当前字段不是null
– 找出所有提成为null的数据

select FIRST_NAME, COMMISSION_PCT
from t_employees
where COMMISSION_PCT is null;

– 找出所有提成不是null的数据

select FIRST_NAME, COMMISSION_PCT
from t_employees
where COMMISSION_PCT is not null;
3.6 枚举查询in

– 查询部门编号为60, 70, 90员工名字和对应部门编号
– in查询效率较低,推荐使用多条件拼接完成查询操作

select FIRST_NAME, DEPARTMENT_ID
from t_employees
where DEPARTMENT_ID in(70, 60, 90);
3.7 模糊查询like

– LIKE
– _ 匹配一个字符
– % 匹配任意长度字符
– 查询FIRST_NAME,要求FIRST_NAME字段D字母开头后面有4个字符

select FIRST_NAME
from t_employees
where FIRST_NAME like 'D____';

– -- 查询FIRST_NAME,要求FIRST_NAME字段带有D字母就可以,而且不区分大小写

select FIRST_NAME
from t_employees
where FIRST_NAME like '%D%';
3.8 分支结构查询
case
when condition1 then ret1
when condition2 then ret2
when condition3 then ret3
end

– 从case开始,到end结束。满足条件对应一个结果,类似于Java中的switch case

– 查询姓名,工资已经对应工资划分的等级LEVEL

select FIRST_NAME, SALARY,
case
when SALARY >= 10000 then 'A'
when SALARY >= 8000 and SALARY < 10000 then
'B'
when SALARY >= 6000 and SALARY < 8000 then
'C'
when SALARY >= 4000 and SALARY < 6000 then
'D'
else 'E'
end as 'LEVEL'
from t_employees;

4. 时间查询

– 语法
select 时间函数([参数列表]);
– 查询时间情况下,得到的是一个单列单表(虚表)

时间函数功能描述
sysdate()当前系统时间(年,月,日,时,分,秒)
CURRENT_TIMESTAMP()当前系统时间(日,月,年,时,分,秒)
curdate()当前日期
curtime()当前时间
week()指定日期是这一年的第几周
hour()指定日期是今天第几个小时
minite()指定日期是小时的第几分钟
second()指定日期是分钟的第几秒
select sysdate();
select CURRENT_TIMESTAMP();
select curdate();
select curtime();
select week('2019-11-23');
select now();
select second(sysdate());
select minute(sysdate());
select hour(sysdate());

5. 字符串应用

方法功能描述
concat(str1, str2, str3…)拼接多个字符串
insert(str, pos, len, newStr)在指定字符串位置pos,长度限制len,插入新字符串
lower(str)大写转小写
upper(str)小写转大写
substring(str,pos, len)指定字符串,从pos位置开始,长度限制len
select concat('你好', ' MySQL', ' Oracle公司产
品');
select insert('ABCDEFG', 3, 3, '你好');
select upper('abcdefg');
select lower('ABCDEF');
select substring('ABCDEFG', 2, 5);

6.内置方法

方法功能描述
sum()指定字段一列总和
avg()指定字段一列平均值
max()指定字段一列中的最大值
min()指定子段一列中的最小值
count()指定字段有多少行
-- 工资总和
select sum(SALARY)
from t_employees;
-- 工资平均数
select avg(SALARY)
from t_employees;
-- 工资最大值
select max(SALARY)
from t_employees;
-- 工资最小值
select min(SALARY)
from t_employees;
-- 当前有多少员工计数
select count(*)
from t_employees;
-- 当前有多少员工计数
-- count(1) 蜜汁比count(*) 快一点
select count(1)
from t_employees;
-- 统计有多少人有绩效
select count(COMMISSION_PCT)
from t_employees;
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值