15621857753

mysql数据库之联合与连接查询 using关键字

来源:齐鲁CMS 栏目:Mysql 阅读: 日期:2024-09-28

mysql数据库之联合与连接查询 using关键字

35.联合查询:将多个查询的结果合并到一起(纵向合并):字段数不变,多个查询的记录数合并

基本语法:

(Select语句)

Union[union选项]

(Select语句);

案例:获取男生身高升序,女生身高降序(order by 在联合查询中要生效,必须配合 limit)

(select * from my_student where gender = '男' order by stu_height asc limit 100)

union

(select * from my_student where gender = '女' order by stu_height desc limit 100);

36.连接查询:将多张表连到一起进行查询(会导致记录数行和字段数列发生改变)

1)交叉连接:将两张表的数据与另外一张表彼此交叉

语法:表1 cross join 表2

-- >select from my_student cross join my_int;

2)内连接:

语法:表1 [inner] join 表2 on 匹配条件;

-- >select from my_student inner join my_class; //无条件连接,笛卡尔积,无意义

-- >select from my_student inner join my_class on class_id = id; // 加上条件

-- >select from my_student inner join my_class on my_student.class_id = my_class.id; //上面的改进,更安全

3)外连接:非常常用的一种获取的数据方式:作为数据获取对应主表以及其他数据(关联)

①:左外连接:left join ;左表是主表 ; 语法:主表 left join 从表 on 连接条件;

②:右外连接:right join ; 右表是主表 ; 语法:从表 right join 主表 on 连接条件;

-- >select from my_student as s left join my_class c on s.class_id = c.id; //as后面是别名

37.using 关键字:在连接查询中用来代替对应的o关键字的,进行条件匹配。

基本语法:表1 [inner,left,right] join 表2 using(同名字段列表); //连接字段

-- 自然内连接

select * from my_student natural join my_class;

-- using关键字(下面两个语句作用相同)

select * from my_student left join my_class on my_student.class_id = my_class.class_id; //原写法

select * from my_student left join my_class using(class_id); //上述语句使用using的写法

select * from my_student left join my_class using(class_id,class_name); //多字段