标签:多表 04 连接 数据库 orders user join id select
数据库笔记04(多表查询)
内连接
外连接
子查询
1.内连接
格式1:显示的内连接
select a.,b. from a [inner] join b on ab的连接条件
格式2:隐式的内连接
select a.,b. from a,b where ab的连接条件
2.外连接
左外连接
select a.*,b.*from a left [outer] join b on 连接条件;outer可以省略
先展示join左边(a)表的所有数据,根据条件关联查询 join 右边的表b,符合条件的展示出来,不符合以null展示
select a.*,b.*from a right [outer] join b on 连接条件;outer可以省略
先展示join右边表b所有的数据,根据条件关联查询join左边的表b,符合条件的展示出来,不符合以null展示
例子
CREATE TABLE USER (
id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(50)
);
INSERT INTO USER VALUES(3,‘张三’);
INSERT INTO USER VALUES(4,‘李四’);
INSERT INTO USER VALUES(5,‘王五’);
INSERT INTO USER VALUES(6,‘赵六’);
CREATE TABLE orders (
id INT AUTO_INCREMENT PRIMARY KEY,
price DOUBLE,
user_id INT
);
ALTER TABLE orders ADD CONSTRAINT user_fk FOREIGN KEY (user_id) REFERENCES USER(id);
INSERT INTO orders VALUES(1,1314,3);
INSERT INTO orders VALUES(2,1314,3);
INSERT INTO orders VALUES(3,15,4);
INSERT INTO orders VALUES(4,315,5);
INSERT INTO orders VALUES(5,1014,NULL);
查询用户订单:
隐式内连接:
select user.,order. from user,order where user.id=order.user_id;
显示内连接:
select user.,order. from user join order on user.id=orders.user_id
2.查询所有用户的订单详情
左外连接: user在左
select user.,orders. from user left join orders on user.id=orders.user_id;
3.查询所有订单的用户详情
右外连接:orders 在右
select orders.,user. from user right join orders on user.id=orders.user_id;
一,查看订单详情
SELECT *FROM orders WHERE user_id=(SELECT user.`id` FROM USER WHERE user.`username`='张三')
SELECT orders.*,user.`username` FROM orders,USER WHERE user.id=orders.`user_id` AND user.username='张三';
二,查询订单价格大于300的用户信息
select*from user where id in(select user_id from orders where price>300);
三,查询价格大于300的订单信息及相关用户的信息
内连接:
select orders.*,user.* from orders,user where user.id=orders.user_id and orders.price>300 ;
自连接查询—通过表的别名,给一张表起两个别名,将他视为两张表,来进行查询
标签:多表,04,连接,数据库,orders,user,join,id,select 来源: https://blog.csdn.net/WarriorsGo/article/details/100601002
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。