Mysql的基础查询及条件查询

#进阶1: 基础查询
/*
语法:
select 查询列表
from 表名;
特点:

1,查询列表可以是:表中的字段,常量值,表达式,函数
2,查询的结果是一个虚弥表格
*/
#打开这个库
USE myemployees;

#显示表departments的结构

DESC departments;

#1.查询表中的单个字段

SELECT last_name FROM employees;

#2.查询表中的多个字段

SELECT last_name,salary,email FROM employees;

#查询表中所有字段"双击"
#方式一
SELECT
    `employee_id`,
    `first_name`,
    `last_name`,
    `email`,
    `phone_number`,
    `job_id`,
    `salary`,
    `commission_pct`,
    `manager_id`,
    `department_id`,
    `hiredate`
FROM
    employees;
#方式二
SELECT * FROM employees;

#4.查询常量值

SELECT 100;
SELECT 'john';

#5.查询表达式

SELECT 100%98;

#6.查询函数

SELECT VERSION();#版本号

#7.起别名 
/*
①方便理解
②如果要查询的字段有重名的情况,使用别名可以区分开来
*/
#方式一:使用AS
SELECT 100%98 AS 结果;
SELECT last_name AS 姓,first_name AS 名 FROM employees;

#方式二:使用空格
SELECT last_name 姓,first_name 名 FROM employees;


#案例:查询salary, 查询的结果为 out put
SELECT salary AS "out put" FROM employees;
SELECT salary "out put" FROM employees;

#8.去重

#案例: 查询员工表中涉及到的所有的部门编号

SELECT DISTINCT department_id FROM employees;    

#9.+号的作用
/*
仅仅只有一个功能: 运算符
select 100+90; 两个操作数都为数值型,则做加法运算
select '123'+90;只要其中一方为字符型,试图将字符型转换为数值型
            如果转换成功,则继续做加法运算
select 'john'+90;    如果转换失败,将字符型数字转换为零
select nu11+10;      只要其中一方为nu11,则结果肯定为nu11
*/
#案例: 查询员工名和姓连接成一个字段,并显示为 姓名
#  CONCAT() 拼接函数
SELECT CONCAT('a','b','c') AS 结果;

SELECT 
    CONCAT(last_name,first_name) AS 姓名
FROM
    employees;
#案例:显示出表employees的全部列,各个例之间用逗号连接,列头显示成OUT_PUT

SELECT IFNULL(commission_pct,0) AS 奖金率,#如果commission_pct有null则用0代替
    commission_pct
FROM
    employees;
    
#------------------------------------------------------------    
    
SELECT 
    CONCAT(`first_name`,',',`last_name`,',',`email`,',',
    `phone_number`,',',`job_id`,',',IFNULL(commission_pct,0)) AS OUT_PUT 
FROM
    employees;

-------------------------------------------------------------------------------------------------------------------

#进阶2: 条件查询
/*

语法:
    select
        查询列表
    from
        表名
    where
        赛选条件; 
分类:
    一,按条件表达式赛选
    
    简单条件运算符: > < = != <> >= <=
    
    二,安逻辑表达式筛选
    
    逻辑运算符:
        && || !
        and or not
        
    且 &&和and: 两个条件都是为1,结果为1,反之为0;
    或 ||或or: 只要有一个条件为1,结果为1,反之为0;
    非 !或not: 如果连接的条件本身为0,结果为1,反之为0:
    三,模糊查询
        like
        between and
        in
        is null
*/

#一,按条件表达式筛选

#案例1: 查询工资>12000的员工信息

SELECT * FROM employees WHERE salary>12000;

#案例2: 查询部门编号不等于90号的员工名和部门编号
SELECT
    last_name,
    department_id
FROM
    employees;
WHERE
    department_id!=90;
#二,按逻辑表达式筛选

#案例1: 查询工资在10000~20000之间的员工名和部门编号,工资及奖金

SELECT
    last_name AS 名,
    salary,
    commission_pct
FROM
    employees
WHERE 
    salary>=10000 AND salary<=20000;
#案例2:查询部门编号不是在90到110之间,或者工资高于15000的员工信息
SELECT
    *
FROM
    employees
WHERE
    NOT(department_id>=90 AND department_id<=100) OR salary>15000;
#三,模糊查询
/*
like
特点:
①一般和通配符使用
    通配符:
    % 任意多个字符,包含0个字符
    _任意单个字符
between and
in
is null|is not null
*/

#1.案例1:查询员工名中包含字符a的员工信息

SELECT
    *
FROM
    employees
WHERE
    last_name LIKE '%a%'; #%表示任意字符

#案例2:查询员工中第三个字符为N,第五个字符为L的员工名和工资
SELECT
    last_name,
    salary
FROM
    employees
WHERE 
    last_name LIKE '__n_l%';


#案例3:查询员工名中第二个字符为_的员工

SELECT
    last_name
FROM
    employees
WHERE 
    last_name LIKE '_$_%' ESCAPE '$'; #ESCAPE 将$设为转义字符
    
#2.between and

#①使用berweem and 可以提高语句的整洁度
#②包含临界值
#③两个临界值不要调换顺序
#案例1:查询员工编号在100到120之间的员工信息

SELECT
    *
FROM
    employees
WHERE
    employee_id >=100 AND employee_id<=120;
#----------------------------------------------

SELECT 
    *
FROM
    employees
WHERE
    employee_id BETWEEN 100 AND 120;
#3.in
/*
含义:判断某字段的值是属于in列表中的某一项
特点: 
    ①使用in提高语句整洁度
    ②in列表的值类型必须一直或兼容
    
*/
#案例:查询员工的工种编号是 IT_PROG,AD_VP,AD_PRES中的一个员工名和工种编号

SELECT
    last_name,
    job_id
FROM
    employees
WHERE
    job_id = 'IT_PROG' OR job_id = 'AD_VP' OR job_id = 'AD_PRES';
#------------------------------
SELECT
    last_name,
    job_id
FROM
    employees
WHERE
    job_id IN ('IT_PROG','AD_VP','AD_PRES');
    
#4.is null
/*
=或<>不能用于判断null值
is null或is not null 可以判断null的值
*/

#案例1: 查询没有奖金的员工名和奖金率

SELECT
    last_name,
    commission_pct
FROM
    employees
WHERE
    commission_pct IS NULL;
#案例1: 查询有奖金的员工名和奖金率

SELECT
    last_name,
    commission_pct
FROM
    employees
WHERE
    commission_pct IS NOT NULL;

#安全等于 <=>
#案例1: 查询没有奖金的员工名和奖金率

SELECT
    last_name,
    commission_pct
FROM
    employees
WHERE
    commission_pct <=>NULL;
    
#案例1: 查询工资为12000的员工信息
SELECT
    last_name,
    salary
FROM
    employees
WHERE
    salary<=> 12000;
    
#IS NULL PK <=>

IS NULL: 仅仅可以判断null值,可读性较高
<=>: 既可以判断null值,又可以判断普通的数值,可读性
#-------------测试-------------
#1.查询工资大于12000的员工姓名和工资

SELECT 
    last_name,
    salary
FROM
    employees
WHERE
    salary > 12000;


#2. 查询员工号为176的员工的姓名和部门号和年薪

SELECT 
    last_name,
    department_id,
    employee_id,
    salary*12*(1+IFNULL(commission_pct,0)) AS 年薪
FROM
    employees
WHERE
    employee_id = 176;
    
#3.选择工不在5000到12000的员工姓名和工资

SELECT 
    last_name,
    salary
FROM
    employees
WHERE
    salary > 12000 OR salary < 5000;

#4.选择员工姓名第三个字母都是a的员工性名

SELECT 
    last_name
FROM
    employees
WHERE
    last_name LIKE '__a%';
    
#5.查询没有奖金,且工资小于18000的salary,last_name

SELECT 
    salary,
    last_name
FROM
    employees
WHERE
    commission_pct IS NULL AND salary<18000;
#6.查询employees表中,job_id不为 'IT' 或者 工资为12000的员工信息

SELECT
    *
FROM
    employees
WHERE
    job_id<>'IT' OR salary = 12000;
#7.查询部门departments表的结构,查询效果如下

DESC departments;

#8.查询部门departments设计到那类位置编号

SELECT DISTINCT location_id
FROM departments;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Y3717

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值