SQL语句教程采用Word格式文档下载.docx

上传人:b****5 文档编号:19919561 上传时间:2023-01-12 格式:DOCX 页数:40 大小:1.16MB
下载 相关 举报
SQL语句教程采用Word格式文档下载.docx_第1页
第1页 / 共40页
SQL语句教程采用Word格式文档下载.docx_第2页
第2页 / 共40页
SQL语句教程采用Word格式文档下载.docx_第3页
第3页 / 共40页
SQL语句教程采用Word格式文档下载.docx_第4页
第4页 / 共40页
SQL语句教程采用Word格式文档下载.docx_第5页
第5页 / 共40页
点击查看更多>>
下载资源
资源描述

SQL语句教程采用Word格式文档下载.docx

《SQL语句教程采用Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《SQL语句教程采用Word格式文档下载.docx(40页珍藏版)》请在冰豆网上搜索。

SQL语句教程采用Word格式文档下载.docx

♦表格处理:

SQL如何被用来处理数据库中的表格。

♦进阶SQL:

介绍SQL进阶概念,以及如何用SQL来执行一些较复杂的运算。

♦SQL语法:

这一页列出所有在这个教材中被提到的SQL语法。

对于每一个指令,我们将会先列出及解释这个指令的语法,然后用一个例子来让读者了解这个指令是如何被运用的。

当您读完了这个网站的所有教材后,您将对SQL的语法会有一个大致上的了解。

另外,您将能够正确地运用SQL来由数据库中获取信息。

笔者本身的经验是,虽然要对SQL有很透彻的了解并不是一朝一夕可以完成的,可是要对SQL有个基本的了解并不难。

希望在看完这个网站后,您也会有同样的想法。

 

修改表名:

alter 

table 

test 

rename 

test1;

--修改表名 

添加表列:

add 

column 

name 

varchar(10);

--添加表列

删除表列:

drop 

name;

--删除表列 

修改表列类型:

modify 

address 

char(10) 

--修改表列类型或alter 

change 

char(40) 

是用来做什么的呢?

一个最常用的方式是将资料从数据库中的表格内选出。

从这一句回答中,我们马上可以看到两个关键字:

从(FROM)数据库中的表格内选出(SELECT)。

(表格是一个数据库内的结构,它的目的是储存资料。

在表格处理这一部分中,我们会提到如何使用SQL来设定表格。

)我们由这里可以看到最基本的SQL架构:

SELECT"

栏位名"

FROM"

表格名"

我们用以下的例子来看看实际上是怎么用的。

假设我们有以下这个表格:

store_name

Sales

Date

LosAngeles

$1500

Jan-05-1999

SanDiego

$250

Jan-07-1999

$300

Jan-08-1999

Boston

$700

更改上表中的第1列的列名:

address1 

varchar(30)--修改表列名 

更改列名后如下:

若要选出所有的店名(store_Name),我们就打入:

SELECTstore_nameFROMStore_Information

结果:

我们一次可以读取好几个栏位,也可以同时由好几个表格中选资料。

SELECT指令让我们能够读取表格中一个或数个栏位的所有资料。

这将把所有的资料都抓出,无论资料值有无重复。

在资料处理中,我们会经常碰到需要找出表格内的不同资料值的情况。

换句话说,我们需要知道这个表格/栏位内有哪些不同的值,而每个值出现的次数并不重要。

这要如何达成呢?

在SQL中,这是很容易做到的。

我们只要在SELECT后加上一个DISTINCT就可以了。

DISTINCT的语法如下:

SELECTDISTINCT"

FROM"

举例来说,若要在以下的表格,Store_Information,找出所有不同的店名时,

Store_Information表格

我们就键入,

SELECTDISTINCTstore_nameFROMStore_Information

我们并不一定每一次都要将表格内的资料都完全抓出。

在许多时候,我们会需要选择性地抓资料。

就我们的例子来说,我们可能只要抓出营业额超过$1,000的资料。

要做到这一点,我们就需要用到WHERE这个指令。

这个指令的语法如下:

WHERE"

条件"

若我们要由以下的表格抓出营业额超过$1,000的资料,

SELECTstore_name

FROMStore_Information

WHERESales>

1000

store_nameLosAngeles

ANDOR

在上一页中,我们看到WHERE指令可以被用来由表格中有条件地选取资料。

这个条件可能是简单的(像上一页的例子),也可能是复杂的。

复杂条件是由二或多个简单条件透过AND或是OR的连接而成。

一个SQL语句中可以有无限多个简单条件的存在。

复杂条件的语法如下:

WHERE"

简单条件"

{[AND|OR]"

}+

{}+代表{}之内的情况会发生一或多次。

在这里的意思就是AND加简单条件及OR加简单条件的情况可以发生一或多次。

另外,我们可以用()来代表条件的先后次序。

举例来说,我们若要在Store_Information表格中选出所有Sales高于$1,000或是Sales

在$500及$275之间的资料的话,

SanFrancisco

OR(Sales<

500ANDSales>

275)

store_nameLosAngelesSanFrancisco

IN

SELECT*FROMstore_informationWHEREstore_nameIN('

LosAngeles'

'

SanDiego'

执行结果如下:

SELECT*FROMstore_informationWHEREstore_name='

ORstore_name='

Between

SELECT*FROMstore_informationWHEREdatetBETWEEN'

2015-07-06'

AND'

2015-07-10'

SELECT*FROMstore_informationWHEREsalesBETWEEN400AND2000

LIKE

LIKE是另一个在WHERE子句中会用到的指令。

基本上,LIKE能让我们依据一个模式(pattern)来找出我们要的资料.相对来说,在运用IN的时候,我们完全地知道我们需要的条件;

在运用BETWEN的时候,我们则是列出一个范围。

LIKE的语法如下:

SELECT“栏位名“FROM“表格名”WHERE“栏位名”LIKE{模式}

{模式}经常包括野卡(wildcard)。

SELECT*FROMstore_informationWHEREstore_nameLIKE'

%AN%'

ORDERBY

到目前为止,我们已经学到如何藉由SELECT及WHERE这两个指令将资料由表格中抓出。

不过我们尚未提到这些资料要如何排练。

这其实是一个很重要的问题。

事实上,我们经常需要能够将抓出的资料做一个有联系的显示。

这可能是由小往大(ascending)或是由大往小(descending)。

在这种情况下,我们就可以运用ORDERBY这个指令来达到我们的目的.

ORDERBY语法如下:

SELECT“栏位名”FROM“表格名”[WHERE“条件”]ORDERBY“栏位名”[ASC,DESC]

SELECTstore_name,sales,datetFROMstore_informationORDERBYsalesDESC

SELECTstore_name,sales,datetFROMstore_informationORDERBY3DESC

既然数据可中有许多资料都是以数字的型态存在,一个很重要的用途就是对这些数字做一些运算,例如将它们总会起来,或是找出它们的平均值。

SQL提供了一些函数如下:

AVG(平均)

COUNT(计数)

MAX(最大值)

MIN(最小值)

SUM(总合)

运用函数的语法是:

SELECT“函数名”(“栏位名”)FROM“表格名”

例如:

SELECTCOUNT(sales)FROMstore_information

SELECTSUM(sales)FROMstore_information

SELECTMAX(sales)FROMstore_information

SELECTMIN(sales)FROMstore_information

SELECTAVG(sales)FROMstore_information

COUNT

在上一页有提到,COUNT是函数之一。

由于它的使用广泛,我们在这里特别提出来讨论。

基本上,COUNT让我们能够数出表格中有多少笔资料被选出来。

它的语法是:

SELECTCOUNT(“栏位名”)FROM“表格名”

SELECTCOUNT(store_name)FROMstore_informationWHEREstore_nameISNOTNULL

GROUPBY

我们现在回到函数上。

记得我们用SUM这个指令来计算出所有的sales(营业额)吧!

如果我们的需求变成是要算出每一间店(store_name)的营业额,那么怎么算呢?

这个情况下,我们要做到两件事:

第一,我们对于store_name及sales这两个栏位都要选出。

第二我们需要确认所有的sales都要依照各个store_name来分开算。

这个语法为:

SELECT“栏位1”,SUM(“栏位2”)FROM“表格名”GROUPBY“栏位1”

SELECTstore_name,SUM(sales)FROMstore_informationGROUPBYstore_name

HAVING

那我们如何对函数产生的值来设定条件呢?

举例来说,我们可能只需要知道哪些店的营业额有超过$1500。

在这个情况下,我们不能使用WHERE的指令。

那要怎么办呢?

很幸运地,SQL有提供一个HAVING的指令,而我们就可以用这个指令来达到这个目标。

HAVING子句通常是在一个SQL句子的最后,一个含有HAVING子句的SQL并不一定要包含GROUPBY子句。

HAVING子句的语法如下:

SELECT“栏位1”,SUM(“栏位2”)FROM“表格名”GROUPBY“栏位1”HAVING(函数条件)

SELECTstore_name,SUM(sales)FROMstore_informationGROUPBYstore_nameHAVINGSUM(sales)>

1500

ALIAS

接下来,我们讨论alias(别名)在SQL上的用处。

最常用到的别名有两种:

栏位别名及表格别名。

简单地来说,栏位别名的目的是为了让SQL产生的结果易读。

在之前的例子中,每当我们有营业额总合时,栏位名都是SUM(sales)。

虽然在这个情况下没有什么问题,可是如果这个栏位不是一个简单的总合,而是一个复杂的计算,那栏位名就没有这么易懂了。

若我们用栏位别名的话,就可以确认结果中的栏位名是简单易懂的。

第二种别名是表格别名。

要给一个表格取一个别名,只要在FROM子句中的表格名后空一格,然后再列出要用的表格别名就可以了。

这在我们要用SQL由数个不同的表格中获取资料时是很方便的。

这一点我们在之后谈到连接(join)时会看到.

我们先来看一下栏位别名合表格别名的语法:

SELECT“表格别名”“栏位1”“栏位别名”FROM“表格名”“表格别名”

SELECTA1.store_namestore,SUM(A1.sales)"

Totalsales"

FROMstore_informationA1GROUPBYA1.store_name

SELECTA1.region_name,SUM(A2.sales)salesFROMgeographyA1,store_informationA2

WHEREA1.store_name=A2.store_name

GROUPBYA1.region_name

删掉上面SQL语句中的sales

SELECTA1.region_name,SUM(A2.sales)FROMgeographyA1,store_informationA2

SELECTA1.region_nameregion,SUM(A2.sales)salesFROMgeographyA1,store_informationA2

没有别名的情况:

SELECTgeography.region_name,SUM(store_information.sales)FROMgeography,store_information

WHEREgeography.store_name=store_information.store_name

GROUPBYgeography.region_name

有时候,我们有需要将由不同栏位获得的资料串联在一起,每种数据库都有提供方法来达到这个目的:

MySQL:

CONCAT()

Oracle:

CONCAT(),||

SQLServer:

+

CONCAT()的语法如下:

CONCAT(字符串1,字符串2,字符串3,...):

将字符串1、字符串2、字符串3,等字符串连在一起。

请注意,Oracle的CONCATO()只允许两个参数;

换言之,一次只能将两个字符串串连起来。

不过,在Oracle中,我们可以用’||’来一次串连多个字符串。

表geography

region_name

Store_name

East

NewYork

West

表store_information

sales

datat

2015-07-05

250

2015-07-07

300

2015-07-08

700

MySQL/Oracle

SELECTCONCAT(region_name,store_name)FROMgeographyWHEREstore_name='

Boston'

;

SQL中的substring函数是用来抓住一个栏位资料中的其中一部分。

这个函数的名称在不同的数据库中不完全一样:

SUBSTR(),SUBSTRING()

SUBSTR()

SUBSTRING()

最常用到的方式如下(我们用SUBSTR()为例):

SUBSTR(str,pos):

由<

str>

中,选出所有从第<

pos>

位置开始的字符。

请注意,这个语法不适用于SQLServer上。

SUBSTR(str,pos,len):

中的第<

位置开始,选出接下去的<

len>

格字符。

假设我们有以下的表格:

例1:

SELECTSUBSTR(store_name,3)FROMgeographyWHEREstore_name='

例2:

SELECTSUBSTR(store_name,2,4)FROMgeographyWHEREstore_name='

SQL中的TRIM函数是用来移除掉一个字符串中的字头或字尾。

最常见的用途是移除字首或字尾的空白。

这个函数在不同的数据库中有不同的名称:

TRIM(),RTRIM(),LTRIM()

RTRIM(),LTRIM()

各种trim函数的语法如下:

TRIM([[位置][要移除的字符串]FROM]字符串):

[位置]的可能值为LEADING(起头),

TRAILING(结尾),orBOTH(起头及结尾)。

这个函数将把[要移除的字符串]从字符串的起

头、结尾,或是起头及结尾移除。

如果我们没有列出[要移除的字符串]是什么的话,那空

白就会被移除。

LTRIM(字符串):

将所有字符串起头的空白移除。

RTRIM(字符串):

将所有字符串结尾的空白移除。

例1:

SELECTTRIM('

Sample'

);

'

Sample'

例2:

SELECTLTRIM('

Sample'

例3:

SELECTRTRIM('

Sample'

表格是数据库中储存资料的基本架构。

在绝大部份的情况下,数据库厂商不可能知道您需要

如何储存您的资料,所以通常您会需要自己在数据库中建立表格。

虽然许多数据库工具可以

让您在不需用到SQL的情况下建立表格,不过由于表格是一个最基本的架构,我们决定包

括CREATETABLE的语法在这个网站中。

在我们跳入CREATETABLE的语法之前,我们最好先对表格这个东西有些多一点的了解。

表格被分为栏位(column)及列位(row)。

每一列代表一笔资料,而每一栏代表一笔资料的

一部份。

举例来说,如果我们有一个记载顾客资料的表格,那栏位就有可能包括姓、名、地

址、城市、国家、生日‧‧‧等等。

当我们对表格下定义时,我们需要注明栏位的标题,以及那

个栏位的资料种类。

那,资料种类是什么呢?

资料可能是以许多不同的形式存在的。

它可能是一个整数(例如

1),、一个实数(例如0.55)、一个字符串(例如'

sql'

)、一个日期/时间(例如'

2000-JAN-25

03:

22:

22'

)、或甚至是以二进法(binary)的状态存在。

当我们在对一个表格下定义时,我们

需要对每一个栏位的资料种类下定义。

(例如'

姓'

这个栏位的资料种类是char(50)──代

表这是一个50个字符的字符串)。

我们需要注意的一点是不同的数据库有不同的资料种类,

所以在对表格做出定义之前最好先参考一下数据库本身的说明。

CREATETABLE的语法是:

CREATETABLE"

("

栏位1"

"

栏位1资料种类"

"

栏位2"

栏位2资料种类"

...)

若我们要建立我们上面提过的顾客表格,我们就键入以下的SQL:

CREATETABLEcustomer

(First_Namechar(50),

Last_Namechar(50),

Addresschar

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

当前位置:首页 > 法律文书 > 调解书

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

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