CRUD 是指数据库操作的四个基本动作:创建(Create)、读取(Read)、更新(Update)和删除(Delete)。这四个操作对应了数据库中的数据管理和维护的基本需求。下面是 MySQL 中实现 CRUD 操作的语法及其含义:
创建(Create) - 插入数据到表中:
INSERT INTO table_name (column1, column2, column3, ...)
VALUES (value1, value2, value3, ...);
table_name
是要插入数据的表名。column1, column2, column3, ...
是要插入数据的列名。value1, value2, value3, ...
是要插入的具体数值。读取(Read) - 查询数据:
查询所有列的所有行:
SELECT * FROM table_name;
查询特定列的所有行:
SELECT column1, column2, ... FROM table_name;
带条件查询:
-- 选择所有列或特定字段(用 <column> 替换)
SELECT *|<column>
-- 从一个或多个表中选择数据(用 <column1>,<column2> 替换)
FROM <table_name1>, <table_name2>, ...
-- 可选:指定筛选条件
WHERE <表达式>
-- 可选:对结果进行分组(用 <group by definition> 替换)
GROUP BY <group by definition>
-- 可选:对分组结果进行过滤条件判断(用 <expression> 替换)
HAVING <expression> [{<operator> <expression>} ...]
-- 可选:对结果进行排序(用 <order by definition> 替换)
ORDER BY <order by definition>
-- 可选:限制结果集的行数,可包括偏移量(用 <offset> 和 <row count> 替换)
LIMIT [<offset>] <row count>;
更新(Update) - 更新表中的数据:
UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE condition;
condition
是指定要更新的行的条件。删除(Delete) - 从表中删除数据:
DELETE FROM table_name WHERE condition;
LOWER(): 转小写 - 将字符串中的字母全部转换为小写。
SELECT LOWER('SQL Course'); -- 输出 'sql course'
UPPER(): 转大写 - 将字符串中的字母全部转换为大写。
SELECT UPPER('SQL Course'); -- 输出 'SQL COURSE'
CONCAT(): 拼接 - 将多个字符串连接在一起。
SELECT CONCAT('Hello','World'); -- 输出 'HelloWorld'
SUBSTRING(): 截取 - 从字符串中获取指定位置和长度的子串。
SELECT SUBSTRING('HelloWorld', 1, 5); -- 输出 'Hello'
LENGTH(): 长度 - 返回字符串的长度。
SELECT LENGTH('HelloWorld'); -- 输出 10
INSTR(): 字符出现索引值 - 返回指定字符在字符串中第一次出现的位置。
SELECT INSTR('HelloWorld','W'); -- 输出 6
TRIM(): 字符截取后半段 - 从字符串开头去掉指定字符。
SELECT TRIM('H' FROM 'HelloWorld'); -- 输出 'elloWorld'
REPLACE(): 字符替换 - 将字符串中的指定字符替换为另一个字符。
SELECT REPLACE('abcd','b','m'); -- 输出 'amcd'
ROUND(): 四舍五入 - 将数字四舍五入到指定的小数位数。
SELECT ROUND(88.886, 2); -- 输出 88.89
TRUNCATE(): 截断 - 截断数字到指定的小数位数。
SELECT TRUNCATE(88.886, 2); -- 输出 88.88
MOD(): 求余 - 返回两个数相除的余数。
SELECT MOD(1600, 300); -- 输出 100
NOW(): 获取当前日期和时间。
SELECT NOW(); -- 返回当前日期和时间
STR_TO_DATE('): 将日期格式的字符转换成指定格式的日期。
SELECT STR_TO_DATE('9-18-1997', '%m-%d-%Y'); -- 输出 '1997-09-18'
DATE_FORMAT(‘2018/6/6’,‘%Y年%m月%d日’): 将日期转换成字符,指定格式。
SELECT DATE_FORMAT('2020/1/1', '%Y年%m月%d日'); -- 输出 '2020年01月01日'
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;
IF(condition, true_value, false_value): 条件判断函数。
SELECT
IF(score >= 60, 'Pass', 'Fail') AS result
FROM student_scores;
SUM(column): 求和 - 计算指定列的总和。
SELECT SUM(sales) FROM sales_data;
AVG(column): 平均值 - 计算指定列的平均值。
SELECT AVG(price) FROM product_prices;
MAX(column): 最大值 - 获取指定列的最大值。
SELECT MAX(temperature) FROM weather_data;
MIN(column): 最小值 - 获取指定列的最小值。
SELECT MIN(quantity) FROM inventory;
COUNT(column): 计算个数 - 统计指定列的非空值数量。
SELECT COUNT(customer_id) FROM customers;
UNION
和 UNION ALL
是 SQL 中用于合并两个或多个查询结果的操作符。它们主要用于合并具有相似结构的多个查询的结果集。下
去重: 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';
上述示例将返回所有来自 customers
和 suppliers
表中位于美国的城市,并确保每个城市只出现一次。
不去重: 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 表中位于美国的城市,包括重复的行。
UNION
和 UNION ALL
要求两个查询的结果集具有相同的列数和相似的数据类型。
UNION
的性能可能会稍逊于 UNION ALL
,因为它需要额外的步骤去重。
如果你确定结果集不包含重复行,或者你希望保留重复行,可以使用 UNION ALL
来获得更好的性能。