欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

MySQL从入门到跑路_02 (实例实操)

程序员文章站 2024-03-21 18:19:40
...

MySQL 学习笔记(2)

MySQL从入门到跑路_02 (实例实操)

这是第一篇博客里面建立的一个测试表

第二篇主要是学习多表连接、内连接、外连接等。

  • 首先,新建一个学生成绩表

    • create table student_grade(
      	no int NOT NULL, #序号
        name varchar(32) NOT NULL, #学生姓名
        c_chinese int NOT NULL, #语文成绩
        c_math int NOT NULL,  #数学成绩
        c_english int NOT NULL,  #英语成绩
        c_physics int NOt NULL  #物理成绩
      );
      
    • #插入数据
      insert into student_grade
      (no,name,c_chinese,c_math,c_english,c_physics)
      values
      (1,"张一一",80,96,78,97),
      (2,"李二二",87,92,98,70),
      (3,"王三三",89,86,88,87),
      (4,"周思思",90,96,98,97),
      (5,"毛五五",90,96,88,97),
      (6,"陈六",88,76,98,87)
      
      
    • MySQL从入门到跑路_02 (实例实操)

  • 连接查询

    • 比如,我要查看班上所有女生的成绩

      因为在刚刚创建的这个表中,没有性别的字段,所以如果要查看性别的话,得连接student_info这张表来查看。

    • select sg.name,si.sex,sg.c_chinese,sg.c_math,sg.c_english,sg.c_physics from student_grade sg join student_info si on (sg.name=si.name) and si.sex="女";
      
    • MySQL从入门到跑路_02 (实例实操)

    • 通过[表1] join [表2] on [条件] 就可以实现连接查询

  • 多表连接

    • 当然也可以多表连接

      • select
        	...
        from
        	a
        join
        	b
        on
        	a和b的连接条件
        join
        	c
        on
        	a和c的连接条件
        join
        	d
        on
        	a和d的连接条件
        
        --内连接和外连接可以混合
        
  • 连接查询也分好几种

    • 自连接 -> 将同一张表看成两张表来操作
    • 外连接
      • 外连接就是有主表和次表。主表的数据是不会被筛选掉的。
      • [表1] right join [表2] on [条件] -> 这个也叫右(外)连接。右边的表2为主表,表1为次表。
      • [表1] left join [表2] on [条件] -> 这个也叫左(外)连接。左边的表1为主表,表2为次表。
  • 子查询

    • 在sql语句中嵌套select语句。被嵌套的select语句称为子查询。(套娃查询)

    • 语法

      • select 
        	..(select).
        from 
        	..(select).
        where
        	..(select).
        
    • 比如,找到比最低物理成绩高的学生姓名列表

      • -- 可以一步一步来
        -- 第一步:先找出物理成绩最低的同学
        select min(c_physics) from student_grade;
        --找到最低的物理成绩是70分。
        
        -- 第二步:找出大于70的
        select name,c_physics from student_grade where c_physics>70;
        
        -- 第三步:开始子查询(套娃)
        select name,c_physics from student_grade where c_physics>(select min(c_physics) from student_grade);
        
      • MySQL从入门到跑路_02 (实例实操)

      • MySQL从入门到跑路_02 (实例实操)

      • MySQL从入门到跑路_02 (实例实操)