MySQL基础知识(三)

发布时间:2024年01月19日

内连接

MySQL中的内连接(Inner Join)是一种用于合并两个或多个表中符合特定条件的行的方法。内连接返回仅在连接条件满足的情况下存在于两个表中的行。内连接通常用于检索具有相关信息的数据,以便将它们合并在一起。
简单来说就是通过内连接检索表之间的关系,然后进行相关的操作

内连接的语法:

使用INNER JOIN关键字:

SELECT columns
FROM table1
INNER JOIN table2 ON table1.column = table2.column;

这是最常见的内连接语法,使用INNER JOIN关键字,后跟连接的表以及连接条件。

使用,逗号(隐式内连接):

SELECT columns
FROM table1, table2
WHERE table1.column = table2.column;

?在FROM子句中列出多个表,然后在WHERE子句中指定连接条件。这是一种隐式内连接的写法。

使用USING子句:

SELECT columns
FROM table1
INNER JOIN table2 USING (common_column);

使用USING子句可以简化连接条件,前提是两个表中具有相同名称的列,这样的列称为共享列。

使用ON子句:

SELECT columns
FROM table1
JOIN table2 ON table1.column = table2.column;

?ON子句用于指定连接条件,可以在JOIN关键字之后使用。

下面我们看一个例子来快速入门内连接的使用

假设有两个表,一个是“users”表,另一个是“orders”表。这两个表之间有一个共同的列“user_id”:

CREATE TABLE users (
    user_id INT PRIMARY KEY,
    username VARCHAR(50)
);

CREATE TABLE orders (
    order_id INT PRIMARY KEY,
    user_id INT,
    product_name VARCHAR(50),
    amount DECIMAL(10, 2)
);

INSERT INTO users (user_id, username) VALUES
(1, 'Alice'),
(2, 'Bob'),
(3, 'Charlie');

INSERT INTO orders (order_id, user_id, product_name, amount) VALUES
(101, 1, 'Laptop', 1200.00),
(102, 2, 'Smartphone', 800.00),
(103, 1, 'Tablet', 300.00),
(104, 3, 'Headphones', 50.00);

现在,我们可以使用内连接来获取用户和他们的订单信息:

SELECT users.user_id, users.username, orders.order_id, orders.product_name, orders.amount
FROM users
INNER JOIN orders ON users.user_id = orders.user_id;

select输出所有的表中字段速度会大于*号这种写法的速度

外连接

左外连接

左外连接指的就是说使用关键字left进行查询

基本写法:

SELECT 字段列表 FROM 表1 LEFT [outer] JOIN 表二 ON 连接条件

这个字段列表的位置,是按照你需要的需求进行填写,该部分内容可以直接使用别名.字段名的形式书写

右连接

使用写法同左连接一样但是关键词是不同的,有链接使用的关键词是right,基本语法

SELECT 字段列表 FROM 表1 LEFT [outer] JOIN 表二 ON 连接条件

直接使用该内容,效果同左连接一样,只是区别写的顺序。

子查询

使用嵌套select语句 称为嵌套查询又称子查询

形式 :select * from t1 where column1 = (select column1 from t2.....)

子查询外部的语句可以是insert/update/select其中的任何一个

分类

在?WHERE?子句中使用子查询作为条件:

SELECT column1, column2, ...
FROM table_name
WHERE column_name IN (SELECT column_name FROM another_table);

在?FROM?子句中使用子查询作为数据源:

SELECT *
FROM (SELECT column1, column2, ... FROM table_name) AS derived_table;

在?SELECT?子句中使用子查询作为列:

SELECT column1, column2, (SELECT column3 FROM another_table) AS column_alias
FROM table_name;

需要注意的是,在使用子查询时,你需要确保子查询的结果与外部查询相兼容,并且不会引起性能问题。子查询的结果可以是单行单列,也可以是多行多列,取决于你的需求。

文章来源:https://blog.csdn.net/screamn/article/details/135333726
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。