1 create database test2; 2 use test2; 3 CREATE TABLE students ( 4 student_id INT, 5 student_name VARCHAR(50) 6 ); 7 8 CREATE TABLE courses ( 9 course_id INT, 10 student_id INT, 11 course_name VARCHAR(50) 12 ); 13 14 INSERT INTO students (student_id, student_name) VALUES 15 (1, 'Alice'), 16 (2, 'Bob'), 17 (3, 'Charlie'); 18 19 INSERT INTO courses (course_id, student_id, course_name) VALUES 20 (1, 1, 'Math'), 21 (2, 1, 'Science'), 22 (3, 2, 'English'); 23 CREATE TABLE employees ( 24 employee_id INT, 25 employee_name VARCHAR(50), 26 manager_id INT 27 ); 28 INSERT INTO employees (employee_id, employee_name, manager_id) VALUES 29 (1, 'Alice', NULL), 30 (2, 'Bob', 1), 31 (3, 'Charlie', 1), 32 (4, 'David', 2); 33 # where是指分组之前,having是指分组之后进行过滤 34 # 连表操作 35 # 自连接:自连接是指同一张表通过连接条件连接自己 36 -- 自连接查询每个员工及其经理的名字 37 # 一个老板id可能管理多个员工id 38 select e.employee_name,e2.employee_name from employees e left join employees e2 on e.employee_id = e2.manager_id; 39 # 内连接:内连接返回两个表中满足连接条件(共同的)的所有行。只有在两表中有匹配记录的情况下,结果集才包含这些记录。 40 # 查询每个学生及其课程(如果有的话) 41 select s.student_name as '学生姓名',c.course_name as '课程名字' from students s,courses c where s.student_id=c.student_id; 42 select s.student_name as '学生姓名',c.course_name as '课程名字' from students s inner join courses c where s.student_id=c.student_id; 43 44 # 左链接:左连接返回左表中的所有行,以及右表中满足连接条件的行。如果右表中没有匹配的行,则结果为 NULL。 45 # 查询每个学生及其课程(如果有的话) 46 select s.student_name as '学生姓名',c.course_name as '课程名字' from students s left join courses c on s.student_id = c.student_id 47 #看谁为主表 from 主表 48 # 左连接就是students表与courses表匹配的部分基于主表部分查询筛选,如果右表不满足条就为null 49 # 右链接:右连接返回右表中的所有行,以及左表中满足连接条件的行。如果左表中没有匹配的行,则结果为 NULL。 50 # 查询每个学生及其课程(如果有的话) 51 # 同理 52 select s.student_name as '学生姓名',c.course_name as '课程名字' from students s right join courses c on s.student_id = c.student_id 53 54 # 全连接:全连接返回左右两表中所有行。如果某一方没有匹配的行,则结果为 NULL 55 select s.student_name as '学生姓名',c.course_name as '课程名字' from students s left join courses c on s.student_id = c.student_id 56 UNION select s.student_name as '学生姓名',c.course_name as '课程名字' from students s right join courses c on s.student_id = c.student_id;
标签:name,courses,students,连表,course,student,mysql,操作,id From: https://www.cnblogs.com/Gaze/p/18221319