Mysql 数据库 DQL 数据查询语言相关sql语句(简单查询,条件查询)

数据库中的相关概念

  1. 库:数据库,内部存放着所有的表、视图、索引等内容

  2. 表:是数据库存储数据的基本单位,由行和列组成

  3. 列:又称为字段,是表的基本组成单位,相当于Java类中的属性

  4. 行:是表的基本组成单位,具体数据,每行信息是一个整体,由固定字段构成。相当于Java中由类实例化出来的一个又一个的对象

SQL

  • SQL:结构化查询语言,提供了对数据库数据的增删改查操作对应的处理

SQL是一种规范,也是一种国际标准,所有的关系型数据库都支持SQL,不被MySQL独有

特点

  1. 不区分大小写

  2. 注释:

    • 单行:-- (--空格)

    • 多行:/* */

简单查询

查询所有字段
复制代码
-- 查询所有列:select * from 表名(*:是通配符,表示所有列)   select * from employees
查询部分字段
复制代码
 select 列名1,列名2,... from 表名
  • 也可以通过列出所有字段名的方式查询所有字段

    • 优点:

      1. 效率更快

      2. 可读性较好

      3. 可维护性较高

    • 缺点:

      1. 书写繁琐
复制代码
-- 查询所有字段
复制代码
SELECT * from employees
-- 查询员工id、员工工资
select employee_id,salary from employees
-- 列出所有字段名查询所有字段
select employee_id,salary,first_name,last_name,email,phone_number,job_id,commission_pct,manager_id,department_id,hiredate from employees
结果运算

+、-、*、/、%

复制代码
select 列名 运算符 值  from 表名
复制代码
-- 查询员工id和工资,及对工资进行加减乘除的运算
    select employee_id,salary,salary+100,salary-100,salary*100,salary/100,salary%100  from employees
别名
  • 对查询之后的结果起别名
复制代码
    select 列名 as 别名,列名 as 别名,列名,...  from 表名
  • 别名可以省略单引号

    标准SQL中没有双引号,字符串通过单引号修饰

  • as关键字可省

复制代码
  
复制代码
  -- 查看员工id和员工工资
   select employee_id as 员工id,salary as 工资 from employees
    -- as关键字可省
   select employee_id 员工id,salary 工资 from employees
去重
复制代码
select distinct 列名1,列名2,.. from 表名
复制代码
  -- 查询所有的职位id(根据job_id进行去重)
  select distinct job_id from employees
  -- 查询所有的职位和部门id(根据job_id和department_id去重)
  select distinct job_id,department_id from employees

当去重规则为多个字段时,只有当多个字段的值都相同时才会去重

复制代码
分支-case when
复制代码
case
   when 条件1 then 结果1
   when 条件2 then 结果2
   ...
   else 其他结果
end
-- 满足when中的条件,便执行对应then中的结果,如果when都不满足,则最终执行else,从上往下判断
复制代码
-- 查询员工id、员工工资、工资等级(工资>=15000 高薪,工资>=10000 中薪,工资>=5000  一般,工资<5000  低薪)
select employee_id 员工id,salary 员工工资,
    case
        when salary>=15000 then '高薪'
        when salary>=10000 then '中薪'
        when salary>=5000 then '一般'
        else '低薪'
    end  as 薪资等级
from employees
查看表详情
  • 表详情:当前表的字段设计
复制代码
describe 表名-- describe关键字可以简写为desc
复制代码
-- 查看员工表详情
describe employees
desc employees

条件查询

  • 能够支持的关系运算符:> < >= <= != =

单条件查询
复制代码
select 列名... from 表名  where 筛选条件
  • MySQL中对比字符串时默认不区分大小写,若想区分,则在对应字段前添加binary关键字即可

    -- 查询工资大于10000的员工信息
    select * from employees where salary>10000
    -- 查询部门id<50的员工信息
    select * from employees where department_id<50
    -- 查询起始名为Steven的员工信息-不区分大小写
    select * from employees where first_name='steven'
    -- 区分大小写
    select * from employees where binary first_name='Steven'

多条件查询
复制代码
where 条件1 连接符 条件2
复制代码
连接符:
and:表示并且,意为同时满足,相当于Java中的&&
or:表示或者,意为满足任意一个即可,相当于Java中的||
复制代码
-- 查询员工工资>10000并且部门id<50的员工信息
select * from employees where salary>10000 and department_id<50
-- 查询员工id<120或者部门id=80的员工信息
select * from employees where employee_id<120 or department_id=80
区间查询
复制代码
where 列名 [not] between 起始值 and 结束值
  • 中括号中的内容意为可省

  • 加上not表示不在此区间之内

    -- 查询工资大于10000并且小于12000的员工信息
    select * from employees where salary>=10000 and salary<=12000
    -- 区间查询(在范围内):between 起始值 and 结束值
    select * from employees where salary between 10000 and 12000
    -- 区间查询(不在范围内):not between 起始值 and 结束值
    select * from employees where salary not between 10000 and 12000

枚举查询
复制代码
where 列名 [not] in(值1,值2,...)
复制代码
-- 查询部门id是10、20、30的员工信息
select * from employees where department_id=10 or department_id=20 or department_id=30
-- 枚举查询(列举字段所有满足条件的值):列名 in(值1,值2,...)
select * from employees where department_id in(10,20,30)
-- 不在范围内:列名  not in(值1,...)
select * from employees where department_id not in(10,20,30)
空值查询
复制代码
where 列名 is [not] null
复制代码
-- 查询没有绩效的员工信息
-- 为空:列名 is null
select * from employees where commission_pct is null
-- 不为空:列名 is not null
select * from employees where commission_pct is not null
模糊查询
复制代码
where 列名 [not] like '通配模式'
​
可用占位符:
%:表示n个字符
_:表示1个字符
复制代码
-- 查询起始名以p开头的员工信息
select * from employees where first_name like 'p%'
-- 查询起始名中包含p的员工信息
select * from employees where first_name like '%p%'
-- 查询起始名第二个字母是a的员工信息
select * from employees where first_name like '_a%'
-- 查询起始名由5个字母组成的员工信息
select * from employees where first_name like '_____'
相关推荐
秃头摸鱼侠1 小时前
MySQL查询语句(续)
数据库·mysql
MuYiLuck1 小时前
【redis实战篇】第八天
数据库·redis·缓存
睡觉待开机1 小时前
6. MySQL基本查询
数据库·mysql
qq_408413391 小时前
spark 执行 hive sql数据丢失
hive·sql·spark
大熊猫侯佩2 小时前
由一个 SwiftData “诡异”运行时崩溃而引发的钩深索隐(三)
数据库·swiftui·swift
大熊猫侯佩2 小时前
由一个 SwiftData “诡异”运行时崩溃而引发的钩深索隐(二)
数据库·swiftui·swift
大熊猫侯佩2 小时前
用异步序列优雅的监听 SwiftData 2.0 中历史追踪记录(History Trace)的变化
数据库·swiftui·swift
大熊猫侯佩2 小时前
由一个 SwiftData “诡异”运行时崩溃而引发的钩深索隐(一)
数据库·swiftui·swift
漫谈网络2 小时前
sqlite3 命令行工具详细介绍
sql·sqlite·db
Ares-Wang2 小时前
负载均衡LB》》HAproxy
运维·数据库·负载均衡