数据库查询

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

一、SELECT

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

  • 基本语法

    SELECT column1, column2, ...
    FROM table_name;
  • 示例
    employees 表中选择所有列:

    SELECT * FROM employees;

    employees 表中选择 namesalary 列:

    SELECT name, salary FROM employees;

二、WHERE

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

  • 基本语法

    SELECT column1, column2, ...
    FROM table_name
    WHERE condition;
  • 示例
    employees 表中选择 salary 大于 50000 的记录:

    SELECT * FROM employees
    WHERE salary > 50000;

    employees 表中选择 deptHR 的记录:

    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(name) FROM employees;
    • UPPER():将字符串转换为大写

      SELECT UPPER(name) FROM employees;
    • LOWER():将字符串转换为小写

      SELECT LOWER(name) FROM 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(10, 2)
);

查询操作:

  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 id, sqrt(x^2 + y^2)
from points;

详细解释

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

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

    • 指定数据来自 points 表。

本文由mdnice多平台发布


逼格高的汤圆
10 声望2 粉丝