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的。





  • 相关阅读:
    Atcoder Grand Contest 038 F
    洛谷 P5502
    Codeforces 1010F
    洛谷 P4621
    洛谷 P5518
    Oracle-切换当用用户的模式
    Oracle-DBV数据文件校验工具
    【转载】Oracle-通过增量备份前滚的反手解决物理备库归档缺失,损坏,gap问题
    Oracle-对比SAA与STA
    Oracle-SAA
  • 原文地址:https://www.cnblogs.com/bulrush/p/8901368.html
Copyright © 2011-2022 走看看