MySQL DQL 查的方法01

MySQL 这边的东西全部来找自 https://itbaima.net/document

MySQL

DQL 查的方法01

单表查询

单表查询是最简单的一种查询,我们只需要在一张表中去查找数据即可,通过使用select语句来进行单表查询:

-- 指定查询某一列数据
SELECT 列名[, 列名]
FROM 表名
-- 会以别名显示此列
SELECT 列名 别名
FROM 表名
-- 查询所有的列数据
SELECT *
FROM 表名
-- 只查询不重复的值
SELECT DISTINCT 列名
FROM 表名

我们也可以添加where字句来限定查询目标:

SELECT *
FROM 表名
WHERE 条件

举个例子

假设有一个名为employees的表,它包含id, name, department, 和 salary等列。

  1. 查询特定列:
    如果你只想查看员工的姓名和部门,可以使用:

    SELECT name, department FROM employees;
    

    这将只显示namedepartment列的数据。

  2. 使用列别名:
    如果想在查询结果中使用不同的列名称,比如将name列显示为Employee Name

    SELECT name AS 'Employee Name' FROM employees;
    

    查询结果中的name列将显示为Employee Name

  3. 查询所有列:
    要获取employees表中所有列的数据:

    SELECT * FROM employees;
    

    这将显示表中每一行的所有列数据。

  4. 查询不重复的值:
    如果你只想查看不同的部门名称:

    SELECT DISTINCT department FROM employees;
    

    这将列出employees表中所有不同的部门名称,不重复。

  5. 使用WHERE子句:
    如果只想查看工资超过5000的员工信息:

    SELECT * FROM employees WHERE salary > 5000;
    

    这将只显示salary列值超过5000的记录。

常用查询条件

  • 一般的比较运算符,包括=><>=<=!=等。
  • 是否在集合中:innot in
  • 字符模糊匹配:likenot like
  • 多重条件连接查询:andornot

举个例子

假设有一个名为products的表,其中包含id, name, price, 和 category等列。

  1. 一般的比较运算符:

    • 查询价格大于100的所有产品:
      SELECT * FROM products WHERE price > 100;
      
    • 查找ID等于5的产品:
      SELECT * FROM products WHERE id = 5;
      
  2. 是否在集合中(IN, NOT IN):

    • 创建一个简单的表格示例来展示INNOT IN查询的结果。以下是一个假设的products表的内容,包含了不同类别的产品:
idnamepricecategory
1Laptop800Electronics
2Shirt20Clothing
3Smartphone500Electronics
4Blender100Appliances
5Jeans40Clothing
6Microwave150Appliances
  1. 查询categoryElectronicsClothing中的产品:

    SELECT * FROM products WHERE category IN ('Electronics', 'Clothing');
    

    这个查询将返回以下结果:

    idnamepricecategory
    1Laptop800Electronics
    2Shirt20Clothing
    3Smartphone500Electronics
    5Jeans40Clothing
  2. 查询category不在ElectronicsClothing中的产品:

    SELECT * FROM products WHERE category NOT IN ('Electronics', 'Clothing');
    

    这个查询将返回以下结果:

    idnamepricecategory
    4Blender100Appliances
    6Microwave150Appliances
    
    
  3. 字符模糊匹配(LIKE, NOT LIKE):

    • 查找名字中包含“Phone”的产品:
      SELECT * FROM products WHERE name LIKE '%Phone%';
      
    • 查找名字中不包含“Phone”的产品:
      SELECT * FROM products WHERE name NOT LIKE '%Phone%';
      
  4. 多重条件连接查询(AND, OR, NOT):

    • 同时满足多个条件的查询,比如查找价格低于100且类别为“Clothing”的产品:
      SELECT * FROM products WHERE price < 100 AND category = 'Clothing';
      
    • 满足任一条件的查询,例如查找价格低于50或高于200的产品:
      SELECT * FROM products WHERE price < 50 OR price > 200;
      

这些例子展示了如何使用不同的运算符来筛选和查询数据库中的数据。在实际应用中,这些运算符可以组合使用,以满足复杂的查询需求。

排序查询

我们可以通过order by来将查询结果进行排序:

SELECT *
FROM 表名
WHERE 条件
ORDER BY 列名 ASC|DESC

使用ASC表示升序排序,使用DESC表示降序排序,默认为升序。

我们也可以可以同时添加多个排序:

SELECT *
FROM 表名
WHERE 条件
ORDER BY 列名1 ASC|DESC, 列名2 ASC|DESC

这样会先按照列名1进行排序,每组列名1相同的数据再按照列名2排序。

举个例子

假设有一个名为employees的表,包含以下列:id, name, department, 和 salary

  1. 基本排序查询:

    • 按照salary升序排列所有员工:

      SELECT * FROM employees ORDER BY salary ASC;
      

      这将返回所有员工的列表,按其薪水从低到高排序。ASC表示升序排列。

    • 按照salary降序排列所有员工:

      SELECT * FROM employees ORDER BY salary DESC;
      

      这将返回所有员工的列表,按其薪水从高到低排序。DESC表示降序排列。

  2. 多列排序:

    • 首先按照department升序排列,然后在每个部门内按照salary降序排列员工:
      SELECT * FROM employees ORDER BY department ASC, salary DESC;
      
      这个查询首先会根据department列的值将员工分组,然后在每个部门内部,员工的信息会根据他们的salary值从高到低排序。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值