您好,欢迎访问三七文档
第四模块结构化查询语言SQLSQL(StructuredQueryLanguage):结构化查询语言,是现在应用最广泛的关系数据库语言。在等级考试中:单项选择题、读程序题、程序填空题(每次都涉及)、上机考试(表单设计题)都会考察到本章知识点。1.SQL的数据定义功能(CREATETABLE-SQL、ALTERTABLE-SQL、DROPTABLE-SQL)一、SQL的数据定义功能1、创建数据表命令:CREATETABLE表名(列定义[,列定义][表约束])功能:创建数据表结构例:建立一个xs表CREATETABLEXS(学号C(4),姓名C(6),性别C(2),出生日期D,三好生L)2、修改表的结构(1)增加字段ALTERTABLE表名;ADD[COLUMN]字段名1类型;ADD[COLUMN]字段名2类型…功能:增加表的字段例1:在XS中增加一个字段专业名称ALTERTABLEXSADD专业名称C(10)例2:在XS中增加2个字段:籍贯,特长ALTERTABLEXSADD籍贯C(10)ADD特长M(2)修改字段属性ALTERTABLE表名;ALTER[COLUMN]字段名1类型;ALTER[COLUMN]字段名2类型…功能:修改表中字段的属性例1:将XS中专业名称字段修改为C(20)ALTERTABLEXSALTER专业名称C(20)(3)删除字段ALTERTABLE表名;DROP[COLUMN]字段名1;DROP[COLUMN]字段名2…功能:删除表中字段例1:删除XS中“专业名称”字段ALTERTABLEXSDROP专业名称(4)修改字段名ALTERTABLE表名RENAME字段名1TO字段名2例1:将XS中的“姓名”字段改为“学生姓名”ALTERTABLEXSRENAME姓名TO学生姓名3、删除表命令:DROPTABLE表名功能:删除数据表例1:删除XS表DROPTABLEXS第四模块结构化查询语言SQL2.SQL的数据更新功能(INSERT-SQL、DELETE-SQL、UPDATE-SQL)1、插入记录命令:INSERTINTO表名([字段名1[,字段名2,…])VALUES(表达式1[,表达式2,…])功能:在表尾追加一条新记录,并直接馈入记录数据.例1:向课程表中插入一条记录INSERTINTO课程(课程号,课程名,课时)VALUES(c170,软件工程,32)2、更新记录命令:UPDATE表名SET字段名=表达式[,字段名=表达式]…[WHERE条件]功能:对表中的一行或多行记录的某些字段值进行修改例1:UPDATE课程;SET课时=48;WHERE课程号=c170练习:把教师表中工资小于或等于2000元的教师的工资提高20%UPDATE教师;SET工资=1.2*工资;WHERE工资=20003、删除记录命令:DELETEFROM表名[WHERE条件]功能:删除表中一行或多行记录例:DELEFROM课程WHERE课程号=c170第33次理论:三题4第31次理论:一题11、三题6、7第四模块结构化查询语言SQL3.SQL的查询功能(SELECT-SQL):简单查询、条件查询、统计查询、分组查询、查询排序、连接查询、嵌套查询、查询结果的输出1、SQL语句的核心是数据()A.查询B.定义C.操纵D.控制1、投影查询SELECT[别名.]列表达式[AS栏名]FROM[数据库!]表名说明:(1)[别名.]列表达式[AS栏名]列表达式可以是字段名,也可是函数.(2)FROM[数据库!]表名---指明要查询的数据表。数据库!表名指定非当前数据库表.例1:查询学生的基本情况SELECT学号,姓名,性别FROM学生若查询全部字段列表达式用*,表示选中所有的字段。例2:查询教师表的全部信息SELE*FROM教师别名是字段所在的表名。如果是多个表都有的字段,需指明表名。例3:SELE姓名FROM学生,教师栏名用于指定输出时显示的列标题,可以不同于字段名.例4:查询学生基本情况,同时指定”学号”为“学生编号”,“姓名”为“学生姓名”SELECT学号AS学生编号,姓名AS学生姓名FROM学生(1)取消重复记录ALL(缺省)表选出的记录中包含重复记录,DISTINCT则表示选出的记录中不包含重复记录.例5:查询选修了课程的学生的学号SELEDISTINCT学号FROM选课第29次理论:一题52、条件查询使用WHERE子句指定查询条件。例1:查询学生表中所有女生的记录SELECT*FROM学生WHERE性别=“女”例2:从学生表中查询入校总分大于等于570分的男生的学号,姓名,性别,入校总分SELECT学号,姓名,性别,入校总分FROM学生WHERE性别=“男”AND入校总分=570练习:在“教师”数据表中,查询职称为“助教”或“讲师”人员的姓名,工资和部门。SELECT姓名,工资,部门(1)教师WHERE职称(2)第29次理论:一题6几个范围关键字的应用:(1)确定范围BETWEEN下界表达式AND上界表达式例1:从选课表中查询成绩在85到100分(包含)之间的学生情况。SELECT*FROM选课WHERE成绩BETWEEN85AND100等效于:SELECT*FROM选课WHERE成绩BETWEEN成绩=85AND成绩=100不在某个范围:NOTBETWEEN下界表达式AND上界表达式(2)确定集合“IN”:查询属性属于指定集合的元组例:查询选修了课程“c140”或“c160”的学生的学号、课程号和成绩SELECT学号,课程号,成绩FROM选课WHERE课程号IN(“c140”,“c160”)等效于:SELECT学号,课程号,成绩FROM选课WHERE课程号=“c140”OR课程号=“c160”“NOTIN”:查询指定集合外的元组3、统计查询常用函数及功能:AVG:按列计算平均值SUM:按列计算值的总和COUNT:按列值统计个数MAX:求一列中的最大值MIN:求一列中的最小值说明:在以上函数中,可使用ALL或DISTINCT例1:计算选课表中最高成绩、最低成绩和平均成绩SELECTMAX(成绩)AS最高分,MIN(成绩)AS最低成绩,AVG(成绩)AS平均成绩FROM选课例2:从学生表中统计三好生的人数SELECTCOUNT(*)FROM学生WHERE三好生注:COUNT(*)用来统计元组个数,不消除重复行,不允许使用DISTINCT例3:统计选课表中有多少门课SELECTCOUNT(DISTINCT课程号)AS选课表中课程数FROM选课4、分组查询使用GROUPBY子句可将查询结果按属性列或属性列组合在行的方向上进行分组例1:从选课中查询学生选修同一门课程的人数SELECT课程号,COUNT(*)AS选修该课程的人数FROM选课GROUPBY课程号注:若在分组后还要按一定的条件进行筛选,需使用HAVING子句例2:查询学生选修同一门课程超过4人的课程号和人数SELECT课程号,COUNT(学号)AS选修该课程的人数FROM选课GROUPBY课程号HAVINGCOUNT(学号)=4注:WHERE和HAVING的区别为:WHERE:作用于基本表或视图,从中选择满足条件的元组HAVING:作用于组,选择满足条件的组。用于GROUPBY之后第33次理论:一题10、11第32次理论:一题115、查询的排序使用ORDERBY子句对查询结果按一个或多个属性列的升序(ASC)或降序(DESC)排列。ORDERBY子句必须出现在其他子句之后(1)单列排序例:将学生表按入校总分从低到高显示SELE*FROM学生ORDERBY入校总分(2)多列排序例2:从选课表中查询成绩大于80分的学号、课程号和成绩,查询结果按学号升序排列,学号相同的按成绩降序排序SELECT*FROM选课WHERE成绩80ORDERBY学号,成绩DESC(3)查询前面部分记录TOPn[PERCENT]:指定查询结果包括特定数目的行数(或包括全部行数的百分比)注:使用TOP子句时必须用ORDERBY子句例:在学生表中查询入校总分最高的2位学生SELECT*TOP2FROM学生ORDERBY入校总分DESC第32次理论:三题46、连接查询当一个查询同时涉及多个表时,称为连接查询。连接查询实际上是通过各个表之间共同属性列(连接字段)的关联来查询数据的。格式①SELECT查询列FROM表1,表2WHERE连接条件例1:从学生和选课表中查询学生选课成绩情况select学生.学号,学生.姓名,选课.课程号,选课.成绩;from学生,选课;where学生.学号=选课.学号;例2:从学生、课程和选课表中查询学生选课课程名及成绩情况(3个表)select学生.学号,学生.姓名,选课.课程号,课程.课程名,选课.成绩;from学生,课程,选课;where学生.学号=选课.学号and课程.课程号=选课.课程号第30次理论:三题3(2)格式②SELECT查询列FROM表1INNERJOIN表2ON连接条件例1:select学生.学号,选课.课程号,选课.成绩;from学生;innerjoin选课on学生.学号=选课.学号;例2:select学生.学号,选课.课程号,课程.课程名;from选课;innerjoin学生on学生.学号=选课.学号;innerjoin课程on课程.课程号=选课.课程号第33次理论:三题4(3)7、修改查询去向INTO与TO子句:指定查询结果的输出去向,默认查询结果显示在浏览窗口中.INTO子句中的目标有3种选项:DBF|TABLE表名:结果到表文件CURSOR临时表名ARRAY数组TO子句有3种选项:FILE文件名:结果放到文本文件中PRINTSCREEN例1:查询学生表中男生的记录,将查询结果保存在表XS中SELECT*FROMXSWHERE性别=“男”INTOTABLEXS第30次理论:三题3(1)除了单选题、填空题,还有读程序选择题第33次理论:二题2第30次理论:二题4
本文标题:第4模块SQL
链接地址:https://www.777doc.com/doc-3261972 .html