本瓜最近要做 数据库的查询 相关工作,其中涉及到一些 SQL 操作。
由于自己的数据库知识还停留在大学时期,对仅存的 select 、 from 、 where 这几个关键字的印象,稍微复杂一点的操作就又要一直检索查。。。
于是,想着自己还是稍作梳理,把一些常见的查询数据库操作、和一些复杂一点的操作记录~
在前后端分离的大背景下,前端可能只熟悉各类 UI 库,数据都来源于后端处理好的接口,几乎很少接触数据库了。。
但实际上,数据库操作会训练数据库思维,数据库思维应该是每个编程开发人员都应该具备的,无论前端后端,好比:数学家对数字应该敏感,程序员应该对数据敏感。
如果说互联网基石是数据,那互联网未来是数据处理!
现在生成数据的成本太低,分析数据、提取有效数据的成本太高
select 、 from 、 where 这几个不说了。。。说些别的~
DISTINCT 也要认识
DISTINCT 关键字用于去除查询结果中的重复行。例如,在以下查询中:
SELECT column1, column2, column3 FROM table_name;
如果存在多行完全相同的数据,则这些行会在查询结果中都显示。
如果加上 DISTINCT 关键字,那么查询语句将变为:
SELECT DISTINCT column1, column2, column3 FROM table_name;
在这种情况下,查询结果中仅包含一行完全相同的数据。
请注意,使用 DISTINCT 关键字会影响查询性能,因此在使用时需要适当地考虑平衡查询结果的准确性和查询性能。
COUNT + DISTINCT
使用 COUNT 和 DISTINCT 操作符,可以统计数据表中某个字段的不同值的数量。例如,可以使用以下查询来统计 customers 表中 name 字段的不同值的数量:
SELECT COUNT(DISTINCT name) FROM customers;
JOIN 更重要
JOIN 关键字是 SQL 中用于连接多个表的 重要 操作。它允许你把两个或多个表中的数据组合在一起,以便查询所需的数据。
这种连接方式通常是通过两个表中共同的字段来完成的,也就是说,在两个表中都具有相同值的列。这个字段被称为关联字段。
🌰举个例子
例如,如果你有两个表:
一个表存储 客户信息,另一个表存储 订单信息,并且客户信息表和订单信息表都包含客户 ID 字段,那么你可以使用 JOIN 操作将这两个表连接在一起,以便查询每个客户的所有订单。
customers
表:
customer_id | name | address |
1 | Alice | 123 Main St |
2 | Bob | 456 Market St |
3 | Eve | 789 Elm St |
orders
表:
order_id | customer_id | order_date |
1 | 1 | 2020-01-01 |
2 | 2 | 2020-02-01 |
3 | 1 | 2020-03-01 |
然后,我们可以使用 JOIN
操作将这两个表连接在一起:
SELECT customers.name, orders.order_date FROM customers JOIN orders ON customers.customer_id = orders.customer_id;
这个查询的结果如下:
name | order_date |
Alice | 2020-01-01 |
Alice | 2020-03-01 |
Bob | 2020-02-01 |
从上面的结果可以看到,这张合成表包含了客户的名称和对应的订单日期。
AND、OR 和 LIKE 筛选
AND、OR 和 LIKE,用于筛选特定的记录~
1、可以使用 AND 运算符来查找满足两个条件的记录,
延续之前的例子:例如查找订单日期在 2020 年 1 月 1 日之后,且客户名称为“张三”的记录:
SELECT customers.name, orders.order_date FROM customers JOIN orders ON customers.customer_id = orders.customer_id WHERE customers.name = '张三' AND orders.order_date > '2020-01-01';
2、使用 OR 运算符来查找满足任意一个条件的记录,
例如查找订单日期在 2020 年 1 月 1 日之后,或客户名称为“张三”的记录:
SELECT customers.name, orders.order_date FROM customers JOIN orders ON customers.customer_id = orders.customer_id WHERE customers.name = '张三' OR orders.order_date > '2020-01-01';
3、以及使用 LIKE 运算符来模糊查找满足指定条件的记录。
例如查找客户名称以“张”开头的记录:
SELECT customers.name, orders.order_date FROM customers JOIN orders ON customers.customer_id = orders.customer_id WHERE customers.name LIKE '张%';
因为查询的需求有时是:查询之后要创建一件新表来存,所以也有创建新表的需求等等;
CREATE AS 创建
使用 CREATE AS
操作,可以从现有的数据表中创建新的数据表,例如:
CREATE TABLE new_orders AS SELECT * FROM orders;
上面的操作会创建一个名为 new_orders
的新数据表,其中包含与 orders
表中所有字段相同的内容。
INSERT 插入
INSERT
操作用于在数据表中插入新的记录,例如,可以使用以下 INSERT
操作来向 customers
表中插入一条新记录:
INSERT INTO customers (name, address) VALUES ('王五', '北京市朝阳区');
UPDATE SET 修改字段值
SET 操作用于更改数据表中的某个字段的值
UPDATE customers SET name = '李四' WHERE customer_id = 2;
DROP 删除字段
DROP 操作则用于删除数据表中的某个字段
ALTER TABLE customers DROP COLUMN name;
暂且就这么多吧,足够全面、足够消化消化了,后面有空再补充~