第八章-连接与多张表的操作

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;
时间: 12-09

第八章-连接与多张表的操作的相关文章

android 玩转ContentProvider之二--实现多个ContentProvider对多张表进行操作

SQLite数据库直接操作类: DatabaseHelper.java [java] view plaincopy package com.jacp.database; import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; import com.jacp.demo.provider.Provide

oracle中查找某用户执行某张表的操作操作记录

1,首先查找表的操作记录 select * from v$sqlarea a where a.SQL_TEXT like '%TB_ACCT_SYSDATE%'; 2,从上面的记录中找到update语句对应的sql_id select * from v$sqltext a,v$sqlarea b where a.SQL_ID=b.SQL_ID and b.SQL_ID in('cq53826tk4u3c','afftnrfhu5utk') order by b.LAST_ACTIVE_TIME

CROSS JOIN连接用于生成两张表的笛卡尔集

将两张表的情况全部列举出来 结果表: 列= 原表列数相加 行= 原表行数相乘 CROSS JOIN连接用于生成两张表的笛卡尔集. 在sql中cross join的使用: 1.返回的记录数为两个表的记录数乘积. 2.将A表的所有行分别与B表的所有行进行连接. 例如: tableA r1 r2 A B C D tableB r3 r4 1 2 3 4 select * from tableA cross join tableB; return: r1 r2 r3 r4 r1 r2 1 2 r1 r2

mysql left join 左连接查询关联n多张表

eft join 左连接即以左表为基准,显示坐标所有的行,右表与左表关联的数据会显示,不关联的则不显示.关键字为left join on. **基本用法如下: select table a left join table b on a.id = b.ta_id** 注意:1??其中on后面关联的字段应该是同一字段(两表关联的外键) 2??由于以左表为基准,左表一条记录如果对应右表多条记录,那查出的数据中右表的数据也只显示一条,如果要都显示,可以用group_contact()将字段用逗号隔开显示

oracle表连接——处理连接过程中另外一张表没有相关数据不显示问题

一个数据表基本上很难满足我们的查询要求,同时,将所有的数据都保存在一个表格中显然也不是一种好的数据库设计,为了避免数据的冗余,删除.更新异常,我们通常需要建立一张外键表,通过表连接,来获取我们自己想要得到的数据,所以在数据查找中,表连接是一个经常使用到的操作,下面我们来看看两个或者几个表有哪些方式是可以连接的. 经常遇到的问题:我们或许在表连接的过程中用于连接的另外一张表数据为空,导致某些数据得不到.我们要怎么解决呢????? 我们就先从介绍表连接的方式开始,在介绍的过程中,就会得到解决. 假如

Ajax案例:三级联动查询员工的信息(三张表进行内连接)

需求分析: 通过数据库连接池,可以查询到数据库中员工的各种信息,通过点击下拉框的方式实现三级联动,即:没有点击city下拉框,后面两个下拉框中没有值,这样,点击city下拉框,department下拉框中才有值,点击department下拉框后employee下拉框中才有值,才可以进行选择,不可以跨级点击:点击最后一个下拉框可以将员工的id,last_name,email,salary,显示在下面的表格中: 实现上述功能的方法: 1.c3p0数据库连接池,实现数据库的链接:JdbcUtils类,

sql用逗号连接多张表对应哪个join?

转自:http://blog.csdn.net/huanghanqian/article/details/52847835 四种join的区别已老生常谈: INNER JOIN(也可简写为JOIN): 如果表中有至少一个匹配,则返回行 LEFT JOIN: 即使右表中没有匹配,也从左表返回所有的行 RIGHT JOIN: 即使左表中没有匹配,也从右表返回所有的行 FULL JOIN: 只要其中一个表中存在匹配,就返回行 那么问题来了,还有一种常见的写法是将表用逗号隔开,那这个又是怎么连接的呢.

Yii的Relational Active Record三张表连接查询

需求如下: 查询book表信息,同时关联entitystags表,以entitystags的字段eid关联book的主键,再关联查询tags表,以entitystags表的tid字段关联tags表的主键id 同时读出这三张表的信息来,在Yii可以如下处理,先在relations方法中声明三张表的关系,在控制器中,以with表明渴求式调用,即可,代码如下: 在book的model文件中声明关系: public function relations(){ return array( 'entitys

两张表一对多的连接,取多记录表中最新的一条数据

select sn, pname, srnum, rerepairtime, rn from ( select sn,pname, srnum, rerepairtime,row_number() over(partition by assetsid order by rerepairtime desc) rn from atzserreportb ) where rn = 1 两张表一对多的连接,取多记录表中最新的一条数据