2SQL 高级教程SQL TOPSQL CONSTRAINTSWord文件下载.docx
《2SQL 高级教程SQL TOPSQL CONSTRAINTSWord文件下载.docx》由会员分享,可在线阅读,更多相关《2SQL 高级教程SQL TOPSQL CONSTRAINTSWord文件下载.docx(57页珍藏版)》请在冰豆网上搜索。
Adams
John
OxfordStreet
London
2
Bush
George
FifthAvenue
NewYork
3
Carter
Thomas
ChanganStreet
Beijing
4
Obama
Barack
PennsylvaniaAvenue
Washington
SQLTOP实例
现在,我们希望从上面的"
Persons"
表中选取头两条记录。
我们可以使用下面的SELECT语句:
SELECTTOP2*FROMPersons
结果:
SQLTOPPERCENT实例
表中选取50%的记录。
SELECTTOP50PERCENT*FROMPersons
LIKE操作符用于在WHERE子句中搜索列中的指定模式。
LIKE操作符
SQLLIKE操作符语法
WHEREcolumn_nameLIKEpattern
LIKE操作符实例
例子1
表中选取居住在以"
N"
开始的城市里的人:
SELECT*FROMPersons
WHERECityLIKE'
N%'
提示:
"
%"
可用于定义通配符(模式中缺少的字母)。
结果集:
例子2
接下来,我们希望从"
g"
结尾的城市里的人:
%g'
例子3
表中选取居住在包含"
lon"
的城市里的人:
%lon%'
例子4
通过使用NOT关键字,我们可以从"
表中选取居住在不包含
WHERECityNOTLIKE'
在搜索数据库中的数据时,您可以使用SQL通配符。
SQL通配符
在搜索数据库中的数据时,SQL通配符可以替代一个或多个字符。
SQL通配符必须与LIKE运算符一起使用。
在SQL中,可使用以下通配符:
通配符
描述
%
替代一个或多个字符
_
仅替代一个字符
[charlist]
字符列中的任何单一字符
[^charlist]
或者
[!
charlist]
不在字符列中的任何单一字符
使用%通配符
Ne"
Ne%'
lond"
%lond%'
使用_通配符
表中选取名字的第一个字符之后是"
eorge"
的人:
WHEREFirstNameLIKE'
_eorge'
表中选取的这条记录的姓氏以"
C"
开头,然后是一个任意字符,然后是"
r"
,然后是任意字符,然后是"
er"
:
WHERELastNameLIKE'
C_r_er'
使用[charlist]通配符
表中选取居住的城市以"
A"
或"
L"
开头的人:
[ALN]%'
表中选取居住的城市不以
ALN]%'
IN操作符
IN操作符允许我们在WHERE子句中规定多个值。
SQLIN语法
WHEREcolumn_nameIN(value1,value2,...)
原始的表(在实例中使用:
)
IN操作符实例
现在,我们希望从上表中选取姓氏为Adams和Carter的人:
WHERELastNameIN('
Adams'
'
Carter'
BETWEEN操作符在WHERE子句中使用,作用是选取介于两个值之间的数据范围。
BETWEEN操作符
操作符BETWEEN...AND会选取介于两个值之间的数据范围。
这些值可以是数值、文本或者日期。
SQLBETWEEN语法
WHEREcolumn_name
BETWEENvalue1ANDvalue2
Gates
Bill
Xuanwumen10
BETWEEN操作符实例
如需以字母顺序显示介于"
Adams"
(包括)和"
Carter"
(不包括)之间的人,请使用下面的SQL:
WHERELastName
BETWEEN'
AND'
重要事项:
不同的数据库对BETWEEN...AND操作符的处理方式是有差异的。
某些数据库会列出介于"
和"
之间的人,但不包括"
;
之间并包括"
的人;
而另一些数据库会列出介于"
之间的人,包括"
,但不包括"
。
所以,请检查你的数据库是如何处理BETWEEN....AND操作符的!
实例2
如需使用上面的例子显示范围之外的人,请使用NOT操作符:
NOTBETWEEN'
通过使用SQL,可以为列名称和表名称指定别名(Alias)。
SQLAlias
表的SQLAlias语法
ASalias_name
列的SQLAlias语法
SELECTcolumn_nameASalias_name
Alias实例:
使用表名称别名
假设我们有两个表分别是:
Product_Orders"
。
我们分别为它们指定别名"
p"
po"
现在,我们希望列出"
JohnAdams"
的所有定单。
SELECTpo.OrderID,p.LastName,p.FirstName
FROMPersonsASp,Product_OrdersASpo
WHEREp.LastName='
ANDp.FirstName='
John'
不使用别名的SELECT语句:
SELECTProduct_Orders.OrderID,Persons.LastName,Persons.FirstName
FROMPersons,Product_Orders
WHEREPersons.LastName='
ANDPersons.FirstName='
从上面两条SELECT语句您可以看到,别名使查询程序更易阅读和书写。
使用一个列名别名
表Persons:
SQL:
SELECTLastNameASFamily,FirstNameASName
Family
Name
SQLjoin用于根据两个或多个表中的列之间的关系,从这些表中查询数据。
Join和Key
有时为了得到完整的结果,我们需要从两个或更多的表中获取结果。
我们就需要执行join。
数据库中的表可通过键将彼此联系起来。
主键(PrimaryKey)是一个列,在这个列中的每一行的值都是唯一的。
在表中,每个主键的值都是唯一的。
这样做的目的是在不重复每个表中的所有数据的情况下,把表间的数据交叉捆绑在一起。
请看"
表:
Id_P
请注意,"
Id_P"
列是Persons表中的的主键。
这意味着没有两行能够拥有相同的Id_P。
即使两个人的姓名完全相同,Id_P也可以区分他们。
接下来请看"
Orders"
Id_O
OrderNo
77895
44678
22456
24562
5
34764
65
Id_O"
列是Orders表中的的主键,同时,"
表中的"
列用于引用"
表中的人,而无需使用他们的确切姓名。
请留意,"
列把上面的两个表联系了起来。
引用两个表
我们可以通过引用两个表的方式,从两个表中获取数据:
谁订购了产品,并且他们订购了什么产品?
SELECTPersons.LastName,Persons.FirstName,Orders.OrderNo
FROMPersons,Orders
WHEREPersons.Id_P=Orders.Id_P
SQLJOIN-使用Join
除了上面的方法,我们也可以使用关键词JOIN来从两个表中获取数据。
如果我们希望列出所有人的定购,可以使用下面的SELECT语句:
INNERJOINOrders
ONPersons.Id_P=Orders.Id_P
ORDERBYPersons.LastName
不同的SQLJOIN
除了我们在上面的例子中使用的INNERJOIN(内连接),我们还可以使用其他几种连接。
下面列出了您可以使用的JOIN类型,以及它们之间的差异。
∙JOIN:
如果表中有至少一个匹配,则返回行
∙LEFTJOIN:
即使右表中没有匹配,也从左表返回所有的行
∙RIGHTJOIN:
即使左表中没有匹配,也从右表返回所有的行
∙FULLJOIN:
只要其中一个表中存在匹配,就返回行
SQLINNERJOIN关键字
在表中存在至少一个匹配时,INNERJOIN关键字返回行。
INNERJOIN关键字语法
FROMtable_name1
INNERJOINtable_name2
ONtable_name1.column_name=table_name2.column_name
INNERJOIN与JOIN是相同的。
内连接(INNERJOIN)实例
现在,我们希望列出所有人的定购。
您可以使用下面的SELECT语句:
ONPersons.Id_P=Orders.Id_P
INNERJOIN关键字在表中存在至少一个匹配时返回行。
如果"
中的行在"
中没有匹配,就不会列出这些行。
SQLLEFTJOIN关键字
LEFTJOIN关键字会从左表(table_name1)那里返回所有的行,即使在右表(table_name2)中没有匹配的行。
LEFTJOIN关键字语法
LEFTJOINtable_name2
ONtable_name1.