SQL非常全面入门教程.docx
- 文档编号:16586475
- 上传时间:2023-07-15
- 格式:DOCX
- 页数:30
- 大小:40.60KB
SQL非常全面入门教程.docx
《SQL非常全面入门教程.docx》由会员分享,可在线阅读,更多相关《SQL非常全面入门教程.docx(30页珍藏版)》请在冰点文库上搜索。
SQL非常全面入门教程
SQL非常全面入门教程
SQL语言快速入门入门教程2SQL语言快速入门之一2SQL语言快速入门之二3SQL语言快速入门之三5基础教程10SQL数据操作基础(初级)110SQL数据操作基础(初级)213SQL数据操作基础(初级)316SQL数据操作基础(初级)420SQL数据操作基础(初级)525SQL数据操作基础(中级)27SQL数据操作基础(中级)127SQL数据操作基础(中级)228SQL数据操作基础(中级)331SQL数据操作基础(中级)435SQL数据操作基础(中级)539全面接触SQL44全面接触SQL语法
(1)44全面接触SQL语法
(2)46全面接触SQL语法(3)47全面接触SQL语法(4)49全面接触SQL语法(5)51全面接触SQL语法(6)53全面接触SQL语法(7)55SQL语法详解59主要SQL语句详解
(1)59主要SQL语句详解
(2)63SQL语法参考手册67SQL实践71SQL实践
(1)71SQL实践
(2)75Sql连接查询80入门教程SQL语言快速入门之一SQL是英文StructuredQueryLanguage的缩写,意思为结构化查询语言。
SQL语言的主要功能就是同各种数据库建立联系,进行沟通。
按照ANSI(美国国家标准协会)的规定,SQL被作为关系型数据库管理系统的标准语言。
SQL语句可以用来执行各种各样的操作,例如更新数据库中的数据,从数据库中提取数据等。
目前,绝大多数流行的关系型数据库管理系统,如Oracle,Sybase,MicrosoftSQLServer,Access等都采用了SQL语言标准。
虽然很多数据库都对SQL语句进行了再开发和扩展,但是包括Select,Insert,Update,Delete,Create,以及Drop在内的标准的SQL命令仍然可以被用来完成几乎所有的数据库操作。
下面,我们就来详细介绍一下SQL语言的基本知识。
数据库表格一个典型的关系型数据库通常由一个或多个被称作表格的对象组成。
数据库中的所有数据或信息都被保存在这些数据库表格中。
数据库中的每一个表格都具有自己唯一的表格名称,都是由行和列组成,其中每一列包括了该列名称,数据类型,以及列的其它属性等信息,而行则具体包含某一列的记录或数据。
以下,是一个名为天气的数据库表格的实例。
城市最高气温最低气温北京105上海158天津82重庆2013该表格中“城市”,“最高气温”和“最低气温”就是三个不同的列,而表格中的每一行则包含了具体的表格数据。
数据查询在众多的SQL命令中,select语句应该算是使用最频繁的。
Select语句主要被用来对数据库进行查询并返回符合用户查询标准的结果数据。
Select语句的语法格式如下:
selectcolumn1{table_name|view_name}%’在这个例子中使用了表达式{*|table.*|[table.]field[,[table.]field2[,...]]}[ASalias1[,alias2[,...]]]FROMtableexpression[,...][INexternaldatabase][WHERE...][GROUPBY...][HAVING...][ORDERBY...][WITHOWNERACCESSOPTION]SELECT语句包括下面几个部分predicate如前面所述,包括了ALL,DISTINCT,DISTINCTROW,与TOP我们可以利用这样的语句去限制查询后所得的结果。
*从指定表格中指定所有的字段。
table针对被选择出的记录的字段,所指定表格的名称。
field1,field2想要读取数据的字段名称,如果包含了一个以上的字段,会依照列出的顺序来读取数据。
alias1,alias2用来替代在表格实际字段名称的化名。
tableexpression表格名称或包含我们所想要的数据的表格。
externaldatabase若使用到不是目前的数据库则将其名字定义在externaldatabase当中。
ALL,DISTINCT,DISTINCTROW,TOP属性词用法SELECT[ALL|DISTINCT|DISTINCTROW|[TOPn[PERCENT]]]FROMtableALL若是您不指定任何的字段数据,则MicrosoftJet数据库引擎(databaseengine)将会选择所有的字段,并依据所定的条件查询出需求数据集。
全面接触SQL语法
(2)例如下面这两个例子将会具有相同的效果,都会从职员表格中返回所有字段的数据。
例如:
若是我们要查询出职员表格中的所有记录,可以通过下面的语句来完成。
SELECTALL*FROM职员表格;DISTINCT对某个表格所选择的字段数据,略过重复的情况,也就是说,针对某个字段查询出来的记录结果是唯一的。
例如有许多存放在职员表格的职员数据,也许会具有相同的姓名,所以若是我们用SQL语句中的SELECTDISTINCT,则查询出来的结果将会针对不一样的姓名加以筛选。
若是您把DISTINCT加以省略,则这样的查询会显示所有的记录。
DISTINCTROW将整条记录重复的记录忽略掉,而不是只有针对某一个字段的数据。
table指定查询记录所需要的表格。
例如:
SELECTDISTINCTROW公司名称FROM顾客表格INNERJOIN订单表格ON顾客表格.顾客ID=订单表格.顾客IDORDERBY公司名称;如果您忽略DISTINCTROW则会对每个公司产生一行以下的订单数据。
此外,若是DISTINCTROW只有用在一个表格当中,则会被省略掉。
TOP从第一条或最后一条开始(利用ORDERBY条件子句),返回特定条数的数据。
例如:
当您想要知道在20xx年,班上前25名的学生姓名数据时,您可以输入这样的语句:
SELECTTOP25学生姓名FORM学生表格WHERE毕业年份=1994ORDERBY毕业成绩平均分数DESC;
如果您没有加上ORDERBY这行条件的话,您所得到的数据,将会随机的数据。
此外,在TOP语句之后,除了可以加上数字以外,还可以利用保留字PERCENT来查询。
例如:
SELECTTOP10PERCENT学生姓名FROM学生表格WHERE毕业年份=1994ORDERBY毕业成绩平均DESC;
PARAMETERS(参数)声明的用法对于参数型的查询语法中,对参数的名称以及数据类型作声明的操作。
PARAMETERSnamedatatype[,namedatatype[,...]]namePARAMETERS的名称。
您可以把参数名称当作字符串来使用,若是名称中包含了空字符串,可以利用中括号来处理,例如:
“VBeden”。
datatype输入参数的数据类型。
例如:
若是您在查询时,需要机动的输入姓名,可以利用下列的方式完成:
PARAMETERS“输入姓名”Text;SELECT*FROM职员表格WHERE姓名=“输入姓名:
”;全面接触SQL语法(3)
ORDERBY条件语句
此条件子句,通常与SELECT语句合并使用目的是将查询的结果,依照指定字段加以排序。
SELECTfieldlist
FROMtable
WHEREselectcriteria
ORDERBYfield[ASC|DESC][,field2[ASC|DESC][,...]]
fieldlist
欲查询的字段名称。
其中可以与ALL,DISTINCT,DISINCTROW,或TOP一起来使用。
table
欲查询的表格名称。
selectcriteria
查询的标准设置。
field1
指定要依照那个字段作为排序的依据,若是你没有加上ORDERBY查询出的数据集将不会作排序的操作。
ASC
递增顺序类别。
(默认值)
DESC
递减顺序类别。
例如:
或是我们要将输出数据依据出生的先后次序排列,可以利用下面的命令。
SELECT姓名,生日
FROM职员表格
ORDERBY生日
SELECTLastName,FirstName
FROMEmployees
ORDERBYLastNameASC;
IN条件子句
指定要速胜哪一个外部数据库的表格。
(必须是MicrosoftJet数据库引擎所可以连接的数据库,如dBase,Paradox等等)
SELECT|INSERT]INTOdestinationIN{path|[“path““type“]|[““[type;DATABASE=path]]}FROMtableexpressionIN{path|[“path““type“]|[““[type;DATABASE=path]]}destination
欲插入数据的外部表格名称。
tableexpression
表格名称或是被读取数据的表格名称。
这个参数可以是一个单一的表格名称,或是一段已经被存储的SQL查询等。
path
包含该表格的完整路径名称。
type
数据库的类型名称,通常是当数据库部属于Jetdatabase时才会使用。
(例如:
dBASEIII,dBASEIV,Paradox3.x,Paradox4.x,或Btrieve)
例如:
下面这两段的意义相同PartA....FROMTableIN““[dBASEIV;DATABASE=C:
\DBASE\DATA\SALES;];PartB....FROMTableIN“C:
\DBASE\DATA\SALES““dBASEIV;“
例如:
MicrosoftJetdatabaseSELECT顾客编号FROM顾客表格INCUSTOMER.MDBWHERE顾客编号Like“A*“;其中CUSTOMER.MDBO为Jetdatabase的数据库名称,其中包含了顾客表格。
例如:
dBASEIIIorIVSELECT顾客编号FROM顾客表格IN“C:
\DBASE\DATA\SALES““dBASEIV;“WHERE顾客编号Like“A*“;所以当我们使用不同于ACCESS的数据库时,必须指明该数据库的类型名称。
全面接触SQL语法(4)HAVING条件子句指定一特定的分组记录,并满足HAVING所指定的条件或状态,但条件是针对分组的条件设置。
SELECTfieldlistFROMtableWHEREselectcriteriaGROUPBYgroupfieldlistHAVINGgroupcriteriafieldlist显示被查询的字段名称。
(可与ALL,DISTINCT,DISTINCTROW,或TOP相结合)table欲查询数据的表格名称。
selectcriteria选取标准。
groupfieldlist分组记录的字段名称,到多10个字段。
而这些字段的顺序决定最高到最低的分组阶层。
groupcriteria决定什么样的分组记录要被显示。
HAVING跟WHERE的用法相当类似,不同之处在于HAVING必须用于GROUP之后的分组数据上。
例如:
SELECT分类编,Sum(库存数量)FROM产品表格GROUPBY分类编号HAVINGSum(库存数量)>100AND产品名称LIKE“*纸“;
GROUPBY条件子句依据指定的字段,将具有相同数值的记录合并成一条。
SELECTfieldlistFROMtableWHEREcriteriaGROUPBYgroupfieldlistfieldlist欲读取的字段名称。
(可与ALL,DISTINCT,DISTINCTROW,或TOP合并使用)table被查询的表格名称。
groupfieldlist分组记录的字段名称,到多10个字段,而这些字段的顺序决定最高到最低的分组层次。
例如:
SELECT姓名,Count(姓名)AS职员姓名FROM职员表格WHERE部门名称='业务部'GROUPBY姓名FROM条件子句指定表格名称或是查询,其中包含列在SELECT语句的字段数据。
SELECTfieldlistFROMtableexpression[INexternaldatabase]fieldlist表格中的字段名称。
(可与ALL,DISTINCT,DISTINCTROW,或TOP相结合)tableexpression表格名称,或多个表格的算式。
externaldatabase若该表格参考到外部的数据库时,将其完整的路径名称记下。
例如:
从职员表格下,查询出所有姓名字段的数据(只有姓名字段被查询,其他则不显示)。
SELECT姓名FROM职员表格;
WHERE条件子句指定查询的条件与限制。
SELECTfieldlistFROMtableexpressionWHEREcriteriafieldlist字段名称。
(可与ALL,DISTINCT,DISTINCTROW,或TOP相结合)tableexpression表格名称,或多个表格的算式。
criteria查询的结果,必须依照这一限制标准。
例如:
要查询出职员表格中,所有姓氏是李的数据,可以用下面的语句。
SELECT姓名FROM职员表格WHERE姓氏='李';
全面接触SQL语法(5)BETWEEN...AND运算符决定某一人数值是否介于特定的范围之内,此运算符只可以用在SQL的语句中。
expr[Not]BETWEENvalue1ANDvalue2expr指定要加以计算的字段与表达式的组合。
value1,value2所指明的数值范围。
例如:
若是要从职员表格查询出所有年龄介于25-30岁的员工,可以利用下面的程序来做。
SELECT姓名,年龄BETWEEN25AND30FROM职员表格;
LIKE操作数用来将一字符串与另一特定字符串样式(pattern)比较,并将符合该字符串样式的记录过滤出来。
expressionLIKE“pattern“expression使用在WHERE条件子句,SQL表达式。
pattern用以比较的字符串样式。
例如:
若是你要查询出所有以“李”为首的姓氏,可以利用下面的式子。
Like“李*“LIKE操作数的多种范例:
1、多个字符:
(1)“a*a“可筛选:
“aa“,“aBa“,“aBBBa“,不能筛选:
“aBC“
(2)“*ab*“可筛选:
“abc“,“AABB“,“Xab“,不能筛选:
“aZb“,“bac“2、特殊字符:
“a“*”a“可筛选:
“a*a“,不能筛选:
“aaa“3、单一字符:
“a?
a“可筛选:
“aaa“,“a3a“,“aBa“,不能筛选:
“aBBBa“4、单一数字:
“a#a“可筛选:
“a0a“,“a1a“,“a2a“,不能筛选:
“aaa“,“a10a“5、字符范围:
““a-z”“可筛选:
“f“,“p“,“j“,不能筛选:
“2“,“=“6、指定字符以外部范围:
““!
a-z”“7、指定非数字:
““!
0-9”“可筛选:
“A“,“a“,“=“,“~“,不能筛选:
“0“,“1“,“9“8、组合式结构:
“a“!
b-m”#“可筛选:
“An9“,“az0“,“a99“,不能筛选:
“abc“,“aj0“SQL数字函数1、AVG:
算数平均数AVG(expr)expr字段名称或表达式。
例如:
若要计算职员身高超过165厘米的职员平均身高,可以利用下面的SQL语句来完成。
SELECTAvg(身高)AS平均身高FROM职员表格WHERE身高>165;
2、COUNT:
计算记录条数COUNT(expr)expr字段名称或表达式。
例如:
若是要统计出业务部门的职员人数,并查询出职员的姓名,可以利用下面的程序。
SELECTCount(姓名)AS职员姓名FROM职员表格WHERE部门名称='业务部';
3、FIRST与LAST:
返回某字段的第一条数据与最后一条数据。
FIRST(expr)LAST(expr)expr字段名称或表达式。
例如:
若是要找出货品数量字段的第一条数据与货品价格字段的最后一条数据时,可以利用下面的查询方式。
SELECTFIRST(货品数量),LAST(货品价格)FROM订单表格4、MAX,与MIN:
返回某字段的最大值与最小值。
用法同FIRST与LAST。
5、SUM:
返回某特定字段或是运算的总和数值。
SUM(expr)expr字段名称或表达式。
例如:
要计算出货品总价,可使用下面的程序。
SELECTSum(单位价格*货品数量)AS货品总价FROM订单表格多层SQL查询顾名思义,多层的SQL查询的便在于:
“在一个SQL语句中可以包含另一个SQL查询语句,形成内部嵌套的查询类型。
”comparison[ANY|ALL|SOME](sqlstatement)expression[NOT]IN(sqlstatement)[NOT]EXISTS(sqlstatement)comparison将表达式与内层查询的结果比较的操作。
expression对内层查询的结果作搜索的表达式。
sqlstatement为SELECT语句构成的SQL查询,必须用()将该语句括起来。
例如:
我们先从订单表格当中,查询出所有的单位,再将产品表格中的单位与的一一对比,查询出所有高于订单表格的单位价格的记录。
SELECT*FROM产品表格WHERE单位价格>ANY(SELECT单位价格FROM订单表格WHERE折扣>=.25);
全面接触SQL语法(6)SQL与数据库的维护表格的建立将SQL中的基本语法作了一番介绍以后,但大多是偏向于数据库数据的查询与过滤,但实际上,我们通过SQL命令所可以做的事还有很多,接下来要介绍的便是如何利用SQL的语法命令来建立一个数据库中的表格。
CREATETABLE语句我们可以利用这个命令,来建立一个全新的表格,但前提则是:
数据库必须已经存在。
CREATETABLEtable(field1type[(size)][index1][,field2type[(size)][index2][,...]][,nultifieldindex[,...]])table欲建立的新的表格名称。
field1,field2在新表格中的新的字段名称,到少要一个字段以上。
type字段的数据类型。
size字段的大小。
index1,index2利用CONSTRAINT条件子句定义一个单一字段的索引名称。
multifieldindex利用CONSTRAINT条件子句定义一个多重字段的索引名称。
例如:
建立一个拥有职员姓名与部门字段的表格。
CREATETABLE职员表格(姓名TEST,部门TEST,职员编号INTEGERCONSTRAINT职员字段索引PRIMARYKEY)在这一个范例中,我们建立了一个表格名称为“职员表格”的表格,并且定义了该表格的主键值,以限制数据不能重复输入。
表格索引的建立CREATEINDEX语句这个命令主要是对一个已存在的表格建立索引,其用法如下:
CREATE[UNIQUE]INDEXindexONtable(field[ASC|DESC][,field[ASC|DESC],...])[WITH{PRIMARY|DISALLOWNULL|IGNORENULL}]index欲被建立的索引名称。
table欲建立索引的表格名称。
field欲被建立的索引的字段名称。
并可通过DESC保留字,来决定索引的顺序。
例如:
在职员表格中建立一个索引。
CREATEINDEX新索引名称ON职员表格(姓名部门);
表格的字段更新CONSTRAINT条件子句CONSTRAINT的功能是类似索引(INDEX)的,虽然CONSTRAINT也可以建立表格之间的关联性。
单一字段索引:
CONSTRAINTname{PRIMARYKEY|UNIQUE|REFERENCESforeigntable[(foreignfield1,foreignfield2)]}多字段索引:
CONSTRAINTname{PRIMARYKEY(primary1[,primary2[,...]])|UNIQUE(unique1[,unique2[,...]])|FOREIGNKEY(ref1[,ref2[,...]])|REFERENCESforeigntable[(foreignfield1[,foreignfield2[,...]])]}name要被建立的CONSTRAINT名称。
primary1,primary2被用来设计成主键值的字段名称(可一个以上)。
unique1,unique2被用来设计成唯一键值的字段名称(可一个以上)。
foreignkey字段名称,或是参考到别的表格中字段的字段名称。
foreigntable如前所述,被参考到的表格。
foreignfield1,foreignfield2在参考到的表格当中,被ref1,ref2字段所指定的字段。
如果被参考的字段是参考表格中的主键值,你也可以省略这个条件子句。
例如:
当我们要建立一个新的职员数据表格,表格包含姓名、部门名称与生日三个字段,且由这三个字段建立一个唯一的索引时,可以使用下面这段SQL的语句。
CREATETABLE职员数据表格(姓名TEST,部门名称TEST,生日DATETIME,CONSTRAINT职员数据表格限制UNIQUE(姓名,部门名称,生日));
以上是SQL中,与数据库表格建立相关的命令,你可以利用这些命令,通过SQL的语句,将数据库表格完整的建立出来,接下来的章节,将针对数据库建立之后的维护与增删所要使用的SQL语句作一介绍。
全面接触SQL语法(7)表的删除DELETE语句我们可以利用DELETE语句,将表格中的记录删除。
(注意:
记录被删除后,无法再复原,所以条件设置要正确)DELETE[table.*]FROMtableexpressionWHEREcriteriatable欲删除记录的表格名称,也可以用*来取代。
tableexpression一个或一个以上表格的名称。
此一参数可以为单一的表格名称或是从INNERJOIN,LEFTJOIN,或RIGHTJOIN等运算所得到的结果。
cri
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- SQL 非常 全面 入门教程