第10章关系数据库标准语言SQL第10章关系数据库标准语言SQL第10章关系数据库标准语言SQL教学目标掌握SQL修改表结构的规则与方法;掌握SQL修改数据的规则与方法;掌握SQL数据查询功能的语句规则和特点。重点与难点:表定义中数据完整性规则的设定、多表连接查询的方法与使用规则、在分组查询中使用函数的规则和方法、使用嵌套子查询的方法和规则、综合应用SQL数据查询功能完成实际问题的能力。第10章关系数据库标准语言SQL10.1SQL概述第10章关系数据库标准语言SQLSQL是StructuredQueryLanguage的缩写,即结构化查询语言,是关系数据库的标准语言。主要特点:⑴SQL是一种功能齐全的一体化语言。⑵SQL是一种高度非过程化的语言。⑶SQL语言简洁,易学易用。⑷语言共享。第10章关系数据库标准语言SQLSQL语言可以分成以下几组:数据定义语言DDL(DataDefinitionLanguage):包括定义、修改与删除基本表及建立与删除索引等。数据操纵语言DML(DataManipulationLanguage):包括插入、修改与删除数据等。数据查询语言DQL(DataQueryLanguage):包括单表查询、连接查询、嵌套查询等各种查询功能。数据控制语言DCL(DataControlLanguage):包括数据的安全性控制、数据的完整性控制、数据库的恢复及并发控制等功能。第10章关系数据库标准语言SQLAccess支持数据定义、数据查询和数据操作功能。SQL功能命令动词数据定义CREAT、ALTER、DROP数据操作INSERT、DELETE、UPDATE数据查询SELECT第10章关系数据库标准语言SQL10.2数据定义第10章关系数据库标准语言SQL一.创建表格式:CREATETABLE表名(字段名1类型名[(长度)][PRIMARYKEY][NOTNULL][,字段名2类型名[(长度)][NOTNULL]]…)功能:创建一个数据表的结构。说明:表名:要创建的数据表的名字。字段名类型名:要创建的数据表的字段名和字段类型。字段长度仅限于文本及二进制字段。PRIMARYKEY:表示将该字段定义为主键。NOTNULL:不允许字段值为空,而NULL允许字段值为空。第10章关系数据库标准语言SQL例10.1在职工管理数据库中建立一个数据表“职工”,表结构由职工号、姓名、性别、职称、部门、出生日期、婚否等字段组成。并设置“职工号”为主键。操作步骤如下:①创建“职工管理”数据库。②在“职工管理”数据库窗口中选择“查询”对象。③双击“在设计视图中创建查询”,关闭弹出的“显示表”对话框,打开查询设计视图窗口。④选择“查询”菜单中“SQL特定查询”下的“数据定义”命令项,打开“数据定义查询”窗口。⑤在“数据定义查询”窗口中输入SQL语句,每个数据定义查询只能包含一条数据定义语句。第10章关系数据库标准语言SQLCREATEDATABASE职工管理CREATETABLE职工(职工号TEXT(5)PRIMARYKEY,姓名TEXT(4),性别TEXT(1),职称TEXT(4),部门TEXT(8),出生日期DATE,婚否LOGICAL)⑥保存查询为“数据表定义查询(职工)”,查询建立完毕。⑦运行查询。在设计视图中,单击工具栏上的“运行”按钮,执行SQL语句,完成创建表的操作。⑧在数据库窗口中单击“表”对象,可以看到在“表”列表框中多了一个“职工”表,这就是用SQL的定义查询创建的表。第10章关系数据库标准语言SQL例10.2在职工管理数据库中建立一个数据表“工资”,并通过“职工号”字段建立与“职工”表的关系。CREATETABLE工资(职工号TEXT(5)PRIMARYKEYREFERENCES职工,工资Single,津贴Single,所得税Single,公积金Single,水电费Single,应扣Single,实发Single)其中的“REFERENCES职工”表示与“职工”表建立关系。第10章关系数据库标准语言SQL格式:DROPTABLE表名功能:删除指定的数据表文件说明:一定要慎用DROPTABLE语句,一旦使用以后就无法恢复表或其中的数据,此表上建立的索引也将自动删除,并且无法恢复。二.删除表第10章关系数据库标准语言SQL例10.3删除例10.2建立的工资表操作步骤如下:①打开“数据定义查询”窗口。②输入删除表的SQL语句:DROPTABLE工资③单击工具栏上的“运行”按钮,完成删除表的操作,“工资”表将从“职工管理”数据库窗口消失。第10章关系数据库标准语言SQL三、修改表的结构格式一:ALTERTABLE表名[ADD新字段名1类型名[(长度)][,新字段名2类型名[(长度)]…]][DROP字段名1[,字段名2…][ALTER字段名1类型名[(长度)][,字段名2类型名[(长度)]…]]功能:修改指定的数据表的结构。说明:表名:要修改的数据表的名字。ADD子句用于增加新的字段。DROP子句用于删除指定的字段。ALTER子句用于修改原有字段的定义,包括字段名、数据类型和字段的长度。应注意ADD子句、DROP子句和ALTER子句不能同时使用。第10章关系数据库标准语言SQL例10.4为职工表增加一个电话号码字段操作步骤如下:①在“职工管理”数据库窗口中选择“查询”对象。②双击“在设计视图中创建查询”,关闭弹出的“显示表”对话框,打开查询设计视图窗口。③选择“查询”菜单中“SQL特定查询”下的“数据定义”命令项,打开“数据定义查询”窗口。④在“数据定义查询”窗口中,输入修改表结构的SQL语句:ALTERTABLE职工ADD电话号码Text(8)⑤单击工具栏上的“运行”按钮,完成修改表结构的操作。第10章关系数据库标准语言SQL例10.5将职工表的姓名字段的宽度由原来的6改为8,SQL语句如下:ALTERTABLE职工ALTER姓名Text(8)例10.6删除职工表“电话号码”字段,SQL语句如下:ALTERTABLE职工DROP电话号码第10章关系数据库标准语言SQL10.3数据操作第10章关系数据库标准语言SQL一.插入记录格式:INSERTINTO表名[(字段名清单)]VALUES(表达式清单)功能:在指定的数据表的尾部添加一条新记录。说明:表名:要插入数据的表的名字。字段名清单为数据表要插入新值的字段。VALUES(表达式清单)为数据表要插入新值的各字段的数据值。字段名清单和VALUES子句中(表达式清单)的个数和数据类型要完全一致。若省略字段名清单,则数据表中的所有字段必须在VALUES子句中都有相应的值。第10章关系数据库标准语言SQL例10.7在职工表尾部添加一条新记录。操作步骤如下:①在“职工管理”数据库窗口中,打开“数据定义查询”窗口。②输入SQL语句:INSERTINTO职工(职工号,姓名,性别,职称,部门,出生日期,婚否)VALUES(01001,陈周,男,教授,计算机,#1958-03-05#,yes)③单击工具栏上的“运行”按钮,完成插入数据的操作。例10.8在职工表尾部插入第二条记录,SQL语句如下:INSERTINTO职工VALUES(03021,刘杨,女,副教授,管理,#1962-06-18#,no)第10章关系数据库标准语言SQL格式:UPDATE表名SET字段名1=表达式1[,字段名2=表达式2…][WHERE条件]功能:根据WHERE子句指定的条件,对指定记录的字段值进行更新说明:表名:要更新数据的表的名字。字段名=表达式是指用表达式的值替代字段名的值,一次可更新多个字段的值。若省略WHERE子句,则更新全部记录。一次只能在单一的表中更新记录。二.更新数据第10章关系数据库标准语言SQL例10.9计算工资表中的应扣和实发数。①在“职工管理”数据库窗口中,打开“数据定义查询”窗口②输入SQL语句:UPDATE工资SET应扣=所得税+公积金+水电费,实发=工资+补贴-应扣③单击工具栏上的“运行”按钮,完成更新数据的操作。第10章关系数据库标准语言SQL格式:DELETEFROM表名[WHERE条件]功能:根据WHERE子句指定的条件,删除表中指定的记录。说明:表名:要删除数据的表的名字。若省略WHERE子句,则删除表中全部记录。DELETE语句删除的只是表中的数据,而不是表的结构。三.删除数据例10.10将职工表中职工号为“03021”的记录删除。①在“职工管理”数据库窗口中,打开“数据定义查询”窗口。②输入SQL语句:DELETEFROM职工WHERE职工号=03021③单击工具栏上的“运行”按钮,完成删除数据的操作。第10章关系数据库标准语言SQL10.4数据查询第10章关系数据库标准语言SQL一.SELECT查询命令格式:SELECT[ALL|DISTINCT|TOPn[PERCENT]]字段名|字段表达式|函数[,…]FROM数据源表或查询[WHERE筛选条件][GROUPBY分组字段表[HAVING过滤条件][ORDERBY排序关键字1[ASC|DESC][,排序关键字2[ASC|DESC]…]]第10章关系数据库标准语言SQL功能:从FROM子句列出的表或查询中,选择满足WHERE子句中给出的条件的记录,然后按GROUPBY子句(分组子句)中指定字段的值分组,再提取满足HAVING子句中过滤条件的那些组,按SELECT子句给出的字段名或字段表达式求值输出。ORDERBY子句(排序子句)是对输出的目标表进行重新排序,并可附加说明ASC(升序)或DESC(降序)排列。第10章关系数据库标准语言SQL说明:ALL:查询的结果中包含数据源中的所有记录。DISTINCT:查询的结果中不包含数据源中重复行的记录。字段名表:指定查询结果输出的字段,如果要包含数据源中的所有字段,可以使用通配符“*”。AS列名称:如果在输出时不希望使用原来的字段名,可以用列名称重新设置。FROM数据源表或查询:指出查询的数据来源。WHERE筛选条件:说明查询条件,即选择记录的条件。二.简单查询格式:SELECT[ALL|DISTINCT]字段名1[AS列名称][,字段名2[AS列名称]…]FROM数据源表或查询[WHERE筛选条件]1.基本查询第10章关系数据库标准语言SQL例10.11查询学生表的全部字段。操作步骤如下:①在“学生成绩管理”数据库窗口中选择“查询”对象。②双击“在设计视图中创建查询”,关闭弹出的“显示表”对话框,打开查询设计视图窗口。③选择“视图”菜单的“SQL视图”命令项,打开“选择查询”窗口。④输入SQL语句:SELECT*FROM学生⑤保存查询,查询建立完毕。⑥运行查询。第10章关系数据库标准语言SQL例10.12查询学生表中所有学生的姓名和截至统计时的年龄,去掉重名。SQL语句如下:SELECTDISTINCT姓名,YEAR(DATE())-YEAR(出生日期)AS年龄FROM学生例10.13查询学生表中所有已通过四级的男生记录。SQL语句如下:SELECT*FROM学生WHERE性别=男AND四级通过=yes第10章关系数据库标准语言SQL2.带特殊运算符的条件查询SELECT语句可以使用的特殊运算符有:(1)BETWEEN…AND运算符格式:字段名[NOT]BETWEEN初值AND终值BETWEEN运算符用于检测字段的值是否介于指定的范围内。(2)IN运算符格式:字段名[NOT]IN(表达式1[,表达式2…])IN运算符用于检测字段的值是否属于表达式集合或子查询。(3)LIKE运算符格式:字段名LIKE字符表达式LIKE运算符用于检测字段