sql培训手册.docx
- 文档编号:4643875
- 上传时间:2022-12-07
- 格式:DOCX
- 页数:29
- 大小:35.60KB
sql培训手册.docx
《sql培训手册.docx》由会员分享,可在线阅读,更多相关《sql培训手册.docx(29页珍藏版)》请在冰豆网上搜索。
sql培训手册
SQLServer培训手册
目录
第一章介绍SQL4
第二章表的基础知识6
第三章数据检索7
第四章创建表12
第五章插入数据到表15
第六章删除表16
第七章更新记录16
第八章删除记录18
第九章SELECT语句18
第十章合计函数21
第十一章GROUPBY子句22
第十二章HAVING子句23
第十三章ORDERBY子句24
第十四章组合条件和布尔运算符25
第十五章IN和BETWEEN条件运算符26
第十六章数学运算符28
第十七章JOIN子句29
第十八章索引32
第十九章DISTINCT和排除复制33
第二十章Aliases、In以及子查询34
第二十一章更多的子查询35
第二十二章EXISTS和ALL37
第二十三章UNION和外部连接38
第二十四章嵌入SQL39
第一章介绍SQL
SQL(StructuredQueryLanguage,结构查询语言)是一个功能强大的数据库语言。
SQL通常使用于数据库的通讯。
ANSI(美国国家标准学会)声称,SQL是关系数据库管理系统的标准语言。
SQL语句通常用于完成一些数据库的操作任务,比如在数据库中更新数据,或者从数据库中检索数据。
使用SQL的常见关系数据库管理系统有:
Oracle、Sybase、MicrosoftSQLServer、Access、Ingres等等。
虽然绝大多数的数据库系统使用SQL,但是它们同样有它们自立另外的专有扩展功能用于它们的系统。
但是,标准的SQL命令,比如"Select"、"Insert"、"Update"、"Delete"、"Create"和"Drop"常常被用于完成绝大多数数据库的操作。
但是,不象其它的语言,如C、Pascal等,SQL没有循环结构(比如if-then-else、do-while)以及函数定义等等的功能。
而且SQL只有一个数据类型的固定设置,换句话说,你不能在使用其它编程语言的时候创建你自己的数据类型。
SQL功能强大,但是概括起来,它可以分成以下几组:
DML(DataManipulationLanguage,数据操作语言):
用于检索或者修改数据;
DDL(DataDefinitionLanguage,数据定义语言):
用于定义数据的结构,比如创建、修改或者删除数据库对象;
DCL(DataControlLanguage,数据控制语言):
用于定义数据库用户的权限。
DML组可以细分为以下的几个语句:
SELECT:
用于检索数据;
INSERT:
用于增加数据到数据库;
UPDATE:
用于从数据库中修改现存的数据
DELETE:
用于从数据库中删除数据。
DDL语句可以用于创建用户和重建数据库对象。
下面是DDL命令:
CREATETABLE
ALTERTABLE
DROPTABLE
CREATEINDEX
DROPINDEX
DCL命令用于创建关系用户访问以及授权的对象。
下面是几个DCL命令:
ALTERPASSWORD
GRANT
REVOKE
CREATESYNONYM
为了让你对SQL有一个直观的认识,下面先给出一个简单SQL语句的例子:
我们使用SQL语句来从Employees中检索DepartmentID为CS的姓名:
SELECTEmployees.Name
FROMEmployees
WHEREEmployees.DeptID="CS"
可能你现在一开始不太理解这些语句,也许你会一头雾水,不要紧的,通过本教程的学习后,你会发现这段语句是多么的普通。
为了不让你困惑,下面我也进行一番解释:
先对FROM子句吧,语句中的FROMEmployees意思是从Employees表中检索数据。
而语句WHEREEmployees.DeptID="CS"意思是检索Employees的DeptID列为”CS”的行,这样SQL语句检索的结果将是DeptID为CS的列的所有数据,比如:
EmpID
Name
Dept
123
Purple
CS
124
Zsc
CS
最后,我们来解释一个SELECT子句,它指定了从Name列检索来的所有数据,比如
Name
Purple
Zsc
好吧,开始我们下一节的教程-------表的基本知识。
第二章表的基础知识
关系数据库通常包含多个表。
数据库实际上是表的集合,数据库的数据或者信息都是存储在表中的。
表是对数据进行存储和操作的一种逻辑结构,每一个表都代表一个对用户意义的对象。
例如,一个公司数据库中,会有雇员表、部门表、库存表、销售表、工资表等等。
我们经常见到的成绩表就是一种表,它是有行和列组成的,我们并且可以通过名字来识别数据。
列包含了列的名字、数据类型以及列的其它属性;行包含了列的记录或者数据。
下面给出一个成绩单,其中姓名、语文、数学、英语都是列,而行包含了这个表的数据,即每个人的各科成绩:
姓名
语文
数学
英语
王小童
78
100
87
张柳风
85
92
95
紫云飞
65
89
86
黄天龙
98
67
75
第三章数据检索
在SQL中SELECT语句通常用于检索数据库,或者检索满足你设定条件的数据,以下是简单的SELECT语句的格式:
select"column1"[,"column2",etc]from"tablename"
[where"condition"];
[]=optional
其中列的名字跟着SELECT关键字,它决定了哪一列将被作为结果返回。
你可以任意指定多个列,或者你可以使用"*"来选择所有的列。
表的名字是紧跟着FROM关键字的,它指出了哪个表格将作为最后结果被查询。
而WHERE子句(可选)指出哪个数据或者行将被返回或者显示,它是根据关键字WHERE后面描述的条件而来的。
在WHERE子句中可以有以下的条件选择:
=等于
>大于
<小于
>=大于等于
<=小于等于
<>不等于
LIKE参见以下注释
注释:
LIKE模式匹配操作符同样可以使用在WHERE子句的条件条件中。
LIKE是一个功能强大的操作符,它可以让你选择你"喜欢"指定的行。
百分号"%"可以被用来匹配任何可能的字符,它可以出现在指定字符的前面或者后面,例如:
selectfirst,last,city
fromempinfo
wherefirstLIKE'Er%';
以上这条SQL语句将会匹配任何名字以'Er'开始的名字,这里必须使用单引号。
或者你也可以使用"%"在字符的前面,例如:
selectfirst,last
fromempinfo
wherelastLIKE'%s';
这条SQL语句将会匹配任何名字以's'结尾的名字。
这个"%"的作用就跟DOS命令的"*"号很相似。
select*fromempinfo
wherefirst='Eric';
以上的SQL语句只选择first名字为'Eric'的行。
这里有一个名为"empinfo"的表:
first
last
id
age
city
province
Zhang
Jiangsheng
95123043
23
汕头
广东
Huang
Weidong
98122001
23
深圳
广东
Li
Simin
98111234
34
珠海
广东
Zhang
Sanmei
99232211
26
厦门
福建
Jiang
Dongsheng
98000190
28
重庆
四川
Liu
Tongxin
97231231
31
海南
海南
下面我们使用SELECT语句来进行一些检索:
首先你可以从empinfo中检索出列为first、last、city的数据,语句如下:
selectfirst,last,cityfromempinfo;
这时候你将来得到以下的数据:
first
last
id
Zhang
Jiangsheng
95123043
Huang
Weidong
98122001
Li
Simin
98111234
Zhang
Sanmei
99232211
Jiang
Dongsheng
98000190
Liu
Tongxin
97231231
如果你使用以下语句:
selectlast,city,agefromempinfo
whereage>30;
那就检索到以下的数据:
last
city
age
Simin
汕头
34
Tongxin
海南
31
若是使用:
selectfirst,last,city,provincefromempinfo
wherefirstLIKE'J%';
将得到以下的数据:
first
last
city
Province
Jiang
Dongsheng
重庆
四川
你如果想列出所有的数据,可以使用以下的语句:
select*fromempinfo;
这时候检索到的数据为:
first
last
id
age
city
province
Zhang
Jiangsheng
95123043
23
汕头
广东
Huang
Weidong
98122001
23
深圳
广东
Li
Simin
98111234
34
珠海
广东
Zhang
Sanmei
99232211
26
厦门
福建
Jiang
Dongsheng
98000190
28
重庆
四川
Liu
Tongxin
97231231
31
海南
海南
如果你想查询first和last列中last的最后字符为'g'的数据,你可以使用:
selectfirst,last,fromempinfo
wherelastLIKE'%g';
此时查询到的数据有:
first
last
Zhang
Jiangsheng
Huang
Weidong
Jiang
Dongsheng
你还可以这样来从first、last和age列中来查询last中间有'sh'字符的数据:
selectfirst,last,agefromempinfo
wherelastLIKE'%sh%';
结果为:
first
last
age
Zhang
Jiangsheng
23
Jiang
Dongsheng
28
最后,你还可以查询first为'Jiang'的数据:
select*fromempinfowherefirst='Jiang';
结果为:
first
last
id
age
city
province
Jiang
Dongsheng
98000190
28
重庆
四川
好吧,为了让你对本节教程能更好的掌握,下面给你几个练习巩固巩固:
1显示first和age列的每一个表中数据
2显示first、last和city列中除了first=Jiang的所有表中的数据。
3显示所有age大于30的列的数据。
4显示first和last列中last是以"g"结尾的数据。
5显示所有first为"Zhang"的列
千万不要认为这些很简单而不作练习。
因此这些都是基础,打好基础对于以后的学习是有帮助的。
第四章创建表
这个createtable语句是用于创建一个新的表格。
以下是一个简单创建表格语句的格式:
createtable"tablename"
("column1""datatype",
"column2""datatype",
"column3""datatype");
如果你想使用可选的约束,创建表格的格式为:
createtable"tablename"
("column1""datatype"[constraint],
"column2""datatype"[constraint],
"column3""datatype"[constraint]);
[]=optional
这里注意:
你可以任意创建多列的表格,这个条件是可选的。
为了更好的理解,下面举个例子:
createtableemployee
(firstvarchar(15),
lastvarchar(20),
agenumber(3),
addressvarchar(30),
cityvarchar(20),
statevarchar(20));
为了创建一个新表格,你可以在关键字createtable之后跟着表的名字,然后一个圆左括号”(”,然后是第一列的名字,再是这一列的数据类型,接着是任意的可选约束,最后是圆右括号”)”。
确保在开始表格内容之前使用圆左括号并且在表的最后一列定义之后使用圆右括号是相当重要的。
你还要保证每一个列定义之间有逗号分隔。
最后在SQL语句结束时候加上分号";"。
表格和列名必须以字母开头,第二个字符开始可以是字母、数字或者下划线,但是要保证名字的总长度不要超过30个字符。
在定义表格和列名不要使用不要使用SQL预定的用于表格或者列名的关键字(比如"select"、"create"、"insert"等等),以避免错误的发生。
数据类型是指在特定的列使用什么样数据的类型。
如果一个列的名字为"Last_Name",它是用来容纳人名的,所以这个特定列就应该采用"varchar"(variable-lengthcharacter,变长度的字符型)数据类型。
以下是几种常见的数据类型:
char(size):
固定长度的字符串型。
Size是圆括号中指定的参数,它可以由用户随意设置,但是不能超过255个字节。
varchar(size):
变长度的字符串型。
它的最大长度是由括号中的参数size设定的。
number(size):
数值型。
最大数字的位数由括号中的参数size设置。
date:
日期数值型。
number(size,d):
数值型。
它的最大数字的位数由括号中的参数sieze设定,而括号中的参数d是设置小数点的位数。
什么是约束呢?
当表被创建的时候,可以一列也可以多列共用一个约束。
约束是一个跟列有关的基本准则,返回的数据必须遵循这个准则。
下面举个例子,一个约束指定在一列中不能有两个记录共用一个数值。
它们必须单独的。
其它两个流行的约束是:
"notnull",它设置了列不能留空白,即一定要有数据;以及"primarykey"(主键),主键约束定义了表中每一个记录(或行)的唯一标识。
所有的这些将在以后的教程中再作进一步阐述。
好吧,也许你已经有跃跃欲试的冲动了。
作为本节练习,下面我们自己来设计和创建表格。
你可以开始创建一个公司的雇员表格。
你需要创建一个包含firstname、lastname、title、age和salary的表格。
第五章插入数据到表
Insert语句用于往表格中插入或者增加一行数据,它的格式为:
insertinto"tablename"
(first_column,...last_column)
values(first_value,...last_value);
[]=optional
简单举个例子:
insertintoemployee
(first,last,age,address,city)
values('Luke','Duke',45,'2130BoarsNest','HazardCo');
这里要注意:
每一个字符窜都要用单引号括起来。
为了往表中插入数据,要在关键字insertinto之后紧跟着表名,然后是左圆括号,接着是以逗号分开的一系列的列名,再是一个右圆括号,然后在关键字values之后跟着一系列用圆括号括起的数值。
这些数值是你要往表格中填入的数据,它们必须与指定的列名相匹配。
字符串笔译用单引号括起来,而数字就不用。
在上面的例子中,'Luke'必须与列first相匹配,而45必须与列age相匹配。
假如你想往employee表格中插入以下数据;
ZhangWeiguo,28,北京601信箱,北京
那么你要使用以下的SQL语句:
insertintoemployee
(first,last,age,address,city)
values('Zhang','Weiguo',28,'北京601信箱','北京');
第六章删除表
Droptable命令用于删除一个表格或者表中的所有行。
其语法格式为:
droptable"tablename"
下面举个例子:
droptableemployee;
为了删除整个表(包括所有的行),可以使用droptable命令后加上tablename。
Droptable命令跟从表中删除所有记录是不一样的:
删除表中的所有记录是留下表格(只是它是空的)以及约束信息;而droptable是删除表的所有信息,包括所有行、表格以及约束信息等等。
第七章更新记录
Update语句用于更新或者改变匹配指定条件的记录,它是通过构造一个where语句来实现的。
其语句格式如下:
update"tablename"
set"columnname"="newvalue"[,"nextcolumn"="newvalue2"...]
where"columnname"OPERATOR"value"[and|or"column"OPERATOR"value"];
[]=optional
下面举个例子来说明:
updatephone_book
setarea_code=623
whereprefix=979;
以上语句是在phone_book表中,在prefix=979的行中将area_code设置为623。
updatephone_book
setlast_name='Smith',prefix=555,suffix=9292
wherelast_name='Jones';
而以上的这段语句是在phone_book中,在last_name='Jones'的行中将last_name设置为'Smith',prefix为555,suffix为9292。
updateemployee
setage=age+1
wherefirst_name='Mary'andlast_name='Williams';
这段语句是在employee表中,在first_name='Mary'和last_name='Williams'的行中将age加1。
作为每课一练,你在结束本教程之后要好好作以下的练习:
1因为JonieWeber已经跟BobWilliams结婚,所以它需要将它的last名更新为Weber-Williams。
2DirkSmith的生日是今天,所以他的年龄应该加1。
3所有的秘书都叫做"AdministrativeAssistant".所以要将所有的标题标题都相应地修改。
就作这几个练习,千万不可大意哟。
第八章删除记录
Delete语句是用来从表中删除记录或者行,其语句格式为:
deletefrom"tablename"
where"columnname"OPERATOR"value"[and|or"column"OPERATOR"value"];
[]=optional
下面还是举个例子:
deletefromemployee;
这条语句没有where语句,所以它将删除所有的记录,因此如果没有使用where的时候,要千万小心。
如果你只要删除其中一行或者几行,可以参考以下的语句:
deletefromemployee
wherelastname='May';
这条语句是从emplyee表中删除lastname为'May'的行。
deletefromemployee
wherefirstname='Mike'orfirstname='Eric';
这条语句是从emplyee表中删除firstname为'Mike'或者'Eric'的行。
为了从表中删除一个完整的记录或者行,就直接在"deletefrom"后面加上表的名字,并且利用where指明符合什么条件的行要删除即可。
如果你没有使用where子句,那么表中的所有记录或者行将被删除。
第九章SELECT语句
在上面的教程中已经有用到SELECT语句。
在本节教程中将详细对它进行阐述。
SELECT语句是SQL的核心,在你的SQL语句中可能用的最多的就是SELECT语句了。
由于大量的选项可以用于SELECT语句,所以整个教程好象就是围这SELECT语句转。
当我们构造SQL查询语句(利用了SELECT语句)的时候,认识所有的可能选项和最好的或者最有效率的方法来实现是很有用的。
这个教程将为你提供这些技能。
SELECT语句用于查询数据库并检索匹配你指定条件的选择数据。
SELECT语句有五个主要的子句子你可以选择,而FROM是唯一必须的子句。
每一个子句有大量的选择项、参数等等。
这些子句将罗列在下面,而且它们每一个都将在以后的教程有更为详细的描述。
以下是SELECT语句的格式:
SELECT[ALL|DISTINCT]column1[,column2]
FROMtable1[,table2]
[WHERE"conditions"]
[GROUPBY"column-list"]
[HAVING"conditions]
[ORDERBY"column-list"[ASC|DESC]]
下面举个例子:
SELECTname,age,salary
FROMemployee
WHEREage>50;
上面的这个语句将从employee表中选择age大于50的所有的name、age和salary列的数值。
注意:
一定要在SQL语句末尾加上一个分号。
这个分号提示SQL语句已经结束并准备被解释。
以下的表格给出了各种比较运算符号:
=
等于
>
大于
<
小于
>=
大于等于
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- sql 培训 手册