表结构和数据
1. 顾客表 customers
CREATE TABLE customers (
customer_id INT PRIMARY KEY,
customer_name VARCHAR(50)
);
INSERT INTO customers (customer_id, customer_name) VALUES
(1, 'Alice'),
(2, 'Bob'),
(3, 'Charlie'),
(4, 'Diana');
2. 订单表 orders
CREATE TABLE orders (
order_id INT PRIMARY KEY,
customer_id INT,
order_date DATE,
FOREIGN KEY (customer_id) REFERENCES customers(customer_id)
);
INSERT INTO orders (order_id, customer_id, order_date) VALUES
(1001, 1, '2024-09-01'),
(1002, 2, '2024-09-05'),
(1003, 1, '2024-09-06'),
(1004, 3, '2024-09-10');
然后
这一句代码就是可以查询
又开始记录生活了,这个东西好累,老蒋感觉他上课好累,我们都不回应他,他的心好累。
select column_name(s)
from table 1
INNER JOIN table 2
ON
table 1.column name=table 2.column nam
注释:INNER JOIN与JOIN是相同;
左连接(Left Join),也被称为左外连接,是关系型数据库中的一种连接操作。其核心特点在于以左边的表(称为左表)为基准,将左表中的所有记录与右表中满足连接条件的记录进行匹配。如果右表中没有与左表匹配的记录,则这些右表的列将以NULL值填充,确保左表中的所有记录都被包含在结果集中。
左连接的具体操作过程可以描述为:
基准表确定:首先确定左表,即连接操作的基础表。
匹配条件:根据连接条件(通常是在ON子句中指定),在右表(即被连接的表)中查找与左表相匹配的记录。
结果集生成:
对于左表中的每一行,如果在右表中找到了匹配的行,则将这些行的数据合并后加入到结果集中。
如果在右表中没有找到与左表某行相匹配的记录,则左表的这行数据仍然会被加入到结果集中,但对应的右表列将填充为NULL值。
左连接的应用场景非常广泛,尤其是在需要保留左表所有记录,并尝试将其与右表中的相关数据进行关联时。例如,在查询订单表中的所有订单,并希望关联到客户表中的客户信息时,如果某些订单没有对应的客户信息(即右表中没有匹配的行),使用左连接可以确保这些订单仍然被包含在结果集中,而对应的客户信息列则为NULL。
总结来说,左连接是数据库查询中一种非常有用的工具,它允许用户以某个表为基础,关联并查询与之相关的其他表中的数据,同时保留基础表中的所有记录,即使这些记录在关联表中没有对应的匹配项。
虽然说我是一个很拖的人,但是好吧,没什么但是的,这个东西今天才发现,感觉还挺好用的我只能说,还行,不过这个笔记感觉就像是存个档,希望老蒋不会发现我的账号。要不然不就毁了。
select * from Table A inner join Table B
on Table A.id=Table B.id0
上面的语句可以查询两张表中间的相同的部分,应该是叫内链接
反正这是三个链接的代码,虽然我也没有完全好好听课,但是我。。。
算了,没啥好说的,反正是写给自己看的。
在把右链接也放进来看看,
在SQL中,“右链接”(Right Join)是一种特殊的表连接类型,它允许你从两个或多个表中获取数据,但返回的结果集将包括右表(JOIN语句中第二个指定的表)的所有记录,无论它们在左表(JOIN语句中第一个指定的表)中是否有匹配项。如果左表中的行与右表中的行没有匹配,那么结果集中右表的列将包含数据,而左表的列将包含NULL值。
SELECT columns
FROM table1
RIGHT JOIN table2
ON table1.common_field = table2.common_field;
示例
假设我们有两个表:employees(员工)和departments(部门),我们想要获取所有部门的信息以及它们对应的员工信息(如果存在的话)。由于可能存在没有员工的部门,使用右链接就能确保所有部门都被包含在结果集中。
SELECT employees.name AS employee_name, departments.name AS department_name
FROM departments
RIGHT JOIN employees
ON departments.id = employees.department_id;
这个查询将返回所有部门的名称,以及与之关联的员工名称(如果存在的话)。如果某个部门没有员工,该部门的名称仍然会出现在结果集中,但员工名称将显示为NULL。
注意
与右链接相反的是左链接(Left Join),它返回左表的所有记录,以及右表中匹配的记录(如果不存在匹配项,则右表的列将包含NULL)。
在某些情况下,你可能还会遇到全外连接(Full Outer Join),它返回两个表中所有的记录,无论是否有匹配项。然而,并非所有的数据库系统都支持全外连接。
SQL中的连接类型(如内连接、左连接、右连接、全外连接等)是理解和操作关系型数据库的关键概念之一。
FROM sys_user - 查询开始于sys_user表。这是主要的表,其他表是通过左连接(LEFT JOIN)附加到这张表上的。
LEFT JOIN sys_dept ON sys_user.dept_id = sys_dept.dept_id - 这一步将sys_dept表与sys_user表进行左连接。连接条件是sys_user表中的dept_id字段与sys_dept表中的dept_id字段相匹配。这意味着即使在sys_dept中没有找到匹配项,sys_user表中的记录也会被包含在结果集中,并且sys_dept表中未匹配部分的字段值将为NULL。
LEFT JOIN sys_user_post ON sys_user.user_id = sys_user_post.user_id - 接下来,sys_user_post表被左连接到sys_user表上。这里的连接条件是sys_user表中的user_id字段与sys_user_post表中的user_id字段相匹配。同样地,即使在sys_user_post中找不到匹配项,sys_user表中的记录依然会被包含在结果集中,而sys_user_post表中未匹配部分的字段值将为NULL。
LEFT JOIN sys_post ON sys_user_post.post_id = sys_post.post_id - 最后,sys_post表通过sys_user_post表与sys_user表连接。这里,sys_user_post表中的post_id字段与sys_post表中的post_id字段相匹配。即使在sys_post中找不到匹配项,前面已经连接的记录(即sys_user和sys_user_post中的记录)依然会出现在结果集中,sys_post表中未匹配部分的字段值将为NULL。
SELECT sys_user.nick_name, sys_dept.dept_name, sys_post.post_name - 最终选择从这些连接的表中提取的字段:sys_user表中的nick_name,sys_dept表中的dept_name,以及sys_post表中的post_name。
JOIN 用于连接 customers 和 orders,以获取每个客户的订单信息。
子查询用于计算每个订单的商品总金额,以及通过 GROUP_CONCAT 函数将每个订单中的商品名称拼接在一起。
通过 SUM 计算每个订单的总金额(数量乘以单价)。
select sys_user.nick_name,sys_dept.dept_name,sys_post.post_name from sys_user
left join sys_dept on sys_user.dept_id=sys_dept.dept_id
left join sys_user_post on sys_user.user_id=sys_user_post.user_id
left join sys_post on sys_user_post.post_id=sys_post.post_id;
在SQL(Structured Query Language,结构化查询语言)中,AS 关键字用于为列或表指定别名(alias)。别名是在查询结果中显示的名称,它可以是列名或表名的简写或描述性更强的名称。使用别名可以使查询结果更加清晰易懂,尤其是在处理复杂的查询或连接多个表时。
Separator(分隔符)在不同的数据库和编程环境中具有不同的用途和表现形式。以下是关于Separator在不同场景下的详细解释:
GROUP_CONCAT 是 MySQL 中的一个聚合函数,它用于将来自多个记录行的列值连接成一个字符串结果。这个函数在需要对查询结果进行分组并将分组内的某些列值合并为一个字符串时非常有用。GROUP_CONCAT 可以接受一个或多个列作为输入,并通过一个可选的分隔符(默认为逗号)来连接这些值。
SUM 是 SQL(Structured Query Language,结构化查询语言)中的一个聚合函数,用于计算某一列中所有数值的总和。这个函数通常与 GROUP BY 子句一起使用,以对分组后的数据进行求和操作,但也可以单独使用来对整个表中的某一列进行求和。
在SQL中,JOIN 语句用于根据两个或多个表之间的共同字段将它们连接起来,从而能够查询、更新或删除来自不同表的数据。当你提到 JOIN products 时,你可能是指将 products 表与其他表(比如 orders、customers 或任何其他包含与 products 表相关联数据的表)连接起来,以便进行更复杂的查询。
这是认真上课的人的鼻孔,希望他可以教教我。
这是我的好兄弟龙泽,太在学习和生活上帮助了我很多,大家可以去关注一下他@小公主泽酱太写的也很好