SQL高级超详细的SQL语言学习资料私人收藏DOC.docx

上传人:b****1 文档编号:11013277 上传时间:2023-05-28 格式:DOCX 页数:69 大小:37.99KB
下载 相关 举报
SQL高级超详细的SQL语言学习资料私人收藏DOC.docx_第1页
第1页 / 共69页
SQL高级超详细的SQL语言学习资料私人收藏DOC.docx_第2页
第2页 / 共69页
SQL高级超详细的SQL语言学习资料私人收藏DOC.docx_第3页
第3页 / 共69页
SQL高级超详细的SQL语言学习资料私人收藏DOC.docx_第4页
第4页 / 共69页
SQL高级超详细的SQL语言学习资料私人收藏DOC.docx_第5页
第5页 / 共69页
SQL高级超详细的SQL语言学习资料私人收藏DOC.docx_第6页
第6页 / 共69页
SQL高级超详细的SQL语言学习资料私人收藏DOC.docx_第7页
第7页 / 共69页
SQL高级超详细的SQL语言学习资料私人收藏DOC.docx_第8页
第8页 / 共69页
SQL高级超详细的SQL语言学习资料私人收藏DOC.docx_第9页
第9页 / 共69页
SQL高级超详细的SQL语言学习资料私人收藏DOC.docx_第10页
第10页 / 共69页
SQL高级超详细的SQL语言学习资料私人收藏DOC.docx_第11页
第11页 / 共69页
SQL高级超详细的SQL语言学习资料私人收藏DOC.docx_第12页
第12页 / 共69页
SQL高级超详细的SQL语言学习资料私人收藏DOC.docx_第13页
第13页 / 共69页
SQL高级超详细的SQL语言学习资料私人收藏DOC.docx_第14页
第14页 / 共69页
SQL高级超详细的SQL语言学习资料私人收藏DOC.docx_第15页
第15页 / 共69页
SQL高级超详细的SQL语言学习资料私人收藏DOC.docx_第16页
第16页 / 共69页
SQL高级超详细的SQL语言学习资料私人收藏DOC.docx_第17页
第17页 / 共69页
SQL高级超详细的SQL语言学习资料私人收藏DOC.docx_第18页
第18页 / 共69页
SQL高级超详细的SQL语言学习资料私人收藏DOC.docx_第19页
第19页 / 共69页
SQL高级超详细的SQL语言学习资料私人收藏DOC.docx_第20页
第20页 / 共69页
亲,该文档总共69页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

SQL高级超详细的SQL语言学习资料私人收藏DOC.docx

《SQL高级超详细的SQL语言学习资料私人收藏DOC.docx》由会员分享,可在线阅读,更多相关《SQL高级超详细的SQL语言学习资料私人收藏DOC.docx(69页珍藏版)》请在冰点文库上搜索。

SQL高级超详细的SQL语言学习资料私人收藏DOC.docx

SQL高级超详细的SQL语言学习资料私人收藏DOC

SQL高级

SQLTOP子句

∙PreviousPage

∙NextPage

TOP子句

TOP子句用于规定要返回的记录的数目。

对于拥有数千条记录的大型表来说,TOP子句是非常有用的。

注释:

并非所有的数据库系统都支持TOP子句。

SQLServer的语法:

SELECTTOPnumber|percentcolumn_name(s)

FROMtable_name

MySQL和Oracle中的SQLSELECTTOP是等价的

MySQL语法

SELECTcolumn_name(s)

FROMtable_name

LIMITnumber

例子

SELECT*

FROMPersons

LIMIT5

Oracle语法

SELECTcolumn_name(s)

FROMtable_name

WHEREROWNUM<=number

例子

SELECT*

FROMPersons

WHEREROWNUM<=5

原始的表(用在例子中的):

Persons表:

Id

LastName

FirstName

Address

City

1

Adams

John

OxfordStreet

London

2

Bush

George

FifthAvenue

NewYork

3

Carter

Thomas

ChanganStreet

Beijing

4

Obama

Barack

PennsylvaniaAvenue

Washington

SQLTOP实例

现在,我们希望从上面的"Persons"表中选取头两条记录。

我们可以使用下面的SELECT语句:

SELECTTOP2*FROMPersons

结果:

Id

LastName

FirstName

Address

City

1

Adams

John

OxfordStreet

London

2

Bush

George

FifthAvenue

NewYork

SQLTOPPERCENT实例

现在,我们希望从上面的"Persons"表中选取50%的记录。

我们可以使用下面的SELECT语句:

SELECTTOP50PERCENT*FROMPersons

结果:

Id

LastName

FirstName

Address

City

1

Adams

John

OxfordStreet

London

2

Bush

George

FifthAvenue

NewYork

SQLLIKE操作符

∙PreviousPage

∙NextPage

LIKE操作符用于在WHERE子句中搜索列中的指定模式。

LIKE操作符

LIKE操作符用于在WHERE子句中搜索列中的指定模式。

SQLLIKE操作符语法

SELECTcolumn_name(s)

FROMtable_name

WHEREcolumn_nameLIKEpattern

原始的表(用在例子中的):

Persons表:

Id

LastName

FirstName

Address

City

1

Adams

John

OxfordStreet

London

2

Bush

George

FifthAvenue

NewYork

3

Carter

Thomas

ChanganStreet

Beijing

LIKE操作符实例

例子1

现在,我们希望从上面的"Persons"表中选取居住在以"N"开始的城市里的人:

我们可以使用下面的SELECT语句:

SELECT*FROMPersons

WHERECityLIKE'N%'

提示:

"%"可用于定义通配符(模式中缺少的字母)。

结果集:

Id

LastName

FirstName

Address

City

2

Bush

George

FifthAvenue

NewYork

例子2

接下来,我们希望从"Persons"表中选取居住在以"g"结尾的城市里的人:

我们可以使用下面的SELECT语句:

SELECT*FROMPersons

WHERECityLIKE'%g'

结果集:

Id

LastName

FirstName

Address

City

3

Carter

Thomas

ChanganStreet

Beijing

例子3

接下来,我们希望从"Persons"表中选取居住在包含"lon"的城市里的人:

我们可以使用下面的SELECT语句:

SELECT*FROMPersons

WHERECityLIKE'%lon%'

结果集:

Id

LastName

FirstName

Address

City

1

Adams

John

OxfordStreet

London

例子4

通过使用NOT关键字,我们可以从"Persons"表中选取居住在不包含"lon"的城市里的人:

我们可以使用下面的SELECT语句:

SELECT*FROMPersons

WHERECityNOTLIKE'%lon%'

结果集:

Id

LastName

FirstName

Address

City

2

Bush

George

FifthAvenue

NewYork

3

Carter

Thomas

ChanganStreet

Beijing

SQL通配符

∙PreviousPage

∙NextPage

在搜索数据库中的数据时,您可以使用SQL通配符。

SQL通配符

在搜索数据库中的数据时,SQL通配符可以替代一个或多个字符。

SQL通配符必须与LIKE运算符一起使用。

在SQL中,可使用以下通配符:

通配符

描述

%

替代一个或多个字符

_

仅替代一个字符

[charlist]

字符列中的任何单一字符

[^charlist]

或者

[!

charlist]

不在字符列中的任何单一字符

原始的表(用在例子中的):

Persons表:

Id

LastName

FirstName

Address

City

1

Adams

John

OxfordStreet

London

2

Bush

George

FifthAvenue

NewYork

3

Carter

Thomas

ChanganStreet

Beijing

使用%通配符

例子1

现在,我们希望从上面的"Persons"表中选取居住在以"Ne"开始的城市里的人:

我们可以使用下面的SELECT语句:

SELECT*FROMPersons

WHERECityLIKE'Ne%'

结果集:

Id

LastName

FirstName

Address

City

2

Bush

George

FifthAvenue

NewYork

例子2

接下来,我们希望从"Persons"表中选取居住在包含"lond"的城市里的人:

我们可以使用下面的SELECT语句:

SELECT*FROMPersons

WHERECityLIKE'%lond%'

结果集:

Id

LastName

FirstName

Address

City

1

Adams

John

OxfordStreet

London

使用_通配符

例子1

现在,我们希望从上面的"Persons"表中选取名字的第一个字符之后是"eorge"的人:

我们可以使用下面的SELECT语句:

SELECT*FROMPersons

WHEREFirstNameLIKE'_eorge'

结果集:

Id

LastName

FirstName

Address

City

2

Bush

George

FifthAvenue

NewYork

例子2

接下来,我们希望从"Persons"表中选取的这条记录的姓氏以"C"开头,然后是一个任意字符,然后是"r",然后是任意字符,然后是"er":

我们可以使用下面的SELECT语句:

SELECT*FROMPersons

WHERELastNameLIKE'C_r_er'

结果集:

Id

LastName

FirstName

Address

City

3

Carter

Thomas

ChanganStreet

Beijing

使用[charlist]通配符

例子1

现在,我们希望从上面的"Persons"表中选取居住的城市以"A"或"L"或"N"开头的人:

我们可以使用下面的SELECT语句:

SELECT*FROMPersons

WHERECityLIKE'[ALN]%'

结果集:

Id

LastName

FirstName

Address

City

1

Adams

John

OxfordStreet

London

2

Bush

George

FifthAvenue

NewYork

例子2

现在,我们希望从上面的"Persons"表中选取居住的城市不以"A"或"L"或"N"开头的人:

我们可以使用下面的SELECT语句:

SELECT*FROMPersons

WHERECityLIKE'[!

ALN]%'

结果集:

Id

LastName

FirstName

Address

City

3

Carter

Thomas

ChanganStreet

Beijing

SQLIN操作符

∙PreviousPage

∙NextPage

IN操作符

IN操作符允许我们在WHERE子句中规定多个值。

SQLIN语法

SELECTcolumn_name(s)

FROMtable_name

WHEREcolumn_nameIN(value1,value2,...)

原始的表(在实例中使用:

Persons表:

Id

LastName

FirstName

Address

City

1

Adams

John

OxfordStreet

London

2

Bush

George

FifthAvenue

NewYork

3

Carter

Thomas

ChanganStreet

Beijing

IN操作符实例

现在,我们希望从上表中选取姓氏为Adams和Carter的人:

我们可以使用下面的SELECT语句:

SELECT*FROMPersons

WHERELastNameIN('Adams','Carter')

结果集:

Id

LastName

FirstName

Address

City

1

Adams

John

OxfordStreet

London

3

Carter

Thomas

ChanganStreet

Beijing

SQLBETWEEN操作符

∙PreviousPage

∙NextPage

BETWEEN操作符在WHERE子句中使用,作用是选取介于两个值之间的数据范围。

BETWEEN操作符

操作符BETWEEN...AND会选取介于两个值之间的数据范围。

这些值可以是数值、文本或者日期。

SQLBETWEEN语法

SELECTcolumn_name(s)

FROMtable_name

WHEREcolumn_name

BETWEENvalue1ANDvalue2

原始的表(在实例中使用:

Persons表:

Id

LastName

FirstName

Address

City

1

Adams

John

OxfordStreet

London

2

Bush

George

FifthAvenue

NewYork

3

Carter

Thomas

ChanganStreet

Beijing

4

Gates

Bill

Xuanwumen10

Beijing

BETWEEN操作符实例

如需以字母顺序显示介于"Adams"(包括)和"Carter"(不包括)之间的人,请使用下面的SQL:

SELECT*FROMPersons

WHERELastName

BETWEEN'Adams'AND'Carter'

结果集:

Id

LastName

FirstName

Address

City

1

Adams

John

OxfordStreet

London

2

Bush

George

FifthAvenue

NewYork

重要事项:

不同的数据库对BETWEEN...AND操作符的处理方式是有差异的。

某些数据库会列出介于"Adams"和"Carter"之间的人,但不包括"Adams"和"Carter";某些数据库会列出介于"Adams"和"Carter"之间并包括"Adams"和"Carter"的人;而另一些数据库会列出介于"Adams"和"Carter"之间的人,包括"Adams",但不包括"Carter"。

所以,请检查你的数据库是如何处理BETWEEN....AND操作符的!

实例2

如需使用上面的例子显示范围之外的人,请使用NOT操作符:

SELECT*FROMPersons

WHERELastName

NOTBETWEEN'Adams'AND'Carter'

结果集:

Id

LastName

FirstName

Address

City

3

Carter

Thomas

ChanganStreet

Beijing

4

Gates

Bill

Xuanwumen10

Beijing

SQLAlias(别名)

∙PreviousPage

∙NextPage

通过使用SQL,可以为列名称和表名称指定别名(Alias)。

SQLAlias

表的SQLAlias语法

SELECTcolumn_name(s)

FROMtable_name

ASalias_name

列的SQLAlias语法

SELECTcolumn_nameASalias_name

FROMtable_name

Alias实例:

使用表名称别名

假设我们有两个表分别是:

"Persons"和"Product_Orders"。

我们分别为它们指定别名"p"和"po"。

现在,我们希望列出"JohnAdams"的所有定单。

我们可以使用下面的SELECT语句:

SELECTpo.OrderID,p.LastName,p.FirstName

FROMPersonsASp,Product_OrdersASpo

WHEREp.LastName='Adams'ANDp.FirstName='John'

不使用别名的SELECT语句:

SELECTProduct_Orders.OrderID,Persons.LastName,Persons.FirstName

FROMPersons,Product_Orders

WHEREPersons.LastName='Adams'ANDPersons.FirstName='John'

从上面两条SELECT语句您可以看到,别名使查询程序更易阅读和书写。

Alias实例:

使用一个列名别名

表Persons:

Id

LastName

FirstName

Address

City

1

Adams

John

OxfordStreet

London

2

Bush

George

FifthAvenue

NewYork

3

Carter

Thomas

ChanganStreet

Beijing

SQL:

SELECTLastNameASFamily,FirstNameASName

FROMPersons

结果:

Family

Name

Adams

John

Bush

George

Carter

Thomas

SQLJOIN

∙PreviousPage

∙NextPage

SQLjoin用于根据两个或多个表中的列之间的关系,从这些表中查询数据。

Join和Key

有时为了得到完整的结果,我们需要从两个或更多的表中获取结果。

我们就需要执行join。

数据库中的表可通过键将彼此联系起来。

主键(PrimaryKey)是一个列,在这个列中的每一行的值都是唯一的。

在表中,每个主键的值都是唯一的。

这样做的目的是在不重复每个表中的所有数据的情况下,把表间的数据交叉捆绑在一起。

请看"Persons"表:

Id_P

LastName

FirstName

Address

City

1

Adams

John

OxfordStreet

London

2

Bush

George

FifthAvenue

NewYork

3

Carter

Thomas

ChanganStreet

Beijing

请注意,"Id_P"列是Persons表中的的主键。

这意味着没有两行能够拥有相同的Id_P。

即使两个人的姓名完全相同,Id_P也可以区分他们。

接下来请看"Orders"表:

Id_O

OrderNo

Id_P

1

77895

3

2

44678

3

3

22456

1

4

24562

1

5

34764

65

请注意,"Id_O"列是Orders表中的的主键,同时,"Orders"表中的"Id_P"列用于引用"Persons"表中的人,而无需使用他们的确切姓名。

请留意,"Id_P"列把上面的两个表联系了起来。

引用两个表

我们可以通过引用两个表的方式,从两个表中获取数据:

谁订购了产品,并且他们订购了什么产品?

SELECTPersons.LastName,Persons.FirstName,Orders.OrderNo

FROMPersons,Orders

WHEREPersons.Id_P=Orders.Id_P

结果集:

LastName

FirstName

OrderNo

Adams

John

22456

Adams

John

24562

Carter

Thomas

77895

Carter

Thomas

44678

SQLJOIN-使用Join

除了上面的方法,我们也可以使用关键词JOIN来从两个表中获取数据。

如果我们希望列出所有人的定购,可以使用下面的SELECT语句:

SELECTPersons.LastName,Persons.FirstName,Orders.OrderNo

FROMPersons

INNERJOINOrders

ONPersons.Id_P=Orders.Id_P

ORDERBYPersons.LastName

结果集:

LastName

FirstName

OrderNo

Adams

John

22456

Adams

John

24562

Carter

Thomas

77895

Carter

Thomas

44678

不同的SQLJOIN

除了我们在上面的例子中使用的INNERJOIN(内连接),我们还可以使用其他几种连接。

下面列出了您可以使用的JOIN类型,以及它们之间的差异。

∙JOIN:

如果表中有至少一个匹配,则返回行

∙LEFTJOIN:

即使右表中没有匹配,也从左表返回所有的行

∙RIGHTJOIN:

即使左表中没有匹配,也从右表返回所有的行

∙FULLJOIN:

只要其中一个表中存在匹配,就返回行

SQLINNERJOIN关键字

∙PreviousPage

∙NextPage

SQLINNERJOIN关键字

在表中存在至少一个匹配时,INNERJOIN关键字返回行。

INNERJOIN关键字语法

SELECTcolumn_name(s)

FROMtable_name1

INNERJOINtable_name2

ONtable_name1.column_name=table_name2.column_name

注释:

INNERJOIN与JOIN是相同的。

原始的表(用在例子中的):

"Persons"表:

Id_P

LastName

FirstName

Address

City

1

Adams

John

OxfordStreet

London

2

Bush

George

FifthAvenue

NewYork

3

Carter

Thomas

ChanganStreet

Beijing

"Orders"表:

Id_O

OrderNo

Id_P

1

77895

3

2

44678

3

3

22456

1

4

24562

1

5

34764

65

内连接(INNERJOIN)实例

现在,我们希望列出所有人的定购。

您可以使用下面的SELECT语句:

SELECTPersons.LastName,Persons.FirstName,Orders.OrderNo

FROMPersons

INNERJOINOrders

ONPersons.Id_P=Orders.Id_P

ORDERBYPersons.LastName

结果集:

LastName

Fi

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 考试认证 > IT认证

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2