首页 > 数据库 >关于mysql连表操作

关于mysql连表操作

时间:2024-05-29 23:11:29浏览次数:21  
标签:name courses students 连表 course student mysql 操作 id

 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

相关文章

  • 成为MySQL DBA后,再看ORACLE数据库(三、参数管理)
    一、参数文件在ORACLE11g及以后的版本中,ORACLE使用spfile作为数据库的参数文件,这是一个二进制文件,不能通过手工修改。SPFILE的引入使得对于参数的修改都可以在命令行完成,不需要手工修改,这也是为了减少了人为错误的发生。而在MySQL中,需要去手工维护my.cnf参数文件,主要原因是在MyS......
  • 代码随想录算法训练营第第22天 | 235. 二叉搜索树的最近公共祖先 、701.二叉搜索树中
    二叉搜索树的最近公共祖先相对于二叉树的最近公共祖先本题就简单一些了,因为可以利用二叉搜索树的特性。题目链接/文章讲解:https://programmercarl.com/0235.二叉搜索树的最近公共祖先.html视频讲解:https://www.bilibili.com/video/BV1Zt4y1F7ww/***@param{TreeNode}......
  • 记录kali搭建Apache+MySQL+PHP
    一.打开相应的服务kali中已经预先安装好了Apache2,MySQL和PHP,所以我们在使用的时候只需要打开相应的服务即可。1.打开Apache2服务kali预先安装的Apache在etc文件里,我们ls显示文件后发现了apache2文件夹,进入到该文件夹后启动服务,命令如下:/etc/init.d/apache2start检测服务......
  • 04-Excel基础操作-学习笔记
    制作下拉列表应用场景:限制B列数据,只能输入现金、转账、支票具体操作:选中B列——数据选项卡——数据工具——数据验证——弹出界面如下图所示——点击设置——在允许栏下拉选择序列——在来源栏中填入依次“填入现金、转账、支票”,并用英文状态的逗号隔开——点击确定操作......
  • vs上运行mysql
    前置注意vs中要引用mysql的类库。MySqlCommand  MySqlCommand类代表了要在MySQL数据库上执行的SQL语句或存储过程。它提供了许多方法来执行不同类型的SQL命令,比如查询(SELECT)、插入(INSERT)、更新(UPDATE)和删除(DELETE)。你可以创建一个MySqlCommand对象,并将要执行的SQL语句传递......
  • 如何配置机器人ROS操作系统之间的有线和无线的局域网通信(基于ROS的主从通讯)
    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言1.主从配置前的准备工作(1)查看主从机的hostname(2)查看各自主机和从机的IP(3)本教程的hostname和ip如下2.在主机中的修改(1)修改主机的/.bashr文件(2)修改主机的hosts文件3.在从机......
  • Django 里如何使用 sqlite (操作步骤)
    下面是在VSCode里进行操作1.安装SQLite的Extension2.在models.py里做修改文件修改如下fromdjango.dbimportmodels#Createyourmodelshere.#类似这样创建一个classclassUserInfo(models.Model):username=models.CharField(verbose_name="......
  • 数据库中表的基本操作、常用的函数和CRUD语句
    一、创建表和修改表(1)、创建表(2)、修改表二、数据库的CRUD语句(1)、insert语句--添加数据1.插入的数据应与字段的数据类型相同。mysql中会自动将'100'数字字符串转化为int类型2.数据的长度应在列的规定范围内3.在values中列出的数据位置必须与被加入的列的排列位置相对应......
  • 升鲜宝供应链管理系统重构版发布(技术点:Java8、mysql8.0 uniapp、vue、android、web 框
    升鲜宝供应链管理系统重构版发布(技术点:Java8、mysql8.0uniapp、vue、android、web框架:Vue3+SpringBoot3),界面功能(三) 主要功能要点:     权限管理(组织机构、用户管理、角色管理、岗位管理)     系统设置(菜单管理、参数管理、数据字典、定时任务、文件管......
  • async/await处理异步操作
    在JavaScript中,async/await是用于处理异步操作的一种语法糖,它允许我们以同步的方式编写异步代码,从而使代码更加清晰和易于理解。当使用await关键字等待一个Promise对象时,有时候我们需要捕获可能出现的异常并进行处理。以下是关于await异常捕获的介绍:asyncfunctionfetchData()......