zoukankan      html  css  js  c++  java
  • mysql

    1: int和tinyint的使用。

      int占4个字节,tinyint占1个字节,这样节约磁盘空间。

    2:DELETE的别名

      删除表的内容。

    DELETE FROM 表名称 WHERE 列名称 = 值

      给表起别名,然后进行删除

    DELETE 别名 FROM 表名称 别名 WHERE 列名称 = 值
    3: in 的讲解。

    现在要查询既学习了1课程,又学习了2课程的人

    SELECT
        a.s_id,
        a.c_id
    FROM
        a_sc a
    WHERE
        a.c_id IN ("001", "002")

    输出的结果:

    可以看出,4只包含了2,5只包含了1.然后都给查出来了。这样是不正确的。

    应该用exists

    SELECT
        a_student.s_id,
        a_student.sname
    FROM
        a_student
    INNER JOIN a_SC ON a_student.s_id = a_sc.s_id
    WHERE
        a_student.s_id = a_sc.s_id
    AND a_sc.c_id = '001'
    AND EXISTS (
        SELECT
            *
        FROM
            a_sc AS SC_2
        WHERE
            SC_2.S_id = a_sc.s_id
        AND SC_2.c_id = '002'
    );

    exists返回值是true 或者false。先把001的都给查询出来。然后去查询002的。如果为true,显示出来。返回false,不显示出来。

    下面来演示  NOT EXISTS

    SELECT
        a_student.s_id,
        a_student.sname
    FROM
        a_student
    INNER JOIN a_SC ON a_student.s_id = a_sc.s_id
    WHERE
        a_student.s_id = a_sc.s_id
    AND a_sc.c_id = '001'
    AND NOT EXISTS (
        SELECT
            *
        FROM
            a_sc AS SC_2
        WHERE
            SC_2.S_id = a_sc.s_id
        AND SC_2.c_id = '002'
    );

    显示的结果是:

    这里为什么显示5,不显示4呢?

    是因为用“=001” 和ture或false去判断的。这里表示查询学习了001,但是没有学习002的。





  • 相关阅读:
    jQuery对象和DOM对象
    虚拟主机的部署(Apache)
    事件流:事件冒泡和事件捕获
    ThinkPHP
    级联下拉列表
    今日份抽自己!!!
    c++中关于输入字符数组的一些问题
    今日新知(关于递归中变量的声明)
    格子游戏(并查集)
    1.3-14大象喝水
  • 原文地址:https://www.cnblogs.com/bulrush/p/8901368.html
Copyright © 2011-2022 走看看