Delphi实用教程.ppt

上传人:牧羊曲112 文档编号:5574661 上传时间:2023-07-29 格式:PPT 页数:73 大小:497.50KB
返回 下载 相关 举报
Delphi实用教程.ppt_第1页
第1页 / 共73页
Delphi实用教程.ppt_第2页
第2页 / 共73页
Delphi实用教程.ppt_第3页
第3页 / 共73页
Delphi实用教程.ppt_第4页
第4页 / 共73页
Delphi实用教程.ppt_第5页
第5页 / 共73页
点击查看更多>>
资源描述

《Delphi实用教程.ppt》由会员分享,可在线阅读,更多相关《Delphi实用教程.ppt(73页珍藏版)》请在三一办公上搜索。

1、Delphi实用教程,第7章 数据库基本概念和操作,7.1 数据库基本概念 7.1.1 数据和数据库,数据是可以被计算机接受和处理的符号。根据所表示的信息特征不同,数据有不同的类别,如数字、文字、表格、图形图像、声音等等。数据库(Database,简称DB),顾名思义,就是存放数据的仓库,其特点是数据按照数据模型组织,是高度结构化的,可供多个用户共享并且具有一定的安全性。关系数据库是按照二维表结构方式组织的数据集合,二维表由行和列组成,表的行称为元组,列称为属性,对表的操作称为关系运算,主要的关系运算有投影、选择和连接等。,7.1.2 数据库管理系统,数据库管理系统即DBMS(DataBase

2、 Management System),它是位于用户应用程序和操作系统之间的数据库管理系统软件,其主要功能是组织、存储和管理数据,高效地访问和维护数据,即提供数据定义、数据操纵、数据控制和数据维护等功能。数据库系统即DBS(DataBase System),是指按照数据库方式存储和维护数据,并向应用程序提供数据访问接口的系统。它有四部分组成:数据库计算机硬件(支持DB存储和访问)软件(包括操作系统、DBMS、及应用开发支撑软件)数据库管理员(DBA,DataBase Administrator)数据库系统通常分为桌面型数据库系统和网络型数据库系统两大类。,7.1.3 关系数据库语言SQL,结构

3、化查询语言SQL(Structured Query Language)是用于关系数据库操作的标准语言 SQL虽然名为查询语言,但实际上具有数据定义、查询、更新和控制等多种功能,它使用方便、功能丰富、简洁易学等特点。,7.1.4 表和视图,1.表(Table)表是用来存储和操作数据的一种逻辑结构。表由行和列组 成,因此也称之为二维表。表结构组成表的各列的名称及数据类型 记录 表中的一行字段构成记录的每个数据项 关键字 表中唯一标识一条记录的某一字段或字段组合能主键 一个表有多个候选关键字,则选定其中一个为主关键字 外关键字 某字段或字段组合不是本表的关键字,而是另外表关键字,7.1.4 表和视图

4、,2.视图(View)视图是从一个或多个表(或视图)导出的表。它是一个虚表,即视图所对应的数据不进行实际存储,数据库中只存储视图的定义,对视图的数据进行操作时,系统根据视图的定义去操作与视图相关联的基本表。视图有下列优点:(1)为用户集中数据,简化用户的数据查询和处理。(2)屏蔽数据库的复杂性。(3)简化用户权限的管理。(4)便于数据共享。,7.1.5 数据库设计,数据库应用程序开发的目标是建立一个满足用户需求的软件产品。在开发数据库应用程序之前必须仔细了解用户需求,对数据库进行认真的规划设计,这是决定开发是否成功的关键。通常数据库所包含的大量信息是以表的形式存储,数据库中有的表是独立的,有的

5、表之间存在一定关系,设计数据库就是将大量信息经过分析和归纳,分别存储到多个表中,确定表之间的相互关系。,7.1.6 常用数据库简介,Paradox Paradox是Delphi 7自带的一个小型桌面数据库,它是Delphi 7开发小型的桌面型数据库系统应用程序一个比较好的选择。Paradox数据库、表的建立与维护,均通过Delphi 7提供的数据库设计工具Database Desktop进行。Access Microsoft Access是Office套件中提供的一个桌面型数据库,它是在Windows环境下开发的一种全新的关系型数据库系统,具有某些大型数据库的基本功能,如支持事务处理、具有用户

6、组和多用户管理功能、具有一定的安全性和完整性保护功能等。大型数据库常用的大型数据库有Interbase、Oracle、Sybase、Infomix、DB2和Microsoft SQL Server等。,7.2 数据库、表的创建与维护,本节使用的几个表的结构:,7.2 数据库、表的创建与维护,7.2.1 Paradox数据库、表操作,BDE中创建数据库 BDE是通过别名(alais)来管理数据库的,所谓别名是为数据库指定的名称,通过Delphi 7所提供的BDE Administrator可对别名所对应的数据库属性及驱动程序参数进行配置,配置的参数将被保存在名为IDAPI32.CFG的配置文件中

7、。BDE使用别名对数据库进行管理的优点是可以使得应用程序在开发和运行时都不必涉及所使用的后台数据库的类型。如在BDE中创建别名为Student数据库,操作方法如下:(1)建立与Student数据库对应的文件夹,设该文件夹名为d:paradoxDB。(2)BDE Administrator中配置Paradox数据库,使之支持中文。,7.2.1 Paradox数据库、表操作,(3)创建名为Student的数据库,方法是:选择BDE Administrator窗 口左边的Database选项卡,单击鼠标右键,在弹出的快捷 菜单上选择New,如图。再在所弹出的选择数据库驱动程序对 话框中选择STAND

8、ARD,单击OK。,7.2.1 Paradox数据库、表操作,(4)然后为所创建的数据库命名,并配置Student数据库的属 性参数,如图。,7.2.1 Paradox数据库、表操作,可设置的参数有:l DEFAULT DRIVER:默认的数据库驱动程序。l ENABLE BCD:是否支持对数字进行BCD编码。l PATH:设置数据库对应的路径。本例设置路径为 d:paradoxDB。(5)保存所创建的数据库及配置信息,选择BDE Administrator主菜单下的 ObjectApply命令项,将弹出保存数据库确认对话框,单击OK即可保存。,7.2.1 Paradox数据库、表操作,2.创

9、建表 在Database Desktop中创建表students,操作方法如下:(1)运行Database Desktop,依次选择开始程序Borland Delphi 7Database Desktop,其界面如图。,7.2.1 Paradox数据库、表操作,(2)新建表,选择Database Desktop主菜单的 FileNewTable命令项,将弹出选择新建表类型的对 话框,选择PARADOX 7,单击OK。(3)上一步结束后,将出现创建表的窗口,该窗口分为左右 两部分,左边是字段信息输入区,共有5列,第一列是 字段序号,由系统自动生成,其余四列分别为:l Field Name(字段名

10、):可输入最多25个字 符作为 字段名,设置Paradox支持中文后,可使用中文字 段名。l Type(数据类型):可直接输入数据类型的缩写字 母(如字符串类型输入A、数值类型输入N等等),也可单击鼠标右键打开弹出式菜单选择数据类型。l Size(长度):设定字段的长度。l Key(是否为关键字):若某字段为关键字,则该 列显示*号。,7.2.1 Paradox数据库、表操作,创建表的界面,创建表的窗口,字段类型,7.2.1 Paradox数据库、表操作,(4)保存新建的表,单击创建表窗口的Save As按钮,将出现“Save Table As”对话框,在其中选择表的保存路径、保存的数据库类型

11、和表所属的数据库名,并输入表名。,7.2.1 Paradox数据库、表操作,3.修改表结构(1)打开表,在Database Desktop中选择主菜单FileOpen-Table命令项,或单击工具栏上的(Open Table)按钮,将出现“Open Table”对话框,选择需打开的数据库、表,单 击打开按钮。,7.2.1 Paradox数据库、表操作,(2)在所出现的如图所示的表结构编辑窗口中选择主菜单下的 Table Restructure命令项,或单击工具栏上的(Restructure)按钮,将打开一个新窗口,在其中可进行修改字段各属性的操作。,工具栏上的(Restructure)按钮,7

12、.2.1 Paradox数据库、表操作,此时出现的修改表结构的窗口,7.2.1 Paradox数据库、表操作,4.向表中添加记录向students表中添加一批记录,操作方法如下:(1)打开表,方法与修改表结构的第一步操作相同。(2)选择主菜单的TableEdit Data命令项,进入表编辑状 态,此时就可以进行数据添加操作了。(3)逐行输入数据。输入数据时,要注意几点:一是关键 字字段值要唯一;二是输入的数据要与字段的数据类 型相符;三是字段长度的限制;四是英文字符、数字 等与汉字所占字节数的区别。(4)保存数据,输入完成后,选择主菜单的FileClose即 可保存表数据。,7.2.1 Par

13、adox数据库、表操作,向表中添加记录的界面窗口:,Edit Data按钮,记录定位按钮,添加的记录,7.2.1 Paradox数据库、表操作,说明:BDE Administrator的主要功能是以别名的方式管理数据库,由于Paradox本身并没有数据库概念,故要将相关的几个表组织在一起形成“数据库”,需借助于BDE Administrator的数据库管理功能。BDE Administrator更主要的功能是通过别名配置的方式对数据库进行引用和管理。,7.2.2 SQL Server 2000数据库、表操作,在企业管理器中进行数据库、表操作SQL Server 2000 企业管理器是Micro

14、soft管理控制台的管理单元组件。选择开始程序Microsof SQLServer企业管理器,即可启动SQL Server 2000 企业管理器,其主界面如图所示。,7.2.2 SQL Server 2000数据库、表操作,SQL Server企业管理器共享一个用于Web管理的MMC用户界面子集,它通过易于使用的图形用户界面,将所有SQL Server对象展现在一个分层结构的控制台树中,按照“数据库服务器组”“数据库服务器”“数据库”“数据库对象(表、视图等)”的层次结构组织对象并进行管理的。利用企业管理器可对数据库服务器、数据库及数据库对象(表、视图等)进行有效地管理。,7.2.2 SQL

15、Server 2000数据库、表操作,(1)创建数据库 在SQL Server 2000中,能够创建数据库的用户必须是系统 管 理员,或是被授权使用CREATE DATABASE语句的用户。创 建数据库时,必须要确定数据库名、所有者(即创建数据 库的用户)、数据库大小(最初的大小、最大的大小、是否 允许增长及增长方式)和存储数据库的文件。下面说明使用企业管理器创建数据库的过程。(1)在“SQL Server Enterprise Manager”窗口中展 开Microsoft SQL Servers和SQL Server组,选择 SQL Server服务器。在选择的SQL Server服务器上

16、点击鼠 标右键,在所出现快捷菜单上选择“新建”“数据库”。(2)上一步操作结束后,出现下图所示的“数据库属性”对话框,在“常规”选项卡的“名称”文本框中输入欲创建的 数据库名。,7.2.2 SQL Server 2000数据库、表操作,输入数据库名:,SQL Server 2000数据库、表操作,(3)选择“数据文件”选项卡,在文件名为“Student_DATA”这一行的“初始大小”列将系统缺省大小1改为5,设置是否允许数据库增 长、增长方式以及最大文件大小,见图标注。(4)在数据库属性对话框中选择“事务日志”选项卡,与第3步类似,设置日志文件的初始大小、是否增长、增长方式及最大大小。(5)单

17、击“确定”按钮,数据库就创建完成了。,7.2.2 SQL Server 2000数据库、表操作,2)修改数据库l 增加或删除数据文件l 改变数据文件的大小和增长方式l 改变日志文件的大小和增长方式l 增加或删除日志文件l 增加或删除文件组在进行任何数据库修改操作以前,都要在“企业管理器”中选择需要进行修改的数据库,在该数据库名上点击鼠标右键,出现快捷菜单,选择“属性”,将弹出数据库属性对话框,如下图所示。该对话框包括六个选项卡,通过“数据文件”和“事务日志”两个选项卡可以修改这两类文件的属性,还可增加或删除文件。,7.2.2 SQL Server 2000数据库、表操作,数据库属性对话框,增加

18、或删除数据文件改变数据文件的大小和增长方式选项卡,增加或删除日志文件改变日志文件的大小和增长方式选项卡,增加或删除文件组选项卡,7.2.2 SQL Server 2000数据库、表操作,3)创建表 通过“企业管理器”创建表操作步骤:(1)启动SQL Server 企业管理器,用鼠标右键单击选择数 据库Student,在所出现的快捷菜单上选择“新建(N)”“表(T)”,将弹出如图编辑窗口。,7.2.2 SQL Server 2000数据库、表操作,(2)在编辑窗口中分别输入或选择各列的名称、数据类型、是否 允许为空值等属性,在studentid列上单击鼠标右键,选择“设置主键”菜单项,将stud

19、entid列设置为主键。(3)在表的各列属性均编辑完成后,单击(保存)按钮,在所出现 的“选择表名”对话框中输入students,单击“确定”,students 表就创建完成。,7.2.2 SQL Server 2000数据库、表操作,4)表记录的添加、修改和删除 在创建了一个表之后,使用过程中可能对表结构、约束或其它 列的属性需要进行修改。对一个已存在的表可以进行的修改操 作包括:l更改表名 l增加列 l删除列 l修改已有列的属性(列名、数据类型、是否为空值),7.2.2 SQL Server 2000数据库、表操作,向表中添加记录操作窗口,7.2.2 SQL Server 2000数据库、

20、表操作,2.通过T-SQL命令进行数据库、表操作1)使用CREATE DATABASE语句创建数据库语法:CREATE DATABASE database_name/指定数据库名 ON 子句/指定数据库文件和文件组属性 LOG ON 子句/指定日志文件属性其中:l database_name:是所创建的数据库逻辑名称,其命名须 遵循SQL Server 2000的命名规则,最大长度为128个字符。l ON子句:指出了数据库的数据文件和文件组,其格式为:ON PRIMARY,n,n 其中PRIMARY用来指定主文件。若不指定主文件,则 诸数据文件中的第一个文件将成为主文件。,7.2.2 SQL

21、Server 2000数据库、表操作,数据文件的描述主要给出文件的逻辑名、存储路径、大 小及增长特性(这些特征可以与界面创建数据库时对数 据库特征的设置相联系)。其语法定义为::=(NAME=逻辑文件名,FILENAME=操作系统文件名,SIZE=size,MAXSIZE=max_size|UNLIMITED,FILEGROWTH=growth_increament)定义文件组的属性,语法格式为::=FILEGROUP 文件组名,n 文件组中各文件的描述和数据文件描述相同。l LOG ON子句:用于指定数据库事务日志文件的属性,其定义格式与数据文件的格式相同。,SQL Server 2000数

22、据库、表操作,【例】创建Student的数据库CREATE DATABASE StudentON(NAME=Student_data,FILENAME=e:sqldataMSSQLdataStudent.mdf)GO分析:本例创建一个名为Student的数据库,数据库只包含一个主数据 文件和一个主日志文件,它们均采用系统默认存储路径和文件名,大小分别为model数据库中主数据文件和日志文件的大小。,SQL Server 2000数据库、表操作,2)使用ALTER DATABASE修改数据库 语法:ALTER DATABASE database_name ADD FILE,n TO FILEGR

23、OUP filegroup_name/在文件组中增加数据文件|ADD LOG FILE,n/增加日志文件|REMOVE FILE logical_file_name/删除数据文件|ADD FILEGROUP filegroup_name/增加文件组|REMOVE FILEGROUP filegroup_name/删除文件组|MODIFY FILE/更改文件属性|MODIFY NAME=new_dbname/数据库更名,7.2.2 SQL Server 2000数据库、表操作,下面说明主要关键字和子句的构成和作用:l database_name:数据库名l ADD FILE子句:向数据库添加数据

24、文件,文件的属性由 给出,关键字TO FILEGROUP指出了添加的数据文件所在的文件组(filegroup_name),缺省则为主文件组。l ADD LOG FILE子句:向数据库添加日志文件,日志文件的属性由 给出。l REMOVE FILE子句:从数据库中删除数据文件,被删除的数据文件由 其中的参数logical_file_name给出。当删除一个数据文件时,逻辑文件 与物理文件全部被删除。l ADD FILEGROUP子句:向数据库中添加文件组,被添加的文件组名由 参数filegroup_name给出。l REMOVE FILEGROUP子句:删除文件组,被删除的文件组名由参数 fil

25、egroup_name给出。l MODIFY FILE子句:修改数据文件的属性,被修改文件的逻辑名由 的NAME参数给出,可以修改的文件属性包括:FILENAME、SIZE、MAXSIZE和FILEGROWTH,一次只能修改其中的一个属性。l MODIFY NAME子句:更改数据库名,新的数据库名由参数 new_dbname给出。,7.2.2 SQL Server 2000数据库、表操作,【例】设已经创建了数据库Student,它只有一个主数据文件,其逻辑文件名为Student_Data,物理文件名e:sqldataMSSQLdataStudent_Data.mdf,大小为5MB,最大大小为5

26、0MB,增长方式为按10%增长;有一个日志文件,逻辑名为Student_LOG,物理名为e:sqldataMSSQLdataStudent_Log.ldf,大小为2MB,最大大小为5MB,每次增长1MB。修改数据库Student现有数据文件的属性,将主数据文件的最大大小改为不限制,增长方式改为按每次5MB增长。分析:因为需修改主数据文件的两个属性,而使用ALTER DATABASE语句一次只能修改数据文件的一个属性,所以需要执行两次ALTER DATABASE命令。,7.2.2 SQL Server 2000数据库、表操作,ALTER DATABASE Student MODIFY FILE(

27、NAME=Student_Data,MAXSIZE=UNLIMITED)GO/这是第一次,将主数据文件的最大大小改为不限制。ALTER DATABASE Student MODIFY FILE(NAME=Student_Data,FILEGROWTH=5MB)GO/这是第二次,将主数据文件的增长方式改为按5MB增长。,7.2.2 SQL Server 2000数据库、表操作,删除数据库的T-SQL命令是DROP。语法:DROP DATABASE database_name,n 其中database_name是要删除的数据库名。,7.2.2 SQL Server 2000数据库、表操作,3)使用

28、CAREATE TABLE命令创建表 语法:CREATE TABLE table_name(column_name datatype|identity|NOT NULL|NULL)其中:table_name为表名,必须遵守T-SQL标识符命名规则。column_name为列名 datatype为列的数据类型 identity指出该列为标识符列,NULL表示列可取空值,NOT NULL表示列不可取空值。,7.2.2 SQL Server 2000数据库、表操作,【例】在Student数据库中创建表students。USE StudentCREATE TABLE students(studenti

29、d char(6)NOT NULL,name char(20)NOT NULL,sex bit NOT NULL,birthday smalldatetime NOT NULL,departmentid int NOT NULL,totalscore tinyint NULL,)GO分析:首先使用USE Student命令将数据库Student指定为当前数据库,然后使用CREATE TABLE语句在数据库Student中创建表students。,SQL Server 2000数据库、表操作,4)使用ALTER TABLE修改表结构语法:ALTER TABLE table_name ALTER

30、COLUMN column_name/修改已有列的属性 new_data_type(precision,scale)NULL|NOT NULL|ADD,n/增加新列|DROP CONSTRAINT constraint_name|COLUMN column,n/删除列,7.2.2 SQL Server 2000数据库、表操作,其中:ltable_name为表名。lALTER COLUMN子句:用于说明修改表中指定列的属性,要修改的列名由column_name给出,new_data_type为被修改列的新的数据类型。l ADD子句:向表中增加新列,新列的定义方法与CREATE TABLE语句中定

31、义列的方法相同。lDROP子句:从表中删除列或约束,COLUMN参数中指定的是被删除的列名,constraint_name是被删除的约束名。,7.2.2 SQL Server 2000数据库、表操作,【例】修改表students中已有列的属性:将name列长度由原来的 20改为10;将birthday列的数据类型由原来的smalldatetime改 为datetime。USE StudentALTER TABLE studentsALTER COLUMN name char(10)ALTER COLUMN birthday datetimeGO 另外,删除表的T-SQL命令是DROP TABL

32、E。语法:DROP TABLE table_name 其中table_name是要被删除的表名。,7.2.2 SQL Server 2000数据库、表操作,5)表数据添加语法:INSERT table_name VALUES(constant1,constant2,)该命令的功能是向由table_name指定的表中加入由 VALUES指定各列值的行。例如:要向Student数据库的表students中插入如下的一行:990206 罗亮 0 1/30/1980 1 150 可以使用以下的T-SQL语句:USE Student INSERT INTO students VALUES(990206,

33、罗亮,0,1/30/1980,1,150)GO,7.2.2 SQL Server 2000数据库、表操作,6)表数据删除语法:DELETE FROM table_name|view_name WHERE 该语句的功能为从table_name指定的表或view_name所指 定的视图中删除满足条件的行,若省 略该条件,表示删除所有行。,7.2.2 SQL Server 2000数据库、表操作,例如:要将Student数据库的students表中name为“罗亮”的行删除可使用如下的T-SQL语句:USE StudentDELETE FROM students WHERE name=罗亮GO使用T

34、RANCATE TABLE命令将删除指定表中的所有数据,因此也称其为清除表数据命令,其语法格式为:TRANCATE TABLE name其中name为所要删除数据的表名。由于TRANCATE TABLE语句将删除表中的所有数据,且无法恢复,因此使用时必须十分当心。,7.2.2 SQL Server 2000数据库、表操作,7)表数据修改语法:UPDATE table_name|view_name SET column_name=expression|DEFAULT|NULL,n WHERE 该命令的功能是:将table_name指定的表或view_name指 定 的视图中满足条件的记录中由SE

35、T指 定的各列的列值设置为SET指定的新值,若不使用WHERE 子句,则更新所有记录的指定列值。,7.2.2 SQL Server 2000数据库、表操作,例如:要将students表中的所有departmentid为1的学生总学分都增加10,可使用以下的语句:UPDATE studentsSET totalscore=totalscore+10WHERE departmentid=1注意:若UPDATE命令中未使用WHERE子句限定范围,将更新表中的所有行。,7.3 SQL语言简介,SQL语言是关系数据库操作的标准语言,具有数据定义、查询、更新和控制等多种功能。SQL语言由3部分组成:数据定

36、义语言(DDL,Data Description Language)。用于执行数据库定义的任务,对数据库以及数据库中的各种对象进行创建、删除、修改等操作。数据操纵语言(DML,Data Manipulation Language)。用于操纵数据库中各种对象,检索和修改数据。数据控制语言(DCL,Data Control Language)。用于安全管理,确定哪些用户可以查看或修改数据库中的数据。,7.3 SQL语言简介,7.3.1 SELECT查询,SELECT查询是SQL语言的核心。在数据库应用中,最常用的操作是查询,同时查询还是数据库的其它操作(如统计、插入、删除及修改)的基础。SELEC

37、T语句很复杂,主要的子句如下。语法:SELECT DISTINCT 别名.字段名或表达式 AS 列标题/指定要选择的列或行及其限定 FROM table_source/FROM子句,指定表或视图 WHERE search_condition/WHERE子句,指定查询条件 GROUP BY group_by_expression/GROUP BY子句,指定分组表达式 ORDER BY order_expression ASC|DESC/ORDER子句,指定排序表达式和顺序*/,7.3.1 SELECT查询,SELECT子句指出查询结果中显示的字段名,以及字段名和函数组成的表达式等。可用DISTI

38、NCT去除重复的记录行;AS列标题指定查询结果显示的列标题。若要显示表中所有字段时,可用通配符“*”代替字段名列表。GROUP BY子句和ORDER BY子句分别对查询结果分组和排序。WHERE子句定义了查询条件。WHERE子句必须紧跟FROM子句之后,其基本格式为:,7.3.1 SELECT查询,WHERE 其中search_condition为查询条件,常用格式为:NOT|()AND|OR NOT|(),n 其中predicate为判定运算,结果为TRUE、FALSE或UNKNOWN,格式为:expression=|=|!=|!expression/比较运算|string_expressi

39、on NOT LIKE string_expression ESCAPE escape_character/字符串模式匹配|expression NOT BETWEEN expression AND expression/指定范围|expression IS NOT NULL/是否空值判断|expression NOT IN(subquery|expression,n)/IN子句|expression=|=|!=|!ALL|SOME|ANY(subquery)/比较子查询|EXIST(subquery)/EXIST子查询,7.3.1 SELECT查询,【例】本例对Student数据库进行各种查

40、询。(1)查询Student数据库的students表中各个同学的姓名和总学分。USE Student SELECT name,totalscore FROM students 说明:在下面的例子中,均省略USE Student语句。(2)查询表中所有记录。查询students表中各个同学的所有信息。SELECT*FROM students(3)简单条件查询。查询students表中总学分大于等于142的同学 的情况。SELECT*FROM students HERE totalscore=142,SELECT查询,(4)多重条件条件查询。查询students表中所在系编号为1且总学分大 于等

41、于142的同学的情况。SELECT*FROM students WHERE departmentid=1 AND totalscore=142(5)使用LIKE谓词进行模式匹配。查询students表中姓“王”且单名的 学生情况。SELECT*FROM students WHERE name LIKE 王_(6)用BETWEENAND指定查询范围。查询students表中不在1979 年出生的学生情况。SELECT*FROM students WHERE birthday NOT BETWEEN 1979-1-1 and 1979-12-31(7)用IN指定查询范围。查询students表中所

42、在系代码为1或2或3学 生的情况。SELECT*FROM students WHERE departmentid IN(1,2,3),7.3.1 SELECT查询,(8)空值比较。查询总学分尚不定的学生情况。SELECT*FROM students WHERE totalscore IS NULL(9)自然连接查询。在students数据库中有描述院系代码的表 codes,表的结构和样本数据见附录A。查找计算机系的学生 情况。SLELCT*,department FROM students,codes WHERE students.departmentid=codes.departmentid

43、 AND codes.department=计算机,7.3.1 SELECT查询,(10)IN子查询。在students数据库中有描述课程情况的表courses和描述学生成绩表的表grades。查找选修了课 程号为101的课程的学生的情况。SELECT*FROM studentsWHERE studentid IN(SELECT studentid FROM courses WHERE courseid=101)在执行包含子查询的SELECT语句时,系统先执行子查询,产生一个结果表,再执行外查询。本例中,先执行子查询:SELECT studentid FROM courses WHERE co

44、urseid=101得到一个只含有studentid列的结果表,courses中courseid列值为101的行在该结果表中都有一行。再执行外查询,若students表中某行的stuentid列值等于子查询结果表中的任一个值,则该行就被选择到最终结果表中。,7.3.1 SELECT查询,(11)比较子查询,这种子查询可以认为是IN子查询的扩展,它使 表达式的值与子查询的结果进行比较运算。查找课程号206的 成绩不低于课程号101的最低成绩的学生的学号。SELECT studentid FROM grades WHERE courseid=206 AND grade!ANY(SELECT gra

45、de FROM grades WHERE courseid=101)(12)EXISTS子查询。EXISTS谓词用于测试子查询的结果是否为空 表,若子查询的结果集不为空,则EXISTS返回TRUE,否则返 回FALSE。EXISTS还可与NOT结合使用,即NOTEXISTS,其 返回值与EXIST刚好相反。查找选修206号课程的学生姓名。SELECT name FROM students WHERE EXISTS(SELECT*FROM grades WHERE studentid=students.studentid AND courseid=206),7.3.1 SELECT查询,(13)

46、查找选修了全部课程的同学的姓名(即查找没有一门功课不 选修的学生)。SELECT name FROM students WHERE NOT EXISTS(SELECT*FROM courses WHERE NOT EXISTS(SELECT*FROM grades WHERE studentid=XS.studentid AND courseid=courses.courseid)(14)查询结果分组。将各课程成绩按学号分组。SELECT studentid,grade FROM grades GROUP BY studentid(15)查询结果排序。将代码为1的系的学生按出生时间先后排序。S

47、ELECT*FROM students WHERE departmentid=1 ORDER BY birthday,7.3.2 常用聚合函数,聚合函数表:,7.3.2 常用聚合函数,【例】本例对Students数据库表执行查询,使用常用的聚合函数。(1)求选修101课程的学生的平均成绩。SELECT AVG(grade)AS 课程101平均成绩 FROM grades WHERE courseid=101(2)求选修101课程的学生的最高分和最低分。SELECT MAX(grade)AS 课程101最高分,MIN(grade)AS 课程101最低分 FROM grades WHERE cou

48、rseid=101(3)求学生的总人数。SELECT COUNT(*)AS 学生总数 FROM students,7.4 存储过程,存储过程是存放于数据库中的子程序,它在服务器端运行,具有执行速度快、功能封装和安全操作等优点。如果应用程序需要对大量数据进行某些操作(如计算总和或平均值)或反复执行某些操作,就可将这种重复性高或计算密集的工作设计为存储过程。存储过程中必须使用服务器端的SQL语言,因此它不容易移植。SQL Server 2000中存储过程是数据库对象之一,有5种类型的存储过程:系统存储过程、本地存储过程、临时存储过程、远程存储过程和扩展存储过程,其中与数据库应用开发关系最密切的是本

49、地存储过程,它是指由用户创建的用户数据库的存储过程。,7.4.1 创建存储过程,使用SQL语句创建存储过程 语法:CREATE PROCEDURE procedure_name;number/定义过程名 parameter data_type/定义参数的类型 VARYING=default OUTPUT/定义参数的属性,.n1 WITH RECOMPILE|ENCRYPTION|RECOMPILE,ENCRYPTION/定义存储过程的处理方式 FOR REPLICATION AS sql_statement.n2/执行的操作,7.4.1 创建存储过程,参数的含义如下:lprocedure_na

50、me是定义的存储过程名l sql_statements是一组SQL语句,用于描述所定义的存储过程所要执行的操作。l parameter为存储过程的形参,符号作为第一个字符来指定参 数名称。l Default指定存储过程输入参数的默认值,默认值必须是常量或 NULL,默认值中可以包含通配符(%、_、和),如果定义 了默认值,执行存储过程时根据情况可不提供实参。l 关键字OUTPUT用于指定参数从存储过程返回信息。n1:表示可为存储过程指定若干个参数。,7.4.1 创建存储过程,2.在企业管理器中创建存储过程 启动企业管理器后,在需要创建存储过程的数据库的“存储过程”对象上单击鼠标右键,在所弹出的

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号