zoukankan      html  css  js  c++  java
  • 数据库高级查询的使用 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='胡军'
    )  --查询有关胡军的所有简历

  • 相关阅读:
    Bluetooth architecture (HCI/L2CAP)
    堆栈
    Inside the C++ Object Model 深度探索对象模型 57
    Android音乐播放器
    (一)开发板系统安装
    html5的canvas写一个简单的画板程序
    C++ 获取日历时间
    Incremental Differential vs. Incremental Cumulative Backups
    BCB安装控件出现Unresolved external '__fastcall Outline::TCustomOutline
    Windows 环境下配置 Oracle 11gR2 Data Guard 手记
  • 原文地址:https://www.cnblogs.com/DORCASQING/p/3961918.html
Copyright © 2011-2022 走看看