MySQL查询(一)

MySQL查询(一)

1. 基础查询

  • SELECT 查询列表 FROM 表名;
    
    • 查询列表:可以是表中的字段、常量值、表达式、函数

    • 查询结果是一个虚拟的表格,并没有保存下来

  • 查询表中的单个字段

    • SELECT last_name FROM employees; #查询employees表格中的字段last_name
      
  • 查询表中的多个字段

    • SELECT last-name,salary,email FROM employees; #查询employees表格中的字段last-name,salary,email
      
  • 查询表中的所有字段

    • SELECT * FROM employees; #查询employees表格中的所有字段
      
  • 查询常量值

    • SELECT 100; #查询100
      SELECT 'john'; #查询john
      
  • 查询表达式

    • SELECT 100%3;
      
  • 查询函数

    • SELECT VERSION(); #查询版本
      
  • 为字段起别名

    ​ 两种方式:

    • SELECT 100%3 AS 结果;
      SELECT last_name AS 姓,first_name ASFROM employees;
      
    • SELECT last_name 姓,first_name 名 FROM employees;
      
    • 若别名中间有空格,可以用双引号括起来

    • 别名可以便于理解;如果要查询的字段有重名的情况,可以使用别名区分

  • 去重

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

    • SELECT DISTINCT department_id FROM employees;
      
  • +的作用

    • mysql中的+号只有一个功能,就是运算符,不能连接字符串。如果两个操作数有一个是字符型,则试图将字符转化为数值进行加法运算,若转换不成功,则将字符型转化为0。若只要有一方是null,则结果肯定是null

    • 若要查询员工名和姓连接成一个字段,中间用空格隔开,并显示为姓名:

      SELECT CONCAT(last_name,' ',first_name) AS 姓名 FROM employees;
      
  • ifnull(要进行判断的数据,若为空给它赋的值)

    • select ifnull(commission_pct,0) as 奖金率,commission_pct from employees;
      

2. 条件查询

  • 条件查询的语法

    SELECT 
            查询列表
    FROM
            表名
    WHERE
            筛选条件;
    
  • 分类

    • 按条件表达式筛选

      条件运算符:> < = != <> >= <=

      select * from employees where salary>12000;
      select last_name,department_id from employees where department_id<>90;
      
    • 按逻辑表达式筛选

      逻辑运算符:&& || ! 或者用and or not

      select last_name,salary,commission_pct from employees where salary>=10000 and salary<=20000;   #查询工资不低于1万不超过2万的员工的名字、工资、奖金率
      select * from employees where department_id<90 or department_id>110 or salary>15000;
      
    • 模糊查询

      模糊查询通常与通配符一起使用。

      ​ %:可以表示任意多个字符,包括0个字符

      ​ _:表示一个字符

      若遇到字符串中包含通配符,可以使用转义符\

      like

      select * from employees where last_name like '%a%';  #查找名字中包含字符a的所有员工信息
      select * from employees where last_name like '__a_s%';  #查询名字中第3个字符是a,第5个字符是s的所有员工信息
      select last_name from employees where last_name like '_\_%';  #查询名字中第二个字符是'_'的所有员工名
      

      between and

      select * from employees where employee_id between 100 and 120;  #查询员工编号在100与120之间的所有员工信息,包含临界值,两个临界值不能颠倒顺序
      

      in

      select last_name,job_id from employees where job_id in ('AD_PRES','IT_PROG','PU_MAN');   #查找工种编号是列表中的三个工种的所有员工名字和工种编号
      

      is null

      select last_name,commission_pct from employees where commission_pct is null;   #查找奖金率为空的所有员工的员工名和奖金率
      

      <=>安全等于

      select last_name,commission_pct from employees where commission_pct <=> null;  #查找奖金率为空的所有员工的员工名和奖金率
      select last_name,salary from employees where salary <=> 12000;  #查找工资为12000的所有员工的名字和工资
      

3. 排序查询

  • 排序查询的基本语法:

    select 查询列表
    from 表
    [where 筛选条件]
    order by 排序列表 [ascdesc]
    

    默认升序

  • 示例

    按字段排序:

    select * from employees order by salary desc;  #查询员工信息,按工资降序排序
    

    增加筛选条件,按字段排序:

    select * from employees where department_id>=90 order by hiredate;  #查询部门编号大于等于90的员工信息,按入职日期先后排序
    

    按表达式或别名排序:

    select *,salary*12*(1+ifnull(commission_pct,0)) 年薪 from employees order by salary*12*(1+ifnull(commission_pct,0)) desc;  #按年薪高低显示员工信息和年薪
    select *,salary*12*(1+ifnull(commission_pct,0)) 年薪 from employees order by 年薪 desc;
    

    按函数排序:

    select length(last_name) 字节长度,last_name,salary from employees order by length(last_name) desc;  #按姓名长度显示员工名字和工资
    

    按多个字段排序:

    select * from employees order by salary asc,employee_id desc;  #先按工资升序,若工资一样,再按员工编号降序
    
posted @   木田心  阅读(79)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
点击右上角即可分享
微信分享提示