SqlServer语法.docx

上传人:b****4 文档编号:12102637 上传时间:2023-04-17 格式:DOCX 页数:59 大小:35.98KB
下载 相关 举报
SqlServer语法.docx_第1页
第1页 / 共59页
SqlServer语法.docx_第2页
第2页 / 共59页
SqlServer语法.docx_第3页
第3页 / 共59页
SqlServer语法.docx_第4页
第4页 / 共59页
SqlServer语法.docx_第5页
第5页 / 共59页
点击查看更多>>
下载资源
资源描述

SqlServer语法.docx

《SqlServer语法.docx》由会员分享,可在线阅读,更多相关《SqlServer语法.docx(59页珍藏版)》请在冰豆网上搜索。

SqlServer语法.docx

SqlServer语法

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

SELECTTOPnumber|percentcolumn_name(s)

FROMtable_name

SELECTTOP2*FROMPersons

SELECTTOP50PERCENT*FROMPersons

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

例子1

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

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

SELECT*FROMPersons

WHERECityLIKE'N%'

提示:

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

例子2

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

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

SELECT*FROMPersons

WHERECityLIKE'%g'

例子3

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

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

SELECT*FROMPersons

WHERECityNOTLIKE'%lon%'

SQL通配符

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

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

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

通配符

描述

%

替代一个或多个字符

_

仅替代一个字符

[charlist]

字符列中的任何单一字符

[^charlist]

或者

[!

charlist]

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

例子1

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

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

SELECT*FROMPersons

WHERECityLIKE'[!

ALN]%'

IN操作符

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

SQLIN语法

SELECTcolumn_name(s)

FROMtable_name

WHEREcolumn_nameIN(value1,value2,...)

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

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

SELECT*FROMPersons

WHERELastNameIN('Adams','Carter')

BETWEEN操作符

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

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

SQLBETWEEN语法

SELECTcolumn_name(s)

FROMtable_name

WHEREcolumn_name

BETWEENvalue1ANDvalue2

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

SELECT*FROMP

ersons

WHERELastName

BETWEEN'Adams'AND'Carter'

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

SELECT*FROMPersons

WHERELastName

NOTBETWEEN'Adams'AND'Carter'

SQLAlias

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

表的SQLAlias语法

SELECTcolumn_name(s)

FROMtable_name

ASalias_name

列的SQLAlias语法

SELECTcolumn_nameASalias_name

FROMtable_name

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

"Persons"和"Product_Orders"。

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

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

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

SELECTpo.OrderID,p.LastName,p.FirstName

FROMPersonsASp,Product_OrdersASpo

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

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用于根据两个或多个表中的列之间的关系,从这些表中查询数据。

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

SQLLEFTJOIN关键字

LEFTJOIN关键字会从左表(table_name1)那里返回所有的行,即使在右表(table_name2)中没有匹配的行。

LEFTJOIN关键字语法

SELECTcolumn_name(s)

FROMtable_name1

LEFTJOINtable_name2

ONtable_name1.column_name=table_name2.column_name

注释:

在某些数据库中,LEFTJOIN称为LEFTOUTERJOIN。

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

"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

左连接(LEFTJOIN)实例

现在,我们希望列出所有的人,以及他们的定购-如果有的话。

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

SELECTPersons.LastName,Persons.FirstName,Orders.OrderNo

FROMPersons

LEFTJOINOrders

ONPersons.Id_P=Orders.Id_P

ORDERBYPersons.LastName

结果集:

LastName

FirstName

OrderNo

Adams

John

22456

Adams

John

24562

Carter

Thomas

77895

Carter

Thomas

44678

Bush

George

 

SQLRIGHTJOIN关键字

RIGHTJOIN关键字会右表(table_name2)那里返回所有的行,即使在左表(table_name1)中没有匹配的行。

RIGHTJOIN关键字语法

SELECTcolumn_name(s)

FROMtable_name1

RIGHTJOINtable_name2

ONtable_name1.column_name=table_name2.column_name

注释:

在某些数据库中,RIGHTJOIN称为RIGHTOUTERJOIN。

右连接(RIGHTJOIN)实例

现在,我们希望列出所有的定单,以及定购它们的人-如果有的话。

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

SELECTPersons.LastName,Persons.FirstName,Orders.OrderNo

FROMPersons

RIGHTJOINOrders

ONPersons.Id_P=Orders.Id_P

ORDERBYPersons.LastName

结果集:

LastName

FirstName

OrderNo

Adams

John

22456

Adams

John

24562

Carter

Thomas

77895

Carter

Thomas

44678

 

 

34764

RIGHTJOIN关键字会从右表(Orders)那里返回所有的行,即使在左表(Persons)中没有匹配的行。

SQLFULLJOIN关键字

只要其中某个表存在匹配,FULLJOIN关键字就会返回行。

FULLJOIN关键字语法

SELECTcolumn_name(s)

FROMtable_name1

FULLJOINtable_name2

ONtable_name1.column_name=table_name2.column_name

注释:

在某些数据库中,FULLJOIN称为FULLOUTERJOIN。

全连接(FULLJOIN)实例

现在,我们希望列出所有的人,以及他们的定单,以及所有的定单,以及定购它们的人。

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

SELECTPersons.LastName,Persons.FirstName,Orders.OrderNo

FROMPersons

FULLJOINOrders

ONPersons.Id_P=Orders.Id_P

ORDERBYPersons.LastName

结果集:

LastName

FirstName

OrderNo

Adams

John

22456

Adams

John

24562

Carter

Thomas

77895

Carter

Thomas

44678

Bush

George

 

 

 

34764

FULLJOIN关键字会从左表(Persons)和右表(Orders)那里返回所有的行。

如果"Persons"中的行在表"Orders"中没有匹配,或者如果"Orders"中的行在表"Persons"中没有匹配,这些行同样会列出。

SQLUNION操作符

UNION操作符用于合并两个或多个SELECT语句的结果集。

请注意,UNION内部的SELECT语句必须拥有相同数量的列。

列也必须拥有相似的数据类型。

同时,每条SELECT语句中的列的顺序必须相同。

SQLUNION语法

SELECTcolumn_name(s)FROMtable_name1

UNION

SELECTcolumn_name(s)FROMtable_name2

注释:

默认地,UNION操作符选取不同的值。

如果允许重复的值,请使用UNIONALL。

SQLUNIONALL语法

SELECTcolumn_name(s)FROMtable_name1

UNIONALL

SELECTcolumn_name(s)FROMtable_name2

另外,UNION结果集中的列名总是等于UNION中第一个SELECT语句中的列名。

下面的例子中使用的原始表:

Employees_China:

E_ID

E_Name

01

Zhang,Hua

02

Wang,Wei

03

Carter,Thomas

04

Yang,Ming

Employees_USA:

E_ID

E_Name

01

Adams,John

02

Bush,George

03

Carter,Thomas

04

Gates,Bill

使用UNION命令

实例

列出所有在中国和美国的不同的雇员名:

SELECTE_NameFROMEmployees_China

UNION

SELECTE_NameFROMEmployees_USA

结果

E_Name

Zhang,Hua

Wang,Wei

Carter,Thomas

Yang,Ming

Adams,John

Bush,George

Gates,Bill

注释:

这个命令无法列出在中国和美国的所有雇员。

在上面的例子中,我们有两个名字相同的雇员,他们当中只有一个人被列出来了。

UNION命令只会选取不同的值。

UNIONALL

UNIONALL命令和UNION命令几乎是等效的,不过UNIONALL命令会列出所有的值。

SQLStatement1

UNIONALL

SQLStatement2

使用UNIONALL命令

实例:

列出在中国和美国的所有的雇员:

SELECTE_NameFROMEmployees_China

UNIONALL

SELECTE_NameFROMEmployees_USA

结果

E_Name

Zhang,Hua

Wang,Wei

Carter,Thomas

Yang,Ming

Adams,John

Bush,George

Carter,Thomas

Gates,Bill

SQLSELECTINTO语句可用于创建表的备份复件。

SELECTINTO语句

SELECTINTO语句从一个表中选取数据,然后把数据插入另一个表中。

SELECTINTO语句常用于创建表的备份复件或者用于对记录进行存档。

SQLSELECTINTO语法

您可以把所有的列插入新表:

SELECT*

INTOnew_table_name[INexternaldatabase]

FROMold_tablename

或者只把希望的列插入新表:

SELECTcolumn_name(s)

INTOnew_table_name[INexternaldatabase]

FROMold_tablename

SQLSELECTINTO实例-制作备份复件

下面的例子会制作"Persons"表的备份复件:

SELECT*

INTOPersons_backup

FROMPersons

IN子句可用于向另一个数据库中拷贝表:

SELECT*

INTOPersonsIN'Backup.mdb'

FROMPersons

如果我们希望拷贝某些域,可以在SELECT语句后列出这些域:

SELECTLastName,FirstName

INTOPersons_backup

FROMPersons

SQLSELECTINTO实例-带有WHERE子句

我们也可以添加WHERE子句。

下面的例子通过从"Persons"表中提取居住在"Beijing"的人的信息,创建了一个带有两个列的名为"Persons_backup"的表:

SELECTLastName,Firstname

INTOPersons_backup

FROMPersons

WHERECity='Beijing'

SQLSELECTINTO实例-被连接的表

从一个以上的表中选取数据也是可以做到的。

下面的例子会创建一个名为"Persons_Order_Backup"的新表,其中包含了从Persons和Orders两个表中取得的信息:

SELECTPersons.LastName,Orders.OrderNo

INTOPersons_Order_Backup

FROMPersons

INNERJOINOrders

ONPersons.Id_P=Orders.Id_P

CREATEDATABASE语句

CREATEDATABASE用于创建数据库。

SQLCREATEDATABASE语法

CREATEDATABASEdatabase_name

CREATETABLE语句

CREATETABLE语句用于创建数据库中的表。

SQLCREATETABLE语法

CREATETABLE表名称

列名称1数据类型,

列名称2数据类型,

列名称3数据类型,

....

数据类型(data_type)规定了列可容纳何种数据类型。

下面的表格包含了SQL中最常用的数据类型:

数据类型

描述

∙integer(size)

∙int(size)

∙smallint(size)

∙tinyint(size)

仅容纳整数。

在括号内规定数字的最大位数。

∙decimal(size,d)

∙numeric(size,d)

容纳带有小数的数字。

"size"规定数字的最大位数。

"d"规定小数点右侧的最大位数。

char(size)

容纳固定长度的字符串(可容纳字母、数字以及特殊字符)。

在括号中规定字符串的长度。

varchar(size)

容纳可变长度的字符串(可容纳字母、数字以及特殊的字符)。

在括号中规定字符串的最大长度。

date(yyyymmdd)

容纳日期。

SQLCREATETABLE实例

本例演示如何创建名为"Person"的表。

该表包含5个列,列名分别是:

"Id_P"、"LastName"、"FirstName"、"Address"以及"City":

CREATETABLEPersons

Id_Pint,

LastNamevarchar(255),

FirstNamevarchar(255),

Addressvarchar(255),

Cityvarchar(255)

SQL约束(Constraints)

约束用于限制加入表的数据的类型。

可以在创建表时规定约束(通过CREATETABLE语句),或者在表创建之后也可以(通过ALTERTABLE语句)。

我们将主要探讨以下几种约束:

∙NOTNULL

∙UNIQUE

∙PRIMARYKEY

∙FOREIGNKEY

∙CHECK

∙DEFAULT

SQLNOTNULL约束

NOTNULL约束强制列不接受NULL值。

NOTNULL约束强制字段始终包含值。

这意味着,如果不向字段添加值,就无法插入新纪录或者更新记录。

下面的SQL语句强制"Id_P"列和"LastName"列不接受NULL值:

CREATETABLEPersons

Id_PintNOTNULL,

LastNamevarchar(255)NOTNULL,

FirstNamevarchar(255),

Addressvarchar(255),

Cityvarchar(255)

SQLUNIQUE约束

UNIQUE约束唯一标识数据库表中的每条记录。

UNIQUE和PRIMARYKEY约束均为列或列集合提供了唯一性的保证。

PRIMARYKEY拥有自动定义的UNIQUE约束。

请注意,每个表可以有多个UNIQUE约束,但是每个表只能有一个PRIMARYKEY约束。

下面的SQL在"Persons"表创建时在"Id_P"列创建UNIQUE约束:

CREATETABLEPersons

Id_PintNOTNULLUNIQUE,

LastNa

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

当前位置:首页 > PPT模板 > 商务科技

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1