暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

SQL 数据查询:详细解析与实用案例,带你快速入门

20

数据库查询

数据库查询是从数据库中检索数据的操作,通过使用不同的 SQL 语句和条件,可以实现复杂的数据检索。

一、SELECT

SELECT
语句用于从数据库中选择数据。它是 SQL 中最常用的语句之一。

  • 基本语法

    SELECT column1, column2, ...
    FROM table_name;

  • 示例: 从 employees
    表中选择所有列:

    SELECT * FROM employees;

    employees
    表中选择 name
    salary
    列:

    SELECT name, salary FROM employees;

二、WHERE

WHERE
子句用于在 SELECT
UPDATE
DELETE
语句中指定过滤条件。它用于提取满足指定条件的记录。

  • 基本语法

    SELECT column1, column2, ...
    FROM table_name
    WHERE condition;

  • 示例: 从 employees
    表中选择 salary
    大于 50000 的记录:

    SELECT * FROM employees
    WHERE salary > 50000;

    employees
    表中选择 dept
    HR
    的记录:

    SELECT * FROM employees
    WHERE dept = 'HR';

三、 运算符

SQL 中的运算符用于在查询中执行操作。常见的运算符包括算术运算符、比较运算符、逻辑运算符等。

  • 算术运算符+
    , -
    , *
    , /

    SELECT salary + 1000 AS new_salary
    FROM employees;

  • 比较运算符=
    , <>
    , >
    , <
    , >=
    , <=

    SELECT * FROM employees
    WHERE salary >= 60000;

  • 逻辑运算符AND
    , OR
    , NOT

    SELECT * FROM employees
    WHERE salary > 50000 AND dept = 'HR';

四、 函数

SQL 函数用于执行某些操作并返回结果。常见的函数包括聚合函数、字符串函数、日期函数等。

  • 聚合函数

    • **COUNT()
      **:返回行数
      SELECT COUNT(*) FROM employees;

    • **SUM()
      **:返回数值列的总和
      SELECT SUM(salary) FROM employees;

    • **AVG()
      **:返回数值列的平均值
      SELECT AVG(salary) FROM employees;

    • **MAX()
      **:返回数值列的最大值
      SELECT MAX(salary) FROM employees;

    • **MIN()
      **:返回数值列的最小值
      SELECT MIN(salary) FROM employees;

  • 字符串函数

    • **CONCAT()
      **:连接两个或多个字符串
      SELECT CONCAT(first_name, ' ', last_name) AS full_name
      FROM employees;

    • **LENGTH()
      **:返回字符串的长度
      SELECT LENGTH(nameFROM employees;

    • **UPPER()
      **:将字符串转换为大写
      SELECT UPPER(nameFROM employees;

    • **LOWER()
      **:将字符串转换为小写
      SELECT LOWER(nameFROM employees;

  • 日期函数

    • **NOW()
      **:返回当前日期和时间
      SELECT NOW();

    • **CURDATE()
      **:返回当前日期
      SELECT CURDATE();

    • **YEAR()
      **:返回日期中的年份部分
      SELECT YEAR(hire_date) FROM employees;

    • **MONTH()
      **:返回日期中的月份部分
      SELECT MONTH(hire_date) FROM employees;

    • **DAY()
      **:返回日期中的天数部分
      SELECT DAY(hire_date) FROM employees;

举例1

CREATE TABLE orders (
    order_id INT PRIMARY KEY AUTO_INCREMENT,
    customer_name VARCHAR(100),
    order_date DATE,
    amount DECIMAL(102)
);

查询操作:

  1. 选择所有订单

    SELECT * FROM orders;

  2. 选择特定列

    SELECT customer_name, amount FROM orders;

  3. 按条件过滤

    SELECT * FROM orders
    WHERE amount > 100;

  4. 使用聚合函数

    SELECT COUNT(*) AS total_orders FROM orders;

  5. 连接字符串

    SELECT CONCAT(customer_name, ' (', order_id, ')'AS order_info
    FROM orders;

  6. 日期函数

    SELECT order_id, YEAR(order_date) AS order_year
    FROM orders;

通过这些查询操作,我们可以从数据库中检索所需的各种信息,满足不同的业务需求。

举例2

select id
from orders
where date(ts) = '2024-06-02'
  and unit_price < 20;

详细解释

  1. **select id
    **:

    • 这条语句表示我们希望从 orders
      表中选择 id
      列的数据。
  2. **from orders
    **:

    • 指定查询的数据来源是 orders
      表。
  3. **where date(ts) = '2024-06-02'
    **:

    • where
      子句用于过滤记录,只选择那些满足条件的记录。
    • date(ts)
      函数将 ts
      列的时间戳值转换为日期格式。
    • date(ts) = '2024-06-02'
      这一条件确保只选择 2024-06-02的记录。
  4. **and unit_price < 20
    **:

    • and
      运算符用于将两个条件连接起来,表示两个条件都必须满足。
    • unit_price < 20
      这一条件确保只选择单价低于 20 的记录。

举例3

create table points(
    id int primary key auto_increment,
    x float,
    y float
);

select idsqrt(x^2 + y^2)
from points;

详细解释

  1. **select id, sqrt(x^2 + y^2)
    **:

    • select
      语句用于选择表中的数据。
    • id
      是表 points
      中的主键列。
    • sqrt(x^2 + y^2)
      计算每个点的模,使用平方和的平方根。sqrt
      函数用于计算平方根,x^2
      y^2
      分别表示 x 和 y 的平方。
  2. **from points
    **:

    • 指定数据来自 points
      表。


文章转载自周同学带您玩AI,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论