- 浏览: 606738 次
- 性别:
- 来自: 西安
文章分类
- 全部博客 (365)
- Java 基础知识(笔试面试有用) (35)
- SQL 相关 (11)
- Oracle笔试 (1)
- Java 笔试面试 (11)
- LINUX (12)
- ExtJS (21)
- Javascript (17)
- WebGIS (2)
- 软件工程 (3)
- 数据库 (17)
- 项目管理 (63)
- 工作流 (2)
- 计算机网络 (3)
- ZigBee技术及应用 (24)
- 单片机(AVR Studio) (7)
- 项目人力资源管理 (3)
- 项目管理高级知识 (4)
- JAVA技术 (12)
- 项目管理中的概念 (3)
- SQL SERVER (1)
- C++ (1)
- C/C++编程经验 (12)
- C和C++面试笔试题 (12)
- 其他IT技术笔试面试 (6)
- 名企笔试面试集锦 (16)
- 非技术 (10)
- C#相关 (1)
- Matlab相关 (2)
- 计算机专业课相关 (2)
- Web Service (1)
- Excel 使用 (1)
- PhotoShop相关 (4)
- ASP 相关 (2)
- android (1)
- Java WEB 相关 (1)
- web 安全相关 (7)
- 网络安全 (1)
- IBatis (1)
- web 开发技巧 (2)
- css 相关 (1)
- Ruby相关 (2)
- 生活 (3)
- 操作系统安全相关 (6)
- 操作系统相关 (1)
- PHP相关 (3)
- 开发经验 (12)
- Redis (1)
最新评论
SQL Alias(别名)
SQL Alias
表的 SQL Alias 语法
SELECT column_name(s) FROM table_name AS alias_name
列的 SQL Alias 语法
SELECT column_name AS alias_name FROM table_name
Alias 实例: 使用表名称别名
假设我们有两个表分别是:"Persons" 和 "Product_Orders"。我们分别为它们指定别名 "p" 和 "po"。
现在,我们希望列出 "John Adams" 的所有定单。
我们可以使用下面的 SELECT 语句:
SELECT po.OrderID, p.LastName, p.FirstName FROM PersonsAS p
, Product_OrdersAS po
WHERE p.LastName='Adams' AND p.FirstName='John'
不使用别名的 SELECT 语句:
SELECT Product_Orders.OrderID, Persons.LastName, Persons.FirstName FROM Persons, Product_Orders WHERE Persons.LastName='Adams' AND Persons.FirstName='John'
从上面两条 SELECT 语句您可以看到,别名使查询程序更易阅读和书写。
Alias 实例: 使用一个列名别名
表 Persons:
1 | Adams | John | Oxford Street | London |
2 | Bush | George | Fifth Avenue | New York |
3 | Carter | Thomas | Changan Street | Beijing |
SQL:
SELECT LastNameAS Family
, FirstNameAS Name
FROM Persons
结果:
Adams | John |
Bush | George |
Carter | Thomas |
SQL JOIN
Join 和 Key
有时为了得到完整的结果,我们需要从两个或更多的表中获取结果。我们就需要执行 join。
数据库中的表可通过键将彼此联系起来。主键(Primary Key)是一个列,在这个列中的每一行的值都是唯一的。在表中,每个主键的值都是唯一的。这样做的目的是在不重复每个表中的所有数据的情况下,把表间的数据交叉捆绑在一起。
请看 "Persons" 表:
1 | Adams | John | Oxford Street | London |
2 | Bush | George | Fifth Avenue | New York |
3 | Carter | Thomas | Changan Street | Beijing |
请注意,"Id_P" 列是 Persons 表中的的主键。这意味着没有两行能够拥有相同的 Id_P。即使两个人的姓名完全相同,Id_P 也可以区分他们。
接下来请看 "Orders" 表:
1 | 77895 | 3 |
2 | 44678 | 3 |
3 | 22456 | 1 |
4 | 24562 | 1 |
5 | 34764 | 65 |
请注意,"Id_O" 列是 Orders 表中的的主键,同时,"Orders" 表中的 "Id_P" 列用于引用 "Persons" 表中的人,而无需使用他们的确切姓名。
请留意,"Id_P" 列把上面的两个表联系了起来。
引用两个表
我们可以通过引用两个表的方式,从两个表中获取数据:
谁订购了产品,并且他们订购了什么产品?
SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo FROM Persons, Orders WHERE Persons.Id_P = Orders.Id_P
结果集:
Adams | John | 22456 |
Adams | John | 24562 |
Carter | Thomas | 77895 |
Carter | Thomas | 44678 |
SQL JOIN - 使用 Join
除了上面的方法,我们也可以使用关键词 JOIN 来从两个表中获取数据。
如果我们希望列出所有人的定购,可以使用下面的 SELECT 语句:
SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons
INNER JOIN Orders
ON Persons.Id_P = Orders.Id_P
ORDER BY Persons.LastName
结果集:
Adams | John | 22456 |
Adams | John | 24562 |
Carter | Thomas | 77895 |
Carter | Thomas | 44678 |
不同的 SQL JOIN
除了我们在上面的例子中使用的 INNER JOIN(内连接),我们还可以使用其他几种连接。
下面列出了您可以使用的 JOIN 类型,以及它们之间的差异。
- JOIN: 如果表中有至少一个匹配,则返回行
- LEFT JOIN: 即使右表中没有匹配,也从左表返回所有的行
- RIGHT JOIN: 即使左表中没有匹配,也从右表返回所有的行
- FULL JOIN: 只要其中一个表中存在匹配,就返回行
SQL INNER JOIN 关键字
INNER JOIN 关键字语法
SELECT column_name(s) FROM table_name1 INNER JOIN table_name2 ON table_name1.column_name=table_name2.column_name
注释:INNER JOIN 与 JOIN 是相同的。
原始的表 (用在例子中的):
"Persons" 表:
1 | Adams | John | Oxford Street | London |
2 | Bush | George | Fifth Avenue | New York |
3 | Carter | Thomas | Changan Street | Beijing |
"Orders" 表:
1 | 77895 | 3 |
2 | 44678 | 3 |
3 | 22456 | 1 |
4 | 24562 | 1 |
5 | 34764 | 65 |
内连接(INNER JOIN)实例
现在,我们希望列出所有人的定购。
您可以使用下面的 SELECT 语句:
SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo FROM Persons INNER JOIN Orders ON Persons.Id_P=Orders.Id_P ORDER BY Persons.LastName
结果集:
Adams | John | 22456 |
Adams | John | 24562 |
Carter | Thomas | 77895 |
Carter | Thomas | 44678 |
INNER JOIN 关键字在表中存在至少一个匹配时返回行。如果 "Persons" 中的行在 "Orders" 中没有匹配,就不会列出这些行。
SQL LEFT JOIN 关键字
LEFT JOIN 关键字语法
SELECT column_name(s) FROM table_name1 LEFT JOIN table_name2 ON table_name1.column_name=table_name2.column_name
注释:在某些数据库中, LEFT JOIN 称为 LEFT OUTER JOIN。
原始的表 (用在例子中的):
"Persons" 表:
1 | Adams | John | Oxford Street | London |
2 | Bush | George | Fifth Avenue | New York |
3 | Carter | Thomas | Changan Street | Beijing |
"Orders" 表:
1 | 77895 | 3 |
2 | 44678 | 3 |
3 | 22456 | 1 |
4 | 24562 | 1 |
5 | 34764 | 65 |
左连接(LEFT JOIN)实例
现在,我们希望列出所有的人,以及他们的定购 - 如果有的话。
您可以使用下面的 SELECT 语句:
SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo FROM Persons LEFT JOIN Orders ON Persons.Id_P=Orders.Id_P ORDER BY Persons.LastName
结果集:
Adams | John | 22456 |
Adams | John | 24562 |
Carter | Thomas | 77895 |
Carter | Thomas | 44678 |
Bush | George |
LEFT JOIN 关键字会从左表 (Persons) 那里返回所有的行,即使在右表 (Orders) 中没有匹配的行。
SQL RIGHT JOIN 关键字
RIGHT JOIN 关键字会右表 (table_name2) 那里返回所有的行,即使在左表 (table_name1) 中没有匹配的行。
RIGHT JOIN 关键字语法
SELECT column_name(s) FROM table_name1 RIGHT JOIN table_name2 ON table_name1.column_name=table_name2.column_name
注释:在某些数据库中, RIGHT JOIN 称为 RIGHT OUTER JOIN。
原始的表 (用在例子中的):
"Persons" 表:
1 | Adams | John | Oxford Street | London |
2 | Bush | George | Fifth Avenue | New York |
3 | Carter | Thomas | Changan Street | Beijing |
"Orders" 表:
1 | 77895 | 3 |
2 | 44678 | 3 |
3 | 22456 | 1 |
4 | 24562 | 1 |
5 | 34764 | 65 |
右连接(RIGHT JOIN)实例
现在,我们希望列出所有的定单,以及定购它们的人 - 如果有的话。
您可以使用下面的 SELECT 语句:
SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo FROM Persons RIGHT JOIN Orders ON Persons.Id_P=Orders.Id_P ORDER BY Persons.LastName
结果集:
Adams | John | 22456 |
Adams | John | 24562 |
Carter | Thomas | 77895 |
Carter | Thomas | 44678 |
34764 |
RIGHT JOIN 关键字会从右表 (Orders) 那里返回所有的行,即使在左表 (Persons) 中没有匹配的行。
SQL FULL JOIN 关键字
FULL JOIN 关键字语法
SELECT column_name(s) FROM table_name1 FULL JOIN table_name2 ON table_name1.column_name=table_name2.column_name
注释:在某些数据库中, FULL JOIN 称为 FULL OUTER JOIN。
原始的表 (用在例子中的):
"Persons" 表:
1 | Adams | John | Oxford Street | London |
2 | Bush | George | Fifth Avenue | New York |
3 | Carter | Thomas | Changan Street | Beijing |
"Orders" 表:
1 | 77895 | 3 |
2 | 44678 | 3 |
3 | 22456 | 1 |
4 | 24562 | 1 |
5 | 34764 | 65 |
全连接(FULL JOIN)实例
现在,我们希望列出所有的人,以及他们的定单,以及所有的定单,以及定购它们的人。
您可以使用下面的 SELECT 语句:
SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo FROM Persons FULL JOIN Orders ON Persons.Id_P=Orders.Id_P ORDER BY Persons.LastName
结果集:
Adams | John | 22456 |
Adams | John | 24562 |
Carter | Thomas | 77895 |
Carter | Thomas | 44678 |
Bush | George | |
34764 |
FULL JOIN 关键字会从左表 (Persons) 和右表 (Orders) 那里返回所有的行。如果 "Persons" 中的行在表 "Orders" 中没有匹配,或者如果 "Orders" 中的行在表 "Persons" 中没有匹配,这些行同样会列出。
发表评论
-
windows上jetspeed2安装和配置
2012-11-14 20:56 972windows上jetspeed2安装和配置 1、je ... -
SQL 高级 04
2012-10-18 19:07 753SQL PRIMARY KEY 约束 P ... -
SQL 高级 03
2012-10-07 15:21 785SQL UNION 操作符 UNION 操作符用于 ... -
SQL 高级 01
2012-10-07 11:08 761SQL TOP 子句 TOP 子句用于规定要返回的记录 ... -
SQL入门 02
2012-10-07 09:51 492SQL AND & OR 运算符 AND 和 ... -
SQL入门 01
2012-10-07 09:42 618SQL 能做什么? SQL 面向数据库执行查询 SQL ... -
sql 笔试题(2)
2009-11-11 14:31 11881.磁盘柜上有14块73G的磁盘, 数据库为200G 大小包括 ... -
sql笔试题
2009-11-11 14:07 3552sql 相关的查询面试题收集及答案一 //查询某表中的第30到 ... -
sql中的group by用法
2009-11-11 12:36 1598具体讲解一下sql说法中group by的用法; 以下 ... -
sql 笔试
2009-11-09 22:55 1324关键字: sql 笔试题 有三个表: 学生表:stud ...
相关推荐
由于标题和描述是重复的且没有提供实质性的内容,我们无法从中得知具体的Oracle SQL高级编程知识点。但是,从标题我们可以推测该文档可能是关于如何使用Oracle数据库中的SQL语言进行高级编程。Oracle数据库是一个...
SQL高级查询技术是数据库管理中不可或缺的一部分,它涵盖了多种复杂操作,使得数据处理更为高效和精确。本章主要探讨三个核心主题:日期和时间处理、层次查询以及分析查询,这些都是Oracle Database 10g系统中重要的...
这个"sql高级进阶.zip"文件很可能是包含了一系列关于SQL优化、尤其是索引优化的教程或资料。在这里,我们将探讨SQL的一些核心高级概念,尤其是如何通过索引来提升查询性能。 SQL,全称为Structured Query Language...
精通Oracle SQL【第2版】ORACLE SQL高级编程【第二版】学习笔记
《Oracle SQL高级编程/数据库系列》的作者莫顿以精炼、风趣的语言揭开了Oracle SQL高级编程的神秘面纱。所涵盖的内容涉及SQL核心、SQL执行、分析函数、联结、测试与质量保证等,并提供大量实用性建议,且总结出...
Oracle SQL高级编程笔记是针对数据库管理员、开发人员和数据分析师的重要参考资料,涵盖了SQL在Oracle数据库系统中的高级应用。这些笔记详尽地阐述了如何利用Oracle SQL进行高效的数据查询、操作和管理,旨在提升...
《SQL Server高级编程管理指南》是一本专注于深入探讨SQL Server数据库管理系统高级特性和管理实践的书籍。这本书旨在帮助读者掌握SQL Server的高级编程技巧和管理方法,以优化数据库性能、提高数据安全性和实现高效...
SQL 高级教程 本教程涵盖了 SQL 的高级知识点,包括 SQL 高级查询、SQL 安全等内容。下面是本教程的主要知识点总结: SQL 基础 * SQL 简介:SQL 是一种标准的计算机语言,用于访问和处理数据库。 * SQL 语法:...
本话题主要聚焦于内联查询、左外联查询以及嵌套查询,这些都是SQL高级查询的重要组成部分。 首先,内联查询(也称为子查询)是指在一个查询语句中嵌套另一个查询,用以获取所需的数据。内联查询可以在SELECT、FROM...
Oracle SQL高级编程是针对数据库开发和管理的专业领域,旨在帮助高级编程人员深入理解和掌握SQL在Oracle数据库中的应用。Oracle数据库是世界上最广泛使用的数据库系统之一,它提供了强大的功能和高效的性能,使得SQL...
本高级教程旨在深入探讨SQL的各种高级特性,帮助你提升在数据库操作和管理上的技能。 首先,"SQL基础"部分涵盖的是SQL语言的基本概念和语法,包括但不限于数据类型(如整数、字符串、日期/时间等)、数据操作...
SQL 高级查询(入门与提高) SQL 高级查询是数据库管理系统中的一种高级查询语言,用于查询和处理数据库中的数据。以下是 SQL 高级查询的知识点: 1. 多表查询类型: * 连接(Join):将两个或多个表连接成一个表...
但是,我能够根据标题、描述和标签提供的信息,大致勾勒出《ORACLE SQL 高级编程》这本书可能包含的知识点。 ORACLE是全球领先的企业级数据库解决方案提供商,SQL(Structured Query Language)是操作和管理关系...
SQL高级用法优化方法 非常实用 即可方便初级用户也是高级用户的手变数
高级 SQL 涉及到索引、视图、存储过程等概念。 SQL best practice 1. 不要在你的站点上试图用 Microsoft Access 代替 Microsoft SQL Server。 2. 在设计数据库时,应该考虑怎样把信息存储在表中。 3. 在使用 SQL...
本资源包含"Oracle SQL 高级编程"的详细教程及配套源码,旨在帮助读者深入理解并熟练掌握Oracle SQL的高级特性。 一、子查询 Oracle SQL中的子查询允许在一个查询中嵌套另一个查询,用于获取或比较数据。子查询可以...
以下是一些关于SQL高级面试题的关键知识点,以及它们的解释和应用: 1. **复制表(只复制结构)**: - 使用`SELECT * INTO`语句,配合`WHERE 1<>1`或`TOP 0 *`,可以创建一个新表并复制源表的结构,但不包含数据。...
在SQL Server的高级开发中,我们探讨的主题涵盖了数据库设计、性能优化、事务处理、存储过程、触发器、索引策略、备份与恢复等多个关键领域。这些主题对于任何想要深入理解和应用SQL Server的专业人士来说都是至关...
资源名称:Oracle SQL高级编程资源截图: 资源太大,传百度网盘了,链接在附件中,有需要的同学自取。
SQL Server高级查询与T-SQL编程是数据库管理与开发中的核心技能,涵盖了多个关键知识点。以下是对这些主题的详细说明: 1. **数据库设计**: - **需求分析**:这是设计过程的第一步,旨在理解用户的需求,确定系统...