SQL语言入门教程Word文档下载推荐.docx
- 文档编号:7173444
- 上传时间:2023-05-08
- 格式:DOCX
- 页数:29
- 大小:42.67KB
SQL语言入门教程Word文档下载推荐.docx
《SQL语言入门教程Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《SQL语言入门教程Word文档下载推荐.docx(29页珍藏版)》请在冰点文库上搜索。
GRANT
REVOKE
CREATESYNONYM
为了让你对SQL有一个直观的认识,下面先给出一个简单SQL语句的例子:
我们使用SQL语句来从Employees中检索DepartmentID为CS的姓名:
SELECTEmployees.Name
FROMEmployees
WHEREEmployees.DeptID="
CS"
可能你现在一开始不太理解这些语句,也许你会一头雾水,不要紧的,通过本教程的学习后,你会发现这段语句是多么的普通。
为了不让你困惑,下面我也进行一番解释:
先对FROM子句吧,语句中的FROMEmployees意思是从Employees表中检索数据。
而语句WHEREEmployees.DeptID="
意思是检索Employees的DeptID列为”CS”的行,这样SQL语句检索的结果将是DeptID为CS的列的所有数据,比如:
EmpID
Name
Dept
123
Purple
CS
124
Zsc
最后,我们来解释一个SELECT子句,它指定了从Name列检索来的所有数据,比如
好吧,开始我们下一节的教程-------表的基本知识。
(2)表的基础知识
关系数据库通常包含多个表。
数据库实际上是表的集合,数据库的数据或者信息都是存储在表中的。
表是对数据进行存储和操作的一种逻辑结构,每一个表都代表一个对用户意义的对象。
例如,一个公司数据库中,会有雇员表、部门表、库存表、销售表、工资表等等。
我们经常见到的成绩表就是一种表,它是有行和列组成的,我们并且可以通过名字来识别数据。
列包含了列的名字、数据类型以及列的其它属性;
行包含了列的记录或者数据。
下面给出一个成绩单,其中姓名、语文、数学、英语都是列,而行包含了这个表的数据,即每个人的各科成绩:
姓名
语文
数学
英语
王小童
78
100
87
张柳风
85
92
95
紫云飞
65
89
86
黄天龙
98
67
75
(3)数据检索
在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
wherelastLIKE'
%s'
这条SQL语句将会匹配任何名字以'
s'
结尾的名字。
这个"
的作用就跟DOS命令的"
*"
号很相似。
select*fromempinfo
wherefirst='
Eric'
以上的SQL语句只选择first名字为'
的行。
(4)创建表
这个createtable语句是用于创建一个新的表格。
以下是一个简单创建表格语句的格式:
createtable"
("
"
datatype"
"
column3"
);
如果你想使用可选的约束,创建表格的格式为:
[constraint],
[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的表格。
(5)插入数据到表
Insert语句用于往表格中插入或者增加一行数据,它的格式为:
insertinto"
(first_column,...last_column)
values(first_value,...last_value);
简单举个例子:
insertintoemployee
(first,last,age,address,city)
values('
Luke'
'
Duke'
45,'
2130BoarsNest'
HazardCo'
这里要注意:
每一个字符窜都要用单引号括起来。
为了往表中插入数据,要在关键字insertinto之后紧跟着表名,然后是左圆括号,接着是以逗号分开的一系列的列名,再是一个右圆括号,然后在关键字values之后跟着一系列用圆括号括起的数值。
这些数值是你要往表格中填入的数据,它们必须与指定的列名相匹配。
字符串笔译用单引号括起来,而数字就不用。
在上面的例子中,'
必须与列first相匹配,而45必须与列age相匹配。
假如你想往employee表格中插入以下数据;
ZhangWeiguo,28,北京601信箱,北京
那么你要使用以下的SQL语句:
Zhang'
Weiguo'
28,'
北京601信箱'
北京'
(6)删除表
Droptable命令用于删除一个表格或者表中的所有行。
其语法格式为:
droptable"
下面举个例子:
droptableemployee;
为了删除整个表(包括所有的行),可以使用droptable命令后加上tablename。
Droptable命令跟从表中删除所有记录是不一样的:
删除表中的所有记录是留下表格(只是它是空的)以及约束信息;
而droptable是删除表的所有信息,包括所有行、表格以及约束信息等等。
(7)更新记录
Update语句用于更新或者改变匹配指定条件的记录,它是通过构造一个where语句来实现的。
其语句格式如下:
update"
set"
columnname"
="
newvalue"
nextcolumn"
newvalue2"
...]
where"
OPERATOR"
value"
[and|or"
column"
下面举个例子来说明:
updatephone_book
setarea_code=623
whereprefix=979;
以上语句是在phone_book表中,在prefix=979的行中将area_code设置为623。
setlast_name='
Smith'
prefix=555,suffix=9292
wherelast_name='
Jones'
而以上的这段语句是在phone_book中,在last_name='
的行中将last_name设置为'
prefix为555,suffix为9292。
updateemployee
setage=age+1
wherefirst_name='
Mary'
andlast_name='
Williams'
这段语句是在employee表中,在first_name='
和last_name='
的行中将age加1。
作为每课一练,你在结束本教程之后要好好作以下的练习:
1因为JonieWeber已经跟BobWilliams结婚,所以它需要将它的last名更新为Weber-Williams。
2DirkSmith的生日是今天,所以他的年龄应该加1。
3所有的秘书都叫做"
AdministrativeAssistant"
.所以要将所有的标题标题都相应地修改。
就作这几个练习,千万不可大意哟。
(8)删除记录
Delete语句是用来从表中删除记录或者行,其语句格式为:
deletefrom"
下面还是举个例子:
deletefromemployee;
这条语句没有where语句,所以它将删除所有的记录,因此如果没有使用where的时候,要千万小心。
如果你只要删除其中一行或者几行,可以参考以下的语句:
deletefromemployee
wherelastname='
May'
这条语句是从emplyee表中删除lastname为'
wherefirstname='
Mike'
orfirstname='
这条语句是从emplyee表中删除firstname为'
或者'
为了从表中删除一个完整的记录或者行,就直接在"
deletefrom"
后面加上表的名字,并且利用where指明符合什么条件的行要删除即可。
如果你没有使用where子句,那么表中的所有记录或者行将被删除。
(9)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"
[ASC|DESC]]
SELECTname,age,salary
FROMemployee
WHEREage>
50;
上面的这个语句将从employee表中选择age大于50的所有的name、age和salary列的数值。
注意:
一定要在SQL语句末尾加上一个分号。
这个分号提示SQL语句已经结束并准备被解释。
以下的表格给出了各种比较运算符号:
=
等于
大于
小于
大于等于
小于等于
不等于
LIKE
字符串比较测验
举个例子吧:
SELECTname,title,dept
WHEREtitleLIKE'
Pro%'
上面的语句是从employee表中选择title是以'
Pro'
为开头的name、title和dept列中的所有行或者数值。
另外ALL和DISTINCT也是SQL中的关键字,它们用于在你的查询结果中选择ALL(缺省)或者"
distinct"
或者单一记录。
如果你想在指定的列中检索单一记录,你可以使用"
DISTINCT"
关键子。
因为DISTNCT将会丢弃所有你在SELECT指定的列复制的记录,比如:
SELECTDISTINCTage
FROMemployee_info;
这条语句将返回所有在employee_info表中单一的age数据。
而ALL就将显示所有指定的类,包括所有的复制数据。
在没有指定的时候,这个ALL关键字是缺省的。
(10)合计函数
所有的合计函数如下表所示:
MIN
返回一个给定列中最小的数值
MAX
返回一个给定列中最大的数值
SUM
返回一个给定列中所有数值的总和
AVG
返回一个给定列中所有数值的平均值
COUNT
返回一个给定列中所有数值的个数
COUNT(*)
返回一个表中的行数
合计函数用于从SELECT语句中计算一个”返回列的数据”。
它们是总结了所选数据列的结果。
虽然它们需要"
GROUPBY"
子句(后面一个教程介绍),但是这些函数也可以在不用使用"
子句的情况被使用,比如:
SELECTAVG(salary)
FROMemployee;
这条语句将返回单一的结果,它包含了从employee表中所有salary列数据的平均值。
为了更好的理解,我们再举个例子:
WHEREtitle='
Programmer'
以上这条语句将返回employee表中所有title列为'
的数据的平均值。
下面的例子中使用的语句跟其它合计函数有点不用,因为没有一个类被指定给COUNT函数。
这条语句实际上将返回employee表的行数,如下:
SELECTCount(*)
FROMemployees;
最后给出本节教程的配套练习:
1)作一个公司的销售表items_ordered,里面有price、product和amount。
从items_ordered表中选择price最大的数据。
这里提示:
使用MAX函数。
2)计算items_ordered表中的行数。
(11)GROUPBY子句
GROUPBY子句
首先讲讲GROUPBY子句语法:
SELECTcolumn1,SUM(column2)
FROM"
list-of-tables"
GROUPBY"
这个GROUPBY子句将集中所有的行在一起,它包含了指定列的数据以及允许合计函数来计算一个或者多个列。
当然最好解释的方法是给出一个例子啦:
假设我们将从employee表中搜索工资最高的列,可以使用以下的SQL语句:
SELECTmax(salary),dept
FROMemployee
GROUPBYdept;
这条语句将在每一个单独的部门中选择工资最高的工资。
结果他们的salary和dept将被返回。
(12)HAVING子句
HAVING子句
下面先给出HAVING子句的语法:
HAVING"
这个HAVING子句允许你为每一个组指定条件,换句话说,可以根据你指定的条件来选择行。
如果你想使用HAVING子句的话,它应该处再GROUPBY子句之后。
下面将以一个例子来解释HAVING子句。
假设我们的employee表中包含雇员的name、departmen、salary和age。
如果你想为每个部门中每个雇员选择平均工资的话,你可以使用下面的SQL语句:
SELECTdept,avg(salary)
当然,如果你还想只计算和显示salary大于20000的平均工资的话,你还可以加上HAVING子句:
GROUPBYdept
HAVINGavg(salary)>
20000;
(13)ORDERBY子句
ORDERBY子句
ORDERBY子句的语法为:
ORDERBY"
[ASC|DESC];
ORDERBY是一个可选的子句,它允许你根据指定要orderby的列来以上升或者下降的顺序来显示查询的结果。
例如:
ASC=AscendingOrder–这个是缺省的
DESC=DescendingOrder
SELECTemployee_id,dept,name,age,salary
FROMemployee_info
WHEREdept='
Sales'
ORDERBYsalary;
这条SQL语句将从employee_info表中列dept等于'
选择employee_id,、dept、name、age和salary,并且根据他们的salary按升序的顺序来列出检索结果。
如果你想对多列排序的话,那么在列与列之间要加上逗号,比如:
FROMempl
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- SQL 语言 入门教程