• 数据库高级查询的使用 201409005


    一、连接查询

    将多个表格列出来,不是SQL国际标准方法,但适用于每个表,是表格中列的扩展,表格横着铺开.

    1.连接查询的方法:

    1)形成笛卡尔积

    select * from Info


    select * from nation

    笛卡尔积:

    select info.code,info.name,info.sex,nation.name as nation,info.birthday

    from INFO,nation --显示info表中的code,name,sex列,并且将nation表中的name列替换info表中的nation列(用"as"或空格改列名),再显示info表中的birthday列.

    nationg列会对code列一一对应,所以原本4行的记录对应四次nation即变成了16行.

    where Nation.Code=INFO.Nation     -- nation列显示code列的值时,即不会重复一一对应.

    PS:因两个表格中列名有重复的,所以要在列名前写表明,如表格之间无列明重复者可直接写列名.

    2)筛选

    内连接:表名 join 表名 on  --查询的列如为NULL值,筛选时则忽略不计,亦不显示;如需将NULL值一起统计可使用外连接.

    select * from INFO

    select * from nation

    select * from INFO join nation on INFO.nation = nation.code
    where nation.name='汉族' --显示民族为汉族的值.用where也可操作:

    select * from INFO,nation where info.nation = nation.code and nation.name='汉族' --查询结果与上同.

    外连接:

    A.左连接 --以左边为主

    select * from INFO left join nation on INFO.nation = nation.code --左边表格INFO的数据必须全部显示,即使左边表有NULL值也会显示.

    B.右连接 --以右边为主

    select * from INFO right join nation on INFO.nation = nation.code --右边边表格nation的数据必须全部显示,即使右边表有NULL值也会显示.

    C.全连接 --左右两边全部显示

    select * from INFO full join nation on INFO.nation = nation.code--左右两边的表格全部显示
    二、联合查询
    表格中行的扩展
    select Name from info --显示info表中的Name列

    union --联合,同类型列名才可使用union.
    select Name from Family -- 显示员工及家属两表格的姓名为一列
    三、子查询(嵌套查询)

    select * from INFO

    select * from Work where InfoCode=
    (
    select code from Info where Name='胡军'
    )  --查询有关胡军的所有简历

  • 相关阅读:
    关于jar包的创建及引用相关问题
    关于Android系统一次能创建多大的Bitmap?
    Android开发导入第三方Jar包
    Javascript操作表格
    installanywhere 打包j2ee的方法II(转)
    C#网页自动登录和提交POST信息的多种方法
    JavaScript手册javascript语法javascript函数
    javascript 禁止复制网页
    [Android实例] Handler+ExecutorService(线程池)+MessageQueue模式+缓存模式(转)
    android消息处理系统原理
  • 原文地址:https://www.cnblogs.com/DORCASQING/p/3961918.html
Copyright © 2020-2023  润新知