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

MySQL 学习笔记(2)

MySQL从入门到跑路_02 (实例实操)_第1张图片

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

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

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

    • 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 (实例实操)_第2张图片

  • 连接查询

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

      因为在刚刚创建的这个表中,没有性别的字段,所以如果要查看性别的话,得连接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 (实例实操)_第3张图片

    • 通过[表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 (实例实操)_第4张图片

      • MySQL从入门到跑路_02 (实例实操)_第5张图片

      • MySQL从入门到跑路_02 (实例实操)_第6张图片

你可能感兴趣的:(数据库,mysql,数据库,sql)