zoukankan      html  css  js  c++  java
  • Mysql查询语句之连表查询和增删改查语句补充

    前言

    Hey,大家好,我是码农星期八!

    上次怎么大概说了一下or,!=,in/not in between,like,limit,order by,group by

    但是还没完,咱们接着往下说!

    查询

    我们的数据是这样的。

    发现class_id是一个数字,这是因为我们在设计时,将学生表班级表分开设计的。

    但是如果我们偏偏想要查询这个人是几班的,怎么办?

    连表查询

    方式一,where连表

    语法

    SELECT * from 表1,表2 WHERE 表1.外键列=表2.被外键列;
    SELECT 表1.列1,表1.列2,表2.列1,... from 表1,表2 WHERE 表1.外键列=表2.被外键列;
    

    连表显示所有列

    SELECT * from student,class WHERE student.class_id=class.id;
    

    执行结果

    喏,这样就知道哪个学生是哪个班的了!

    连表显示指定列

    SELECT student.id,student.`name`,class.title from student,class WHERE student.class_id=class.id;
    

    执行结果

    方式二,left连表

    通过where连表固然简单,但是缺点明显。

    因为我们的where后面是要跟判断条件的,使用where进行连表会造成逻辑有些混乱

    在一般连表操作中,使用的也是left进行连表。

    语法

    SELECT * from 表1 LEFT JOIN 表2 on 表1.外键字段=表2.被外键字段;
    SELECT 表1.列1,表1.列2,表2.列1,... from 表1 LEFT JOIN 表2 on 表1.外键字段=表2.被外键字段;
    

    连表显示所有列

    SELECT * from student LEFT JOIN class on student.class_id=class.id;
    

    执行结果

    选择指定列查询

    SELECT student.id,student.`name`,class.title from student LEFT JOIN class on student.class_id=class.id;
    

    执行结果

    其实这和where连表是一样的。

    方式三,inner连表

    innerleft是差不多的,只不过left是正向连表,inner是反向连表。

    就像学生表和课程表。

    如果是通过学生表连课程表,属于正向,用left

    如果是通过课程表连学生表,就属于反向,用inner

    如果反向连表硬生生用left,会出现一些空值现象。

    inner语法同left,只不过是表的前后顺序不一样。

    其他操作

    上述所有的操作,都属于查询操作,基本上入门是可以的,下面咱们来看一下剩下的增,删,改操作。

    增(insert)

    单条插入

    语法

    INSERT INTO 表(列名1,列名2,...) values(值1,值2,...);
    

    添加一条学生信息

    INSERT into student(name,age,gender,class_id) VALUES("吴彦祖",22,"男",1);
    

    执行结果

    表内容

    多条插入

    语法

    INSERT INTO 表(列名1,列名2,...) values(值1,值2,...),(值1,值2,...);
    

    批量添加学生信息

    INSERT INTO student (NAME, age, gender, class_id)
    VALUES
        ("范冰冰", 18, "女", 2),
        ("成龙", 24, "男", 3);
    

    执行结果

    表内容

    改(update)

    语法

    UPDATE <表> set 列 = 值 where <条件>;
    

    将李四的年龄修改成88岁

    UPDATE student set age = 88 where name = "张三"
    

    执行结果

    删除(delete)

    语法

    delete from <表名>
    delete from <表名> where <条件>
    

    删除张三

    DELETE from student where name="张三"
    

    执行结果

    总结

    这章有点像收尾部分,补充了连表查询,后续又补充了Mysql的增删改查。

    连表查询要区分一下leftinner的区别,一个是正向连,一个是反向连。

    插入数据可以插入单条数据和多条数据,多跟参数即可。

    如果在操作过程中有任何问题,记得下面留言,我们看到会第一时间解决问题。

    越努力,越幸运。

    我是码农星期八,如果觉得还不错,记得动手点赞一下哈。

    感谢你的观看。

  • 相关阅读:
    iPhone网络编程之--Reachability
    ASIHTTPRequest 详解, http 请求终结者2
    什么情况下使用break关键字? 什么情况下使用Continue关键字? Java如何声明一个数组?JS如何声明一个数组?如何获取数组长度? 如何遍历数组?
    说说三元运算和if...else的相同之处? Switch语句的条件只能接受什么类型的值? 说说do...while和while的区别? 说说for循环的两种写法?
    String类的常用方法
    逻辑结算的结果是什么类型? 比较运算的值是什么类型? 声明字符串有哪几种方式?怎么写? Math类有哪些常用的方法? 三元运算怎么写?
    算术运算有哪些?逻辑运算有哪些?比较运算有哪些?
    Java中8种基本数据类型是哪些?
    Java如何声明变量?JS如何声明变量?
    回顾之前知识: 注释
  • 原文地址:https://www.cnblogs.com/dcpeng/p/15264698.html
Copyright © 2011-2022 走看看