zoukankan      html  css  js  c++  java
  • 第八章-连接与多张表的操作

    1.引用某个查询的结果来安插至另一个表中

    1 CREATE TABLE profession(
    2     id INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
    3     ename VARCHAR(20)
    4 )ENGINE = MYISAM DEFAULT CHARSET = utf8
    5     AS 
    6     SELECT ename FROM emp 
    7     GROUP BY ename 
    8     ORDER BY ename;  /*以SELECT的查询结果填满ename列*/

    2.创建别名(可省略)

    1 CREATE TABLE profession(
    2     id INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
    3     mc_prof VARCHAR(20)
    4 )AS
    5     SELECT profession AS mc_prof FROM my_contacts
    6     GROUP BY mc_prof
    7     ORDER BY mc_prof;

    join(联接)

    cross join(交叉联接):把一张表中的每个值与另一张表的每个值配对,cross join返回两张表的每一行相乘的结果。

    交叉连接可以省略不写,用逗号代替。

    inner join(内联接):内联接基本上就是通过查询中的条件移除了某些结果数据行后的交叉联接。

    SELECT mc.last_name ,mc.first_name, p.profession
    FROM my_contacts AS mc
    INNER JOIN profession AS p  /*联接my_contacts表和profession表*/
    ON mc.prof_id = p.prof_id;  
    /*这个地方的关键字on也可以换成where,on后面是联接条件*/

    equijoin(相等联接):表之间为一对一关系的联接

    non-equijoin(不等连接):返回任何不相等的记录

    natural join(自然联接):在两张表中有相同的列名时才会有用

    SELECT boys.boy, toys.toy
    FROM boys
    NATURAL JOIN
    toys;
  • 相关阅读:
    MATLAB 和 armadillo 数据转换
    macOS gcc g++ c++ cc
    Sublime-Text macOS 编译运行armadillo
    macOS BLAS LAPACK
    Rsyslog 日志相关内容
    构建基于虚拟用户的vsftpd服务器
    对Servlet执行流程的初步认识
    对Servlet执行流程的初步认识
    android studio 开发环境的搭建
    android studio 开发环境的搭建
  • 原文地址:https://www.cnblogs.com/hell0x/p/5033151.html
Copyright © 2011-2022 走看看