SQL语句教学讲解课件_第1页
SQL语句教学讲解课件_第2页
SQL语句教学讲解课件_第3页
SQL语句教学讲解课件_第4页
SQL语句教学讲解课件_第5页
已阅读5页,还剩57页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第四模块结构化查询语言SQLSQL(StructuredQueryLanguage):结构化查询语言,是现在应用最广泛的关系数据库语言。

在等级考试中:单项选择题、读程序题、程序填空题(每次都涉及)、上机考试(表单设计题)都会考察到本章知识点。1.SQL的数据定义功能(CREATETABLE-SQL、ALTERTABLE-SQL、DROPTABLE-SQL).第四模块结构化查询语言SQL.1一、SQL的数据定义功能1、创建数据表命令:CREATETABLE<表名>(<列定义>[,<列定义>][<表约束>])功能:创建数据表结构例:建立一个xs表CREATETABLEXS(学号C(4),姓名C(6),性别C(2),出生日期D,三好生L).一、SQL的数据定义功能.22、修改表的结构(1)增加字段

ALTERTABLE<表名>;

ADD[COLUMN]<字段名1><类型>;

ADD[COLUMN]<字段名2><类型>…功能:增加表的字段例1:在XS中增加一个字段专业名称ALTERTABLEXSADD专业名称C(10)例2:在XS中增加2个字段:籍贯,特长ALTERTABLEXSADD籍贯C(10)ADD特长M.2、修改表的结构.3(2)修改字段属性

ALTERTABLE<表名>;

ALTER[COLUMN]<字段名1><类型>;

ALTER[COLUMN]<字段名2><类型>…功能:修改表中字段的属性例1:将XS中专业名称字段修改为C(20)ALTERTABLEXSALTER专业名称C(20)

.(2)修改字段属性.4(3)删除字段

ALTERTABLE<表名>;

DROP[COLUMN]<字段名1>;

DROP[COLUMN]<字段名2>…功能:删除表中字段例1:删除XS中“专业名称”字段ALTERTABLEXSDROP专业名称

.(3)删除字段.5(4)修改字段名ALTERTABLE<表名>RENAME<字段名1>TO<字段名2>例1:将XS中的“姓名”字段改为“学生姓名”

ALTERTABLEXSRENAME姓名TO学生姓名3、删除表命令:DROPTABLE<表名>功能:删除数据表例1:删除XS表DROPTABLEXS.(4)修改字段名.6第四模块结构化查询语言SQL2.SQL的数据更新功能(INSERT-SQL、DELETE-SQL、UPDATE-SQL).第四模块结构化查询语言SQL.7

1、插入记录命令:

INSERTINTO<表名>([<字段名1>[,<字段名2,…>])

VALUES(<表达式1>[,<表达式2>,…])功能:在表尾追加一条新记录,并直接馈入记录数据.例1:向课程表中插入一条记录

INSERTINTO课程(课程号,课程名,课时)VALUES("c170","软件工程",32)

.1、插入记录.82、更新记录命令:UPDATE<表名>

SET<字段名>=<表达式>[,<字段名>=<表达式>]…[WHERE<条件>]功能:对表中的一行或多行记录的某些字段值进行修改例1:

UPDATE课程;SET课时=48;WHERE课程号="c170"

.2、更新记录.9练习:把教师表中工资小于或等于2000元的教师的工资提高20%

UPDATE教师;SET工资=1.2*工资;WHERE工资<=2000

3、删除记录命令:DELETE

FROM<表名>[WHERE<条件>]功能:删除表中一行或多行记录例:

DELEFROM课程WHERE课程号="c170".练习:把教师表中工资小于或等于2000元的教师的10第33次理论:三题4第31次理论:一题11、三题6、7第四模块结构化查询语言SQL3.SQL的查询功能(SELECT-SQL):简单查询、条件查询、统计查询、分组查询、查询排序、连接查询、嵌套查询、查询结果的输出

1、

SQL语句的核心是数据()A.查询B.定义C.操纵D.控制.第33次理论:三题4.111、投影查询

SELECT

[<别名>.]<列表达式>[AS<栏名>]FROM[<数据库>!]<表名>

说明:(1)[<别名>.]<列表达式>[AS<栏名>]<列表达式>可以是字段名,也可是函数.(2)FROM[<数据库>!]<表名>---指明要查询的数据表。<数据库>!<表名>指定非当前数据库表.例1:查询学生的基本情况

SELECT学号,姓名,性别FROM学生.1、投影查询.12若查询全部字段<列表达式>用*,表示选中所有的字段。例2:查询教师表的全部信息

SELE*FROM教师<别名>是字段所在的表名。如果是多个表都有的字段,需指明表名。例3:SELE姓名FROM学生,教师.若查询全部字段.13<栏名>用于指定输出时显示的列标题,可以不同于字段名.例4:查询学生基本情况,同时指定”学号”为“学生编号”,“姓名”为“学生姓名”

SELECT学号AS学生编号,姓名AS学生姓名FROM学生(1)取消重复记录ALL(缺省)表选出的记录中包含重复记录,DISTINCT则表示选出的记录中不包含重复记录.例5:查询选修了课程的学生的学号

SELEDISTINCT学号FROM选课第29次理论:一题5.<栏名>用于指定输出时显示的列标题,可以不14

2、条件查询使用WHERE子句指定查询条件。例1:查询学生表中所有女生的记录SELECT*FROM学生WHERE性别=“女”例2:从学生表中查询入校总分大于等于570分的男生的学号,姓名,性别,入校总分SELECT学号,姓名,性别,入校总分FROM学生WHERE性别=“男”AND入校总分>=570.2、条件查询.15

练习:在“教师”数据表中,查询职称为“助教”或“讲师”人员的姓名,工资和部门。SELECT姓名,工资,部门(1)教师WHERE职称(2)第29次理论:一题6

.练习:在“教师”数据表中,查询职称为“助教”或“讲师”16几个范围关键字的应用:(1)确定范围

BETWEEN

下界表达式

AND

上界表达式例1:从选课表中查询成绩在85到100分(包含)之间的学生情况。SELECT*FROM选课WHERE成绩BETWEEN85AND100等效于:SELECT*FROM选课WHERE成绩BETWEEN成绩>=85AND成绩<=100不在某个范围:

NOT

BETWEEN

下界表达式

AND

上界表达式

.几个范围关键字的应用:.17(2)确定集合“IN”:查询属性属于指定集合的元组例:查询选修了课程“c140”或“c160”的学生的学号、课程号和成绩

SELECT学号,课程号,成绩FROM选课WHERE课程号IN(“c140”,“c160”)等效于:SELECT学号,课程号,成绩FROM选课WHERE课程号=“c140”OR课程号=“c160”“NOTIN”:查询指定集合外的元组

.(2)确定集合.183、统计查询常用函数及功能:

AVG:按列计算平均值

SUM:按列计算值的总和

COUNT:按列值统计个数

MAX:求一列中的最大值

MIN:求一列中的最小值说明:在以上函数中,可使用ALL或DISTINCT

.3、统计查询.19

例1:计算选课表中最高成绩、最低成绩和平均成绩

SELECTMAX(成绩)AS最高分,MIN(成绩)AS最低成绩,AVG(成绩)AS平均成绩FROM选课例2:从学生表中统计三好生的人数SELECTCOUNT(*)FROM学生WHERE三好生注:COUNT(*)用来统计元组个数,不消除重复行,不允许使用DISTINCT

.例1:计算选课表中最高成绩、最低成绩和平均成绩.20例3:统计选课表中有多少门课

SELECTCOUNT(DISTINCT课程号)AS选课表中课程数FROM选课

.例3:统计选课表中有多少门课.214、分组查询使用GROUPBY子句可将查询结果按属性列或属性列组合在行的方向上进行分组例1:从选课中查询学生选修同一门课程的人数

SELECT课程号,COUNT(*)AS选修该课程的人数FROM选课GROUPBY课程号

注:若在分组后还要按一定的条件进行筛选,需使用HAVING子句.4、分组查询.22例2:查询学生选修同一门课程超过4人的课程号和人数SELECT课程号,COUNT(学号)AS选修该课程的人数FROM选课GROUPBY课程号HAVINGCOUNT(学号)>=4

注:WHERE和HAVING的区别为:WHERE:作用于基本表或视图,从中选择满足条件的元组HAVING:作用于组,选择满足条件的组。用于GROUPBY之后第33次理论:一题10、11第32次理论:一题11.例2:查询学生选修同一门课程超过4人的课23

5、查询的排序

使用ORDERBY子句对查询结果按一个或多个属性列的升序(ASC)或降序(DESC)排列。ORDERBY子句必须出现在其他子句之后(1)单列排序例:将学生表按入校总分从低到高显示SELE*FROM学生ORDERBY入校总分

.5、查询的排序.24(2)多列排序例2:从选课表中查询成绩大于80分的学号、课程号和成绩,查询结果按学号升序排列,学号相同的按成绩降序排序

SELECT*FROM选课WHERE成绩>80ORDERBY学号,成绩DESC

.(2)多列排序.25(3)查询前面部分记录TOP<n>[PERCENT]:指定查询结果包括特定数目的行数(或包括全部行数的百分比)注:使用TOP子句时必须用ORDERBY子句例:在学生表中查询入校总分最高的2位学生

SELECT*TOP2FROM学生ORDERBY入校总分DESC

第32次理论:三题4

.(3)查询前面部分记录.266、连接查询当一个查询同时涉及多个表时,称为连接查询。连接查询实际上是通过各个表之间共同属性列(连接字段)的关联来查询数据的。

格式①SELECT查询列FROM表1,表2WHERE连接条件例1:从学生和选课表中查询学生选课成绩情况select学生.学号,学生.姓名,选课.课程号,选课.成绩;from学生,选课;where学生.学号=选课.学号;

.6、连接查询.27例2:从学生、课程和选课表中查询学生选课课程名及成绩情况(3个表)select学生.学号,学生.姓名,选课.课程号,课程.课程名,选课.成绩;from学生,课程,选课;where学生.学号=选课.学号and课程.课程号=选课.课程号第30次理论:三题3(2)

.例2:从学生、课程和选课表中查询学生选课课程名及成绩情况28格式②

SELECT查询列FROM表1INNERJOIN表2ON连接条件例1:select学生.学号,选课.课程号,选课.成绩;from学生;innerjoin选课on学生.学号=选课.学号;例2:select学生.学号,选课.课程号,课程.课程名;from选课;innerjoin学生on学生.学号=选课.学号;innerjoin课程on课程.课程号=选课.课程号第33次理论:三题4(3).格式②.29

7、修改查询去向

INTO与TO子句:指定查询结果的输出去向,默认查询结果显示在浏览窗口中.INTO子句中的<目标>有3种选项:

DBF|TABLE<表名>:结果到表文件CURSOR<临时表名>ARRAY<数组>TO子句有3种选项:FILE<文件名>:结果放到文本文件中PRINTSCREEN.7、修改查询去向.30

例1:查询学生表中男生的记录,将查询结果保存在表XS中SELECT*FROMXSWHERE性别=“男”INTOTABLEXS第30次理论:三题3(1)除了单选题、填空题,还有读程序选择题第33次理论:二题2第30次理论:二题4.例1:查询学生表中男生的记录,将查询结果保存在表XS中31第四模块结构化查询语言SQLSQL(StructuredQueryLanguage):结构化查询语言,是现在应用最广泛的关系数据库语言。

在等级考试中:单项选择题、读程序题、程序填空题(每次都涉及)、上机考试(表单设计题)都会考察到本章知识点。1.SQL的数据定义功能(CREATETABLE-SQL、ALTERTABLE-SQL、DROPTABLE-SQL).第四模块结构化查询语言SQL.32一、SQL的数据定义功能1、创建数据表命令:CREATETABLE<表名>(<列定义>[,<列定义>][<表约束>])功能:创建数据表结构例:建立一个xs表CREATETABLEXS(学号C(4),姓名C(6),性别C(2),出生日期D,三好生L).一、SQL的数据定义功能.332、修改表的结构(1)增加字段

ALTERTABLE<表名>;

ADD[COLUMN]<字段名1><类型>;

ADD[COLUMN]<字段名2><类型>…功能:增加表的字段例1:在XS中增加一个字段专业名称ALTERTABLEXSADD专业名称C(10)例2:在XS中增加2个字段:籍贯,特长ALTERTABLEXSADD籍贯C(10)ADD特长M.2、修改表的结构.34(2)修改字段属性

ALTERTABLE<表名>;

ALTER[COLUMN]<字段名1><类型>;

ALTER[COLUMN]<字段名2><类型>…功能:修改表中字段的属性例1:将XS中专业名称字段修改为C(20)ALTERTABLEXSALTER专业名称C(20)

.(2)修改字段属性.35(3)删除字段

ALTERTABLE<表名>;

DROP[COLUMN]<字段名1>;

DROP[COLUMN]<字段名2>…功能:删除表中字段例1:删除XS中“专业名称”字段ALTERTABLEXSDROP专业名称

.(3)删除字段.36(4)修改字段名ALTERTABLE<表名>RENAME<字段名1>TO<字段名2>例1:将XS中的“姓名”字段改为“学生姓名”

ALTERTABLEXSRENAME姓名TO学生姓名3、删除表命令:DROPTABLE<表名>功能:删除数据表例1:删除XS表DROPTABLEXS.(4)修改字段名.37第四模块结构化查询语言SQL2.SQL的数据更新功能(INSERT-SQL、DELETE-SQL、UPDATE-SQL).第四模块结构化查询语言SQL.38

1、插入记录命令:

INSERTINTO<表名>([<字段名1>[,<字段名2,…>])

VALUES(<表达式1>[,<表达式2>,…])功能:在表尾追加一条新记录,并直接馈入记录数据.例1:向课程表中插入一条记录

INSERTINTO课程(课程号,课程名,课时)VALUES("c170","软件工程",32)

.1、插入记录.392、更新记录命令:UPDATE<表名>

SET<字段名>=<表达式>[,<字段名>=<表达式>]…[WHERE<条件>]功能:对表中的一行或多行记录的某些字段值进行修改例1:

UPDATE课程;SET课时=48;WHERE课程号="c170"

.2、更新记录.40练习:把教师表中工资小于或等于2000元的教师的工资提高20%

UPDATE教师;SET工资=1.2*工资;WHERE工资<=2000

3、删除记录命令:DELETE

FROM<表名>[WHERE<条件>]功能:删除表中一行或多行记录例:

DELEFROM课程WHERE课程号="c170".练习:把教师表中工资小于或等于2000元的教师的41第33次理论:三题4第31次理论:一题11、三题6、7第四模块结构化查询语言SQL3.SQL的查询功能(SELECT-SQL):简单查询、条件查询、统计查询、分组查询、查询排序、连接查询、嵌套查询、查询结果的输出

1、

SQL语句的核心是数据()A.查询B.定义C.操纵D.控制.第33次理论:三题4.421、投影查询

SELECT

[<别名>.]<列表达式>[AS<栏名>]FROM[<数据库>!]<表名>

说明:(1)[<别名>.]<列表达式>[AS<栏名>]<列表达式>可以是字段名,也可是函数.(2)FROM[<数据库>!]<表名>---指明要查询的数据表。<数据库>!<表名>指定非当前数据库表.例1:查询学生的基本情况

SELECT学号,姓名,性别FROM学生.1、投影查询.43若查询全部字段<列表达式>用*,表示选中所有的字段。例2:查询教师表的全部信息

SELE*FROM教师<别名>是字段所在的表名。如果是多个表都有的字段,需指明表名。例3:SELE姓名FROM学生,教师.若查询全部字段.44<栏名>用于指定输出时显示的列标题,可以不同于字段名.例4:查询学生基本情况,同时指定”学号”为“学生编号”,“姓名”为“学生姓名”

SELECT学号AS学生编号,姓名AS学生姓名FROM学生(1)取消重复记录ALL(缺省)表选出的记录中包含重复记录,DISTINCT则表示选出的记录中不包含重复记录.例5:查询选修了课程的学生的学号

SELEDISTINCT学号FROM选课第29次理论:一题5.<栏名>用于指定输出时显示的列标题,可以不45

2、条件查询使用WHERE子句指定查询条件。例1:查询学生表中所有女生的记录SELECT*FROM学生WHERE性别=“女”例2:从学生表中查询入校总分大于等于570分的男生的学号,姓名,性别,入校总分SELECT学号,姓名,性别,入校总分FROM学生WHERE性别=“男”AND入校总分>=570.2、条件查询.46

练习:在“教师”数据表中,查询职称为“助教”或“讲师”人员的姓名,工资和部门。SELECT姓名,工资,部门(1)教师WHERE职称(2)第29次理论:一题6

.练习:在“教师”数据表中,查询职称为“助教”或“讲师”47几个范围关键字的应用:(1)确定范围

BETWEEN

下界表达式

AND

上界表达式例1:从选课表中查询成绩在85到100分(包含)之间的学生情况。SELECT*FROM选课WHERE成绩BETWEEN85AND100等效于:SELECT*FROM选课WHERE成绩BETWEEN成绩>=85AND成绩<=100不在某个范围:

NOT

BETWEEN

下界表达式

AND

上界表达式

.几个范围关键字的应用:.48(2)确定集合“IN”:查询属性属于指定集合的元组例:查询选修了课程“c140”或“c160”的学生的学号、课程号和成绩

SELECT学号,课程号,成绩FROM选课WHERE课程号IN(“c140”,“c160”)等效于:SELECT学号,课程号,成绩FROM选课WHERE课程号=“c140”OR课程号=“c160”“NOTIN”:查询指定集合外的元组

.(2)确定集合.493、统计查询常用函数及功能:

AVG:按列计算平均值

SUM:按列计算值的总和

COUNT:按列值统计个数

MAX:求一列中的最大值

MIN:求一列中的最小值说明:在以上函数中,可使用ALL或DISTINCT

.3、统计查询.50

例1:计算选课表中最高成绩、最低成绩和平均成绩

SELECTMAX(成绩)AS最高分,MIN(成绩)AS最低成绩,AVG(成绩)AS平均成绩FROM选课例2:从学生表中统计三好生的人数SELECTCOUNT(*)FROM学生WHERE三好生注:COUNT(*)用来统计元组个数,不消除重复行,不允许使用DISTINCT

.例1:计算选课表中最高成绩、最低成绩和平均成绩.51例3:统计选课表中有多少门课

SELECTCOUNT(DISTINCT课程号)AS选课表中课程数FROM选课

.例3:统计选课表中有多少门课.524、分组查询使用GROUPBY子句可将查询结果按属性列或属性列组合在行的方向上进行分组例1:从选课中查询学生选修同一门课程的人数

SELECT课程号,COUNT(*)AS选修该课程的人数FROM选课GROUPBY课程号

注:若在分组后还要按一定的条件进行筛选,需使用HAVING子句.4、分组查询.53例2:查询学生选修同一门课程超过4人的课程号和人数SELECT课程号,COUNT(学号)AS选修该课程的人数FROM选课GROUPBY课程号HAVINGCOUNT(学号)>=4

注:WHERE和HAVING的区别为:WHERE:作用于基本表或视图,从中选择满足条件的元组HAVING:作用于组,选择满足条件的组。用于GROUPBY之后第33次理论:一题10、11第32次理论:一题11.例2:查询学生选修同一门课程超过4人的课54

5、查询的排序

使用ORDERBY子句对查询结果按一个或多个属性列的升序(ASC)或降序(DESC)排列。ORDERBY子句必须出现在其他子句之后(1)单列排序例:将学生表按入校总分从低到高显示SELE*FROM学生ORDERBY入校总分

.5、查询的排序.55(2)多列排序例2:从选课表中查询成绩大于80分的学号、课程号和成绩,查询结果按学号升序排列,学号相同的按成绩降序排序

SELECT*FROM选课WHERE成绩>80ORDERBY学号,成绩DESC

.(2)多列排序.56(3)查询前面部分记录TOP<n>[

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论