SQL笔记(13)_第十三章 查询里结合表
2016-01-07 14:39
363 查看
第十三章 查询里结合表
能够从多个表选择数据是SQL最强大的特征之一,也是实现关系型数据库整个概念的基础。规格化的主要目标是减少冗余和提高数据完整性。
数据库管理员的最终目标是确保数据安全。
结合的类型
结合是把两个或多个表组合在一起来获取数据。SELECT和FROM是SQL语句的必要子句,而在结合表时WHERE子句是必要的。要结合的表列在FROM子句里,而结合是在WHERE子句里完成的。多个操作符可用于结合表,比如=,<,>,<>,<=,>=!=,BETWEEN,LIKE,NOT。其中最常用的是等于号。
等值结合
等值结合也称为内部结合,是最常用也是最重要的结合。等值结合利用通用字段结合两个表,而这两个表通常是每个表里的主键。
SELECT TABLE1.COLUMN1, TABLE2.COMULN2... FROM TABLE1, TABLA2, [TABLE3]... WHERE TABLE1.COLUMN_NAME = TABLE2.COLUMN_NAME [TABLE1.COLUMN_NAME = TABLE3.COLUMN_NAME] ...
SELECT TABLE1.COLUMN1, TABE2.COMULN2 FROM TABLE1 INNER JOIN TABLA2 ON TABLE1.COLUMN_NAME = TABLE2.COLUMN_NAME
不等值结合
不等值结合根据同一个字段在两个表里值不相等来实现结合。不等值结合可能会产生多余的数据,结果需要仔细检查。
外部结合
FROM TABLE1 {RIGHT | LEFT | FULL } [OUTER] JOIN TABLE2 ON
外部结合会返回一个表里的全部记录,即使对应的记录在第二个表里不存在。
外部结合只能用于JOIN条件的一侧,但可以在JOIN条件里对同一个表里的多个字段进行外部结合。
自结合
自结合利用表别名在SQL语句对表进行重命名,像处理两个表一样把表结合到自身。当需要查询的数据都在一个表里,而且我们又必须对数据做一些比较时,就可以使用自结合。
结合多个主键
根据数据库的设计情况有时候需要结合多个主键来描述数据库里的数据。比如某个表的主键由多个字段组成,可能某个表的外键由多个字段组成,分别引用多个主键。使用基表
如果需要从两个表里获取数据,他们又没有公用字段,我们就必须结合另一个表,这个表与前面两个表都有公有字段,这个表就被称为基表。基表用于集合具有公用字段的一个或多个表,或是没有公用字段的多个表。*注意表别名的使用
笛卡尔积
笛卡尔积是笛卡尔结合或“无结合”的结果。如果从两个或多个没有结合的表里获取数据,输出结果就是所有被选表里的全部记录。强烈建议使用WHERE子句。笛卡尔积通常也被称为交叉结合。
*务必确保所有的表都结合完毕。
如果数据量过大,不结合,笛卡尔积会很大,可能导致主机崩溃或停止。
相关文章推荐
- SQL Server中Text和varchar(max)数据类型区别
- asp.net C# Sql 查找用户是否存在
- sql server 2008怎么找到隐藏的对象资源管理器
- 数据库查询给定字段的多行记录的合并
- sql trim()函数去掉两头空格
- MySQL——版本
- Ehcache和MemCached区别及应用
- oracle 开发 第04章 函数
- MySQL下创建索引
- mongodb Replica Sets副本集与读写分离
- redis学习(二)redis数据类型 Date Types
- Troubleshooting ORA-3137 [12333] Errors Encountered When Using Oracle JDBC Driver (文档 ID 1361107.1)
- redis memcached mongodb ,couchbase, couchdb,memcache ,HDInsight,documentdb,Greenplum,Nosql,
- SQLite指南(5) - PRAGMA命令用法(完整)
- ios FMDB数据库
- Sqoop实现MySql/Oracle与Hdfs/Hbase互导数据
- MySql的二进制日志,重做日志笔记,UndoLog
- Oracle 计算两个时间的差值
- ORACLE常用命令
- Oracle_Alter_详解