【数据库】CRUD&&常用函数&&UNION 和 UNION ALL

文章目录

  • 一、CRUD
  • 二、函数
    • 2.1 字符函数 (Character Functions):
    • 2.2 数字函数 (Numeric Functions):
    • 2.3 日期函数 (Date Functions):
    • 2.4 流程控制函数:
    • 2.5 聚合函数:
  • 三、UNION 和 UNION ALL
    • 3.1 UNION:
    • 3.2 UNION ALL
    • 3.3 注意事项

一、CRUD

CRUD 是指数据库操作的四个基本动作:创建(Create)、读取(Read)、更新(Update)和删除(Delete)。这四个操作对应了数据库中的数据管理和维护的基本需求。下面是 MySQL 中实现 CRUD 操作的语法及其含义:

  1. 创建(Create) - 插入数据到表中:

    INSERT INTO table_name (column1, column2, column3, ...)
    VALUES (value1, value2, value3, ...);
    
    • table_name 是要插入数据的表名。
    • column1, column2, column3, ... 是要插入数据的列名。
    • value1, value2, value3, ... 是要插入的具体数值。
  2. 读取(Read) - 查询数据:

    • 查询所有列的所有行:

      SELECT * FROM table_name;
      
    • 查询特定列的所有行:

      SELECT column1, column2, ... FROM table_name;
      
    • 带条件查询:

-- 选择所有列或特定字段(用  替换)
SELECT *|<column>
-- 从一个或多个表中选择数据(用  替换)
FROM <table_name1>, <table_name2>, ...
-- 可选:指定筛选条件
WHERE <表达式>
-- 可选:对结果进行分组(用  替换)
GROUP BY <group by definition>
-- 可选:对分组结果进行过滤条件判断(用  替换)
HAVING <expression> [{<operator> <expression>} ...]
-- 可选:对结果进行排序(用  替换)
ORDER BY <order by definition>
-- 可选:限制结果集的行数,可包括偏移量(用  替换)
LIMIT [<offset>] <row count>;
  1. 更新(Update) - 更新表中的数据:

    UPDATE table_name
    SET column1 = value1, column2 = value2, ...
    WHERE condition;
    
    • 更新指定列的值,可以同时更新多个列。
    • condition 是指定要更新的行的条件。
  2. 删除(Delete) - 从表中删除数据:

    DELETE FROM table_name WHERE condition;
    
    • 删除满足条件的行,如果不指定条件,则会删除表中所有数据。

二、函数

2.1 字符函数 (Character Functions):

  1. LOWER(): 转小写 - 将字符串中的字母全部转换为小写。

    SELECT LOWER('SQL Course'); -- 输出 'sql course'
    
  2. UPPER(): 转大写 - 将字符串中的字母全部转换为大写。

    SELECT UPPER('SQL Course'); -- 输出 'SQL COURSE'
    
  3. CONCAT(): 拼接 - 将多个字符串连接在一起。

    SELECT CONCAT('Hello','World'); -- 输出 'HelloWorld'
    
  4. SUBSTRING(): 截取 - 从字符串中获取指定位置和长度的子串。

    SELECT SUBSTRING('HelloWorld', 1, 5); -- 输出 'Hello'
    
  5. LENGTH(): 长度 - 返回字符串的长度。

    SELECT LENGTH('HelloWorld'); -- 输出 10
    
  6. INSTR(): 字符出现索引值 - 返回指定字符在字符串中第一次出现的位置。

    SELECT INSTR('HelloWorld','W'); -- 输出 6
    
  7. TRIM(): 字符截取后半段 - 从字符串开头去掉指定字符。

    SELECT TRIM('H' FROM 'HelloWorld'); -- 输出 'elloWorld'
    
  8. REPLACE(): 字符替换 - 将字符串中的指定字符替换为另一个字符。

    SELECT REPLACE('abcd','b','m'); -- 输出 'amcd'
    

2.2 数字函数 (Numeric Functions):

  1. ROUND(): 四舍五入 - 将数字四舍五入到指定的小数位数。

    SELECT ROUND(88.886, 2); -- 输出 88.89
    
  2. TRUNCATE(): 截断 - 截断数字到指定的小数位数。

    SELECT TRUNCATE(88.886, 2); -- 输出 88.88
    
  3. MOD(): 求余 - 返回两个数相除的余数。

    SELECT MOD(1600, 300); -- 输出 100
    

2.3 日期函数 (Date Functions):

  1. NOW(): 获取当前日期和时间。

    SELECT NOW(); -- 返回当前日期和时间
    
  2. STR_TO_DATE( ): 将日期格式的字符转换成指定格式的日期。

    SELECT STR_TO_DATE('9-18-1997', '%m-%d-%Y'); -- 输出 '1997-09-18'
    
  3. DATE_FORMAT(): 将日期转换成字符,指定格式。

    SELECT DATE_FORMAT('2020/1/1', '%Y年%m月%d日'); -- 输出 '2020年01月01日'
    

2.4 流程控制函数:

  1. CASE WHEN … THEN … ELSE … END: 类似于编程语言中的 switch 语句。

    SELECT 
        CASE 
            WHEN score >= 90 THEN 'A'
            WHEN score >= 80 THEN 'B'
            ELSE 'C'
        END AS grade
    FROM student_scores;
    
  2. IF(condition, true_value, false_value): 条件判断函数。

    SELECT 
        IF(score >= 60, 'Pass', 'Fail') AS result
    FROM student_scores;
    

2.5 聚合函数:

  1. SUM(column): 求和 - 计算指定列的总和。

    SELECT SUM(sales) FROM sales_data;
    
  2. AVG(column): 平均值 - 计算指定列的平均值。

    SELECT AVG(price) FROM product_prices;
    
  3. MAX(column): 最大值 - 获取指定列的最大值。

    SELECT MAX(temperature) FROM weather_data;
    
  4. MIN(column): 最小值 - 获取指定列的最小值。

    SELECT MIN(quantity) FROM inventory;
    
  5. COUNT(column): 计算个数 - 统计指定列的非空值数量。

    SELECT COUNT(customer_id) FROM customers;
    

三、UNION 和 UNION ALL

UNIONUNION ALL 是 SQL 中用于合并两个或多个查询结果的操作符。它们主要用于合并具有相似结构的多个查询的结果集。下

3.1 UNION:

  • 去重: UNION 操作符会合并两个查询的结果集,并且会自动去除重复的行,确保最终的结果集中不包含重复的行。

  • 语法:

    SELECT column1, column2, ...
    FROM table1
    WHERE condition
    UNION
    SELECT column1, column2, ...
    FROM table2
    WHERE condition;
    
  • 示例:

    SELECT city FROM customers
    WHERE country = 'USA'
    UNION
    SELECT city FROM suppliers
    WHERE country = 'USA';
    

    上述示例将返回所有来自 customerssuppliers 表中位于美国的城市,并确保每个城市只出现一次。

3.2 UNION ALL

  • 不去重: UNION ALL 同样合并两个查询的结果集,但不去除重复的行,即它保留所有的行,包括重复的。

  • 语法:

    SELECT column1, column2, ...
    FROM table1
    WHERE condition
    UNION ALL
    SELECT column1, column2, ...
    FROM table2
    WHERE condition;
    
  • 示例:

    SELECT city FROM customers
    WHERE country = 'USA'
    UNION ALL
    SELECT city FROM suppliers
    WHERE country = 'USA';
    

    上述示例将返回所有来自 customers 和 suppliers 表中位于美国的城市,包括重复的行。

3.3 注意事项

  • UNIONUNION ALL 要求两个查询的结果集具有相同的列数和相似的数据类型。

  • UNION 的性能可能会稍逊于 UNION ALL,因为它需要额外的步骤去重。

  • 如果你确定结果集不包含重复行,或者你希望保留重复行,可以使用 UNION ALL 来获得更好的性能。

你可能感兴趣的:(数据库)