关于SQL的连接查询
2016-09-25 22:19
246 查看
在sql语句中left join 的语法,select 字段 from 表a left 表b on 表a与表b的关联字段 where 筛选条件,多张表进行关联,只需要依次left join 即可,where的查询条件过滤需要放在最后一步
基本使用环境:做关联的表不能太大,如果可以左表放数据少的表,不要关联太多的表,在关联很多表时返回值字段能做到精简就精简
查询原理:先将左表数据查询出来,然后再依据 on 后面的条件查询 右表,然后将左右表的所有字段都并为一行即总列数为所有关联表列数相加
而关于数据条数(总行数):首先左表有的行一定会出现,即时右表没有也会出现,只是右表的字段对应的值为null,其次是右表中凡是关联到的行都会出现
即时关联的字段值是相同的也出现只是左表字段对应的值重复即可
使用要求:在使用left join操作时为了保证数据不丢失,左表为主数据表(不是数据量大表)
例子详解:人员表 人员详细信息表 这两张表关联,查询人员的详细信息操作,则人员为主表,因为人员不能缺少丢失 详细信息如果没有关联到可以为null
例如查询人员详细信息中地址的关联信息(比如有哪些人,房价)则人员详细信息表为主表,还是因为必须要保证所有的地址信息都要查询出来,即时没有关联到数据
sql的优化:left join 在遵循基本的使用环境时基本是没有问题的 但是当管理的表的数据量还是太大时就需要做一些基本的调优
调优的原来还是尽量缩小所关联的表的大小,还有就是关联时要设置索引进行关联
例: select * bumen a left join (select * from memb where id=?) b on a.id=b.id
当memb表数据量过大时即可这样操作来缩小所关联表的大小,多张表的优化依此类推
基本使用环境:做关联的表不能太大,如果可以左表放数据少的表,不要关联太多的表,在关联很多表时返回值字段能做到精简就精简
查询原理:先将左表数据查询出来,然后再依据 on 后面的条件查询 右表,然后将左右表的所有字段都并为一行即总列数为所有关联表列数相加
而关于数据条数(总行数):首先左表有的行一定会出现,即时右表没有也会出现,只是右表的字段对应的值为null,其次是右表中凡是关联到的行都会出现
即时关联的字段值是相同的也出现只是左表字段对应的值重复即可
使用要求:在使用left join操作时为了保证数据不丢失,左表为主数据表(不是数据量大表)
例子详解:人员表 人员详细信息表 这两张表关联,查询人员的详细信息操作,则人员为主表,因为人员不能缺少丢失 详细信息如果没有关联到可以为null
例如查询人员详细信息中地址的关联信息(比如有哪些人,房价)则人员详细信息表为主表,还是因为必须要保证所有的地址信息都要查询出来,即时没有关联到数据
sql的优化:left join 在遵循基本的使用环境时基本是没有问题的 但是当管理的表的数据量还是太大时就需要做一些基本的调优
调优的原来还是尽量缩小所关联的表的大小,还有就是关联时要设置索引进行关联
例: select * bumen a left join (select * from memb where id=?) b on a.id=b.id
当memb表数据量过大时即可这样操作来缩小所关联表的大小,多张表的优化依此类推
相关文章推荐
- SQL查询语句精华使用简要----关于连接
- (转)Hibernate中关于多表连接查询hql 和 sql 返回值集合中对象问题
- 关于sql连接查询问题
- Hibernate中关于多表连接查询hql 和 sql 返回值集合中对象问题
- Hibernate中关于多表连接查询hql 和 sql 返回值集合中对象问题
- Hibernate中关于多表连接查询hql 和 sql 返回值集合中对象问题
- Hibernate中关于多表连接查询hql 和 sql 返回值集合中对象问题
- 看一看关于在sql查询过程中的连接问题
- 关于SQL的左右连接查询
- Hibernate中关于多表连接查询hql 和 sql 返回值集合中对象问题
- 关于多表查询sql常用的连接语句:左外连接、右外连接、内连接
- 关于数据库查询语句SqlDataReader的连接释放问题的解决办法
- 关于SQL连接 加条件查询的LINQ表达式写法
- SQL关于连接查询
- 关于树形结构的表与另外一个表的连接查询
- SQL查询中的连接
- 关于sql查看连接
- 关于SQL Server SQL语句查询分页数据的解决方案
- SQL查询中的连接
- C#和SQL Server2000数据库连接,查询语句总结