zoukankan      html  css  js  c++  java
  • 子查询、联结、约束、索引

    子查询

    -- 子查询作为过滤条件
    SELECT NAME,gender 
    FROM emp 
    WHERE dept_id 
    IN (SELECT id 
        FROM dept 
        WHERE NAME = '开发部');
    
    • 过滤数据:子查询的语句在IN()中,子查询的结果作为条件。子查询是由内向外的。
    • 计算数据:子查询的语句在要查询的列中
    -- 子查询作为计算字段
    SELECT NAME,
    	(SELECT COUNT(*) 
    	FROM emp
    	WHERE dept_id = dept.`id`) AS res 
    FROM dept;
    

    联结表

    相同的数据不要多次出现,关系表的设计应该把信息分成多个表,表之间通过某些共同的值关联

    • 联结两个表,返回结果为笛卡尔积,where条件过滤不符合条件的行

    内联结

    where 联结条件

    用on后面接联结 :from 表1 inner join 表2 on 条件

    可以联结多个表

    自联结

    举例:查询和员工a同公司的所有员工,首先需要查询a的公司b,再查询表中公司为b的所有员工。可以用子查询,但是性能不好,最好采用自联结。

    自联结是联结相同的表,联结条件为公司名相同,并且表2的员工名为a。公司相同代表表1的记录会和表2所有同公司的员工的记录进行组合,筛选名为a的员工就可以留下与其同公司的员工的记录,然后返回的结果为表1 的数据。

    外联结

    内联结是只显示有联结的记录,外联结会包含一张表中没有关联行的行,表1 LEFT/RIGHT OUTER JOIN 表2 ON 条件,LEFT表示从FROM子句左边的表显示所有行。

    带聚集函数的联结

    有顾客表和订单表,查询每个顾客下单的订单数量。需要检索的是顾客和订单数,group by顾客id,count(订单)。

    约束

    • 外键:外键的值必须是另一个表的主键 REFERENCES

    索引

    恰当的排序使索引有用

    • 索引适用于值比较多样的列
    • 索引有利于查找,不利于增删改,每次更新数据都需要更新索引
    • 索引可以用于排序和过滤数据
  • 相关阅读:
    HDU 2809 God of War(DP + 状态压缩)
    POJ 3311 Hie with the Pie(DP状态压缩+最短路径)
    HDU 1400 (POJ 2411 ZOJ 1100)Mondriaan's Dream(DP + 状态压缩)
    位运算的应用
    ZOJ 3471 Most Powerful(DP + 状态压缩)
    POJ 2039 To and Fro(模拟)
    UVA 10817 Headmaster's Headache(DP +状态压缩)
    黑子的篮球
    POJ 1564(HDU 1258 ZOJ 1711) Sum It Up(DFS)
    HDU 3006 The Number of set(位运算 状态压缩)
  • 原文地址:https://www.cnblogs.com/ningdeblog/p/14322057.html
Copyright © 2011-2022 走看看