SQL教程.docx
- 文档编号:23355840
- 上传时间:2023-05-16
- 格式:DOCX
- 页数:114
- 大小:58.98KB
SQL教程.docx
《SQL教程.docx》由会员分享,可在线阅读,更多相关《SQL教程.docx(114页珍藏版)》请在冰豆网上搜索。
SQL教程
SQL教程
SQL简介4
SQL语法5
SQLSELECT语句6
SQLSELECTDISTINCT语句8
SQLWHERE子句9
SQLAND&OR运算符11
SQLORDERBY子句13
SQLINSERTINTO语句15
SQLUPDATE语句17
SQLDELETE语句18
SQLTOP子句19
SQLLIKE操作符21
SQL通配符23
SQLIN操作符26
SQLBETWEEN操作符27
SQLAlias(别名)29
SQLJOIN30
SQLINNERJOIN关键字32
SQLLEFTJOIN关键字34
SQLRIGHTJOIN关键字35
SQLFULLJOIN关键字37
SQLUNION和UNIONALL操作符39
SQLSELECTINTO语句42
SQLCREATEDATABASE语句43
SQLCREATETABLE语句44
SQL约束(Constraints)45
SQLNOTNULL约束46
SQLUNIQUE约束46
SQLPRIMARYKEY约束48
SQLFOREIGNKEY约束50
SQLCHECK约束53
SQLDEFAULT约束55
SQLCREATEINDEX语句56
SQL撤销索引、表以及数据库57
SQLALTERTABLE语句58
SQLAUTOINCREMENT字段60
SQLVIEW(视图)63
SQLDate函数65
SQLNULL值67
SQLNULL函数68
SQL数据类型70
SQL服务器-RDBMS77
SQL函数78
SQLAVG函数81
SQLCOUNT()函数82
SQLFIRST()函数84
SQLLAST()函数85
SQLMAX()函数86
SQLMIN()函数87
SQLSUM()函数88
SQLGROUPBY语句89
SQLHAVING子句91
SQLUCASE()函数93
SQLLCASE()函数94
SQLMID()函数95
SQLLEN()函数96
SQLROUND()函数97
SQLNOW()函数98
SQLFORMAT()函数99
SQL快速参考100
SQL简介
∙SQL教程
∙SQL语法
SQL是用于访问和处理数据库的标准的计算机语言。
什么是SQL?
∙SQL指结构化查询语言
∙SQL使我们有能力访问数据库
∙SQL是一种ANSI的标准计算机语言
编者注:
ANSI,美国国家标准化组织
SQL能做什么?
∙SQL面向数据库执行查询
∙SQL可从数据库取回数据
∙SQL可在数据库中插入新的记录
∙SQL可更新数据库中的数据
∙SQL可从数据库删除记录
∙SQL可创建新数据库
∙SQL可在数据库中创建新表
∙SQL可在数据库中创建存储过程
∙SQL可在数据库中创建视图
∙SQL可以设置表、存储过程和视图的权限
SQL是一种标准-但是...
SQL是一门ANSI的标准计算机语言,用来访问和操作数据库系统。
SQL语句用于取回和更新数据库中的数据。
SQL可与数据库程序协同工作,比如MSAccess、DB2、Informix、MSSQLServer、Oracle、Sybase以及其他数据库系统。
不幸地是,存在着很多不同版本的SQL语言,但是为了与ANSI标准相兼容,它们必须以相似的方式共同地来支持一些主要的关键词(比如SELECT、UPDATE、DELETE、INSERT、WHERE等等)。
注释:
除了SQL标准之外,大部分SQL数据库程序都拥有它们自己的私有扩展!
在您的网站中使用SQL
要创建发布数据库中数据的网站,您需要以下要素:
∙RDBMS数据库程序(比如MSAccess,SQLServer,MySQL)
∙服务器端脚本语言(比如PHP或ASP)
∙SQL
∙HTML/CSS
RDBMS
RDBMS指的是关系型数据库管理系统。
RDBMS是SQL的基础,同样也是所有现代数据库系统的基础,比如MSSQLServer,IBMDB2,Oracle,MySQL以及MicrosoftAccess。
RDBMS中的数据存储在被称为表(tables)的数据库对象中。
表是相关的数据项的集合,它由列和行组成。
SQL语法
∙SQL简介
∙SQLselect
数据库表
一个数据库通常包含一个或多个表。
每个表由一个名字标识(例如“客户”或者“订单”)。
表包含带有数据的记录(行)。
下面的例子是一个名为"Persons"的表:
Id
LastName
FirstName
Address
City
1
Adams
John
OxfordStreet
London
2
Bush
George
FifthAvenue
NewYork
3
Carter
Thomas
ChanganStreet
Beijing
上面的表包含三条记录(每一条对应一个人)和五个列(Id、姓、名、地址和城市)。
SQL语句
您需要在数据库上执行的大部分工作都由SQL语句完成。
下面的语句从表中选取LastName列的数据:
SELECTLastNameFROMPersons
结果集类似这样:
LastName
Adams
Bush
Carter
在本教程中,我们将为您讲解各种不同的SQL语句。
重要事项
一定要记住,SQL对大小写不敏感!
SQL语句后面的分号?
某些数据库系统要求在每条SQL命令的末端使用分号。
在我们的教程中不使用分号。
分号是在数据库系统中分隔每条SQL语句的标准方法,这样就可以在对服务器的相同请求中执行一条以上的语句。
如果您使用的是MSAccess和SQLServer2000,则不必在每条SQL语句之后使用分号,不过某些数据库软件要求必须使用分号。
SQLDML和DDL
可以把SQL分为两个部分:
数据操作语言(DML)和数据定义语言(DDL)。
SQL(结构化查询语言)是用于执行查询的语法。
但是SQL语言也包含用于更新、插入和删除记录的语法。
查询和更新指令构成了SQL的DML部分:
∙SELECT -从数据库表中获取数据
∙UPDATE -更新数据库表中的数据
∙DELETE -从数据库表中删除数据
∙INSERTINTO -向数据库表中插入数据
SQL的数据定义语言(DDL)部分使我们有能力创建或删除表格。
我们也可以定义索引(键),规定表之间的链接,以及施加表间的约束。
SQL中最重要的DDL语句:
∙CREATEDATABASE -创建新数据库
∙ALTERDATABASE -修改数据库
∙CREATETABLE -创建新表
∙ALTERTABLE -变更(改变)数据库表
∙DROPTABLE -删除表
∙CREATEINDEX -创建索引(搜索键)
∙DROPINDEX -删除索引
SQLSELECT语句
∙SQL语法
∙SQLdistinct
本章讲解SELECT和SELECT*语句。
SQLSELECT语句
SELECT语句用于从表中选取数据。
结果被存储在一个结果表中(称为结果集)。
SQLSELECT语法
SELECT列名称FROM表名称
以及:
SELECT*FROM表名称
注释:
SQL语句对大小写不敏感。
SELECT等效于select。
SQLSELECT实例
如需获取名为"LastName"和"FirstName"的列的内容(从名为"Persons"的数据库表),请使用类似这样的SELECT语句:
SELECTLastName,FirstNameFROMPersons
"Persons"表:
Id
LastName
FirstName
Address
City
1
Adams
John
OxfordStreet
London
2
Bush
George
FifthAvenue
NewYork
3
Carter
Thomas
ChanganStreet
Beijing
结果:
LastName
FirstName
Adams
John
Bush
George
Carter
Thomas
SQLSELECT*实例
现在我们希望从"Persons"表中选取所有的列。
请使用符号*取代列的名称,就像这样:
SELECT*FROMPersons
提示:
星号(*)是选取所有列的快捷方式。
结果:
Id
LastName
FirstName
Address
City
1
Adams
John
OxfordStreet
London
2
Bush
George
FifthAvenue
NewYork
3
Carter
Thomas
ChanganStreet
Beijing
在结果集(result-set)中导航
由SQL查询程序获得的结果被存放在一个结果集中。
大多数数据库软件系统都允许使用编程函数在结果集中进行导航,比如:
Move-To-First-Record、Get-Record-Content、Move-To-Next-Record等等。
类似这些编程函数不在本教程讲解之列。
如需学习通过函数调用访问数据的知识,请访问我们的 ADO教程 和 PHP教程。
SQLSELECTDISTINCT语句
∙SQLselect
∙SQLwhere
本章讲解SELECTDISTINCT语句。
SQLSELECTDISTINCT语句
在表中,可能会包含重复值。
这并不成问题,不过,有时您也许希望仅仅列出不同(distinct)的值。
关键词DISTINCT用于返回唯一不同的值。
语法:
SELECTDISTINCT列名称FROM表名称
使用DISTINCT关键词
如果要从"Company"列中选取所有的值,我们需要使用SELECT语句:
SELECTCompanyFROMOrders
"Orders"表:
Company
OrderNumber
IBM
3532
W3School
2356
Apple
4698
W3School
6953
结果:
Company
IBM
W3School
Apple
W3School
请注意,在结果集中,W3School被列出了两次。
如需从Company"列中仅选取唯一不同的值,我们需要使用SELECTDISTINCT语句:
SELECTDISTINCTCompanyFROMOrders
结果:
Company
IBM
W3School
Apple
现在,在结果集中,"W3School"仅被列出了一次。
SQLWHERE子句
∙SQLdistinct
∙SQLAND&OR
WHERE子句用于规定选择的标准。
WHERE子句
如需有条件地从表中选取数据,可将WHERE子句添加到SELECT语句。
语法
SELECT列名称FROM表名称WHERE列运算符值
下面的运算符可在WHERE子句中使用:
操作符
描述
=
等于
<>
不等于
>
大于
<
小于
>=
大于等于
<=
小于等于
BETWEEN
在某个范围内
LIKE
搜索某种模式
注释:
在某些版本的SQL中,操作符<>可以写为!
=。
使用WHERE子句
如果只希望选取居住在城市"Beijing"中的人,我们需要向SELECT语句添加WHERE子句:
SELECT*FROMPersonsWHERECity='Beijing'
"Persons"表
LastName
FirstName
Address
City
Year
Adams
John
OxfordStreet
London
1970
Bush
George
FifthAvenue
NewYork
1975
Carter
Thomas
ChanganStreet
Beijing
1980
Gates
Bill
Xuanwumen10
Beijing
1985
结果:
LastName
FirstName
Address
City
Year
Carter
Thomas
ChanganStreet
Beijing
1980
Gates
Bill
Xuanwumen10
Beijing
1985
引号的使用
请注意,我们在例子中的条件值周围使用的是单引号。
SQL使用单引号来环绕文本值(大部分数据库系统也接受双引号)。
如果是数值,请不要使用引号。
文本值:
这是正确的:
SELECT*FROMPersonsWHEREFirstName='Bush'
这是错误的:
SELECT*FROMPersonsWHEREFirstName=Bush
数值:
这是正确的:
SELECT*FROMPersonsWHEREYear>1965
这是错误的:
SELECT*FROMPersonsWHEREYear>'1965'
SQLAND&OR运算符
∙SQLwhere
∙SQLOrderBy
AND和OR运算符用于基于一个以上的条件对记录进行过滤。
AND和OR运算符
AND和OR可在WHERE子语句中把两个或多个条件结合起来。
如果第一个条件和第二个条件都成立,则AND运算符显示一条记录。
如果第一个条件和第二个条件中只要有一个成立,则OR运算符显示一条记录。
原始的表(用在例子中的):
LastName
FirstName
Address
City
Adams
John
OxfordStreet
London
Bush
George
FifthAvenue
NewYork
Carter
Thomas
ChanganStreet
Beijing
Carter
William
Xuanwumen10
Beijing
AND运算符实例
使用AND来显示所有姓为"Carter"并且名为"Thomas"的人:
SELECT*FROMPersonsWHEREFirstName='Thomas'ANDLastName='Carter'
结果:
LastName
FirstName
Address
City
Carter
Thomas
ChanganStreet
Beijing
OR运算符实例
使用OR来显示所有姓为"Carter"或者名为"Thomas"的人:
SELECT*FROMPersonsWHEREfirstname='Thomas'ORlastname='Carter'
结果:
LastName
FirstName
Address
City
Carter
Thomas
ChanganStreet
Beijing
Carter
William
Xuanwumen10
Beijing
结合AND和OR运算符
我们也可以把AND和OR结合起来(使用圆括号来组成复杂的表达式):
SELECT*FROMPersonsWHERE(FirstName='Thomas'ORFirstName='William')
ANDLastName='Carter'
结果:
LastName
FirstName
Address
City
Carter
Thomas
ChanganStreet
Beijing
Carter
William
Xuanwumen10
Beijing
SQLORDERBY子句
∙SQLAND&OR
∙SQLinsert
ORDERBY语句用于对结果集进行排序。
ORDERBY语句
ORDERBY语句用于根据指定的列对结果集进行排序。
ORDERBY语句默认按照升序对记录进行排序。
如果您希望按照降序对记录进行排序,可以使用DESC关键字。
原始的表(用在例子中的):
Orders表:
Company
OrderNumber
IBM
3532
W3School
2356
Apple
4698
W3School
6953
实例1
以字母顺序显示公司名称:
SELECTCompany,OrderNumberFROMOrdersORDERBYCompany
结果:
Company
OrderNumber
Apple
4698
IBM
3532
W3School
6953
W3School
2356
实例2
以字母顺序显示公司名称(Company),并以数字顺序显示顺序号(OrderNumber):
SELECTCompany,OrderNumberFROMOrdersORDERBYCompany,OrderNumber
结果:
Company
OrderNumber
Apple
4698
IBM
3532
W3School
2356
W3School
6953
实例3
以逆字母顺序显示公司名称:
SELECTCompany,OrderNumberFROMOrdersORDERBYCompanyDESC
结果:
Company
OrderNumber
W3School
6953
W3School
2356
IBM
3532
Apple
4698
实例4
以逆字母顺序显示公司名称,并以数字顺序显示顺序号:
SELECTCompany,OrderNumberFROMOrdersORDERBYCompanyDESC,OrderNumberASC
结果:
Company
OrderNumber
W3School
2356
W3School
6953
IBM
3532
Apple
4698
注意:
在以上的结果中有两个相等的公司名称(W3School)。
只有这一次,在第一列中有相同的值时,第二列是以升序排列的。
如果第一列中有些值为nulls时,情况也是这样的。
SQLINSERTINTO语句
∙SQLOrderBy
∙SQLupdate
INSERTINTO语句
INSERTINTO语句用于向表格中插入新的行。
语法
INSERTINTO表名称VALUES(值1,值2,....)
我们也可以指定所要插入数据的列:
INSERTINTOtable_name(列1,列2,...)VALUES(值1,值2,....)
插入新的行
"Persons"表:
LastName
FirstName
Address
City
Carter
Thomas
ChanganStreet
Beijing
SQL语句:
INSERTINTOPersonsVALUES('Gates','Bill','Xuanwumen10','Beijing')
结果:
LastName
FirstName
Address
City
Carter
Thomas
ChanganStreet
Beijing
Gates
Bill
Xuanwumen10
Beijing
在指定的列中插入数据
"Persons"表:
LastName
FirstName
Address
City
Carter
Thomas
ChanganStreet
Beijing
Gates
Bill
Xuanwumen10
Beijing
SQL语句:
INSERTINTOPersons(LastName,Address)VALUES('Wilson','Champs-Elysees')
结果:
LastName
FirstName
Address
City
Carter
Thomas
ChanganStreet
Beijing
Gates
Bill
Xuanwumen10
Beijing
Wilson
Champs-Elysees
SQLUPDATE语句
∙SQLinsert
∙SQLdelete
Update语句
Update语句用于修改表中的数据。
语法:
UPDATE表名称SET列名称=新值WHERE列名称=某值
Person:
LastName
FirstName
Address
City
Gates
Bill
Xuanwumen10
Beijing
Wilson
Champs-Elysees
更新某一行中的一个列
我们为lastname是"Wilson"的人添加firstname:
UPDATEPersonSETFirstName='Fred'WHERELastName='Wilson'
结果:
LastName
FirstName
Address
City
Gates
Bill
Xuanwumen10
Beijing
Wilson
Fred
Champs-Elysees
更新某一行中的若干列
我们会修改地址(address),并添加城市名称(city):
UPDATEPersonSETAddress='Zhongshan23',City='Nanjing'
WHERELastName='Wilson'
结果:
LastName
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- SQL 教程
![提示](https://static.bdocx.com/images/bang_tan.gif)