数据库基础数据库基本概念数据库、表的创建与维护数据库语言SQL存储过程数据库基本概念数据和数据库数据是可以被计算机接受和处理的符号。根据所表示的信息特征不同,数据有不同的类别,如数字、文字、表格、图形图像、声音等等。数据库(数据库,简称decibel分贝),就是存放数据的仓库,其特点是数据按照数据模型组织,是高度结构化的,可供多个用户共享并且具有一定的安全性。数据库管理系统数据库管理系统即DBMS(数据库经营系统),它是位于用户应用程序和操作系统之间的数据库管理系统软件。其主要功能是组织、存储和管理数据,高效地访问和维护数据。数据库系统即DBS(数据库系统),是指按照数据库方式存储和维护数据,并向应用程序提供数据访问接口的系统。表和视图表是关系数据库中最主要的数据库对象,它是用来存储和操作数据的一种逻辑结构。1.表(Table)下面是以表的定义。(1)表结构(2)记录(3)字段(4)关键字数据库基本概念视图(查看)视图是从一个或多个表(或视图)导出的表。视图与表不同,它是一个虚表,即视图所对应的数据不进行实际存储,数据库中只存储视图的定义,对视图的数据进行操作时,系统根据视图的定义去操作与视图相关联的基本表。数据库设计数据库应用程序开发的目标是建立一个满足用户需求的软件产品。在开发数据库应用程序之前必须仔细了解用户需求,对数据库进行认真的规划设计,这是决定开发是否成功的关键。数据关系•一对一关系•一对多关系•多对多关系–分解为两个“一对多关系”关系,以避免数据操作出现问题。索引与主键值•索引:–加快搜索速度,通常将当作搜索或排序的字段设置为索引。•主键值:–确定数据表唯一记录,可以是多个字段的组合。–一个数据表只能有一个主键值。主键与外键•主键(第一位的钥匙)–表示数据的唯一性•外键(外国的钥匙)–决定数据表之间的关系•利用主键与外键可建立一对多的关系数据库系统结构•集中式•文件型数据库系统•主从结构•多层式数据库系统常用数据库简介1.Access通路是在窗口环境下开发的一种全新的关系型数据库系统,具有某些大型数据库的基本功能。2.MicrosoftSQL服务器2000微软公司SQL服务器2000是基于客户机/服务器(客户/服务器)模型的新一代大型关系型数据库管理系统。其对数据库中的数据提供有效的管理,并采用有效的措施实现数据的完整性及数据的安全性。礐$Aceess数据库、表操作1.创建数据库、表2.修改表结构3.向表中添加、删除和修改记录SQL服务器2000数据库、表操作1.创建数据库2.修改数据库3.创建表4.表记录的添加、修改和删除数据库语言SQL•结构化查询语言SQL(结构质问语言)是用于关系数据库操作的标准语言,其具有数据定义、查询、更新和控制等多种功能。•SQL由3部分组成:•(1)数据定义语言(数据定义语言,数据Desciption语言)•(2)数据操纵语言(DML,数据处理语言)•(3)数据控制语言(DCL,数据控制语言)选择查询选择查询是SQL语言的核心,功能强大。1.Select语句选择语句很复杂,主要的子句如下:选择[清楚的][别名.]字段名或表达式[同样地列标题]/*指定要选择的列或行及其限定*/从table_source/*从子句,指定表或视图*/[什么地方search_condition]/*什么地方子句,指定查询条件*/[组在group_by_expression]/*组在子句,指定分组表达式*/[订购在order_expression[ASC|DESC]]其中,选择和从子句是不可缺少的。•阤$数据库语言SQL【例1】本例对学生数据库进行各种查询。(1)查询学生数据库的学生表中各个同学的姓名和总学分。使用学生选择名字,totalscore从学生(2)查询表中所有记录。查询学生表中各个同学的所有信息。选择*从学生(3)条件查询。查询学生表中总学分大于等于120的同学的情况。选择*从学生什么地方totalscore=120(4)多重条件条件查询。查询学生表中所在系为“计算机”且总学分大于等于120的同学的情况。选择*从学生什么地方部='计算机'和totalscore=120数据库语言SQL(5)使用象谓词进行模式匹配。查询学生表中姓“王”且单名的学生情况。选择*从学生什么地方名字象'王_'(6)用在中间…和指定查询范围。查询学生表中不在1979年出生的学生情况。选择*从学生什么地方生日不在中间'1979-1-1'和'1979-12-31'(7)空值比较。查询总学分尚不定的学生情况。选择*从学生什么地方totalscore是无效力的(选择等级从等级什么地方courseid='101')数据库语言SQL(8)自然连接查询。查找计算机系学生姓名及其“C程序设计”课程的考试分数情况。SLELCT名字,等级从学生,课程,等级,什么地方部='计算机'和student.studentid=grades.studentid和courses.courseid=grades.coursesid(9)在子查询。查找选修了课程号为101的课程的学生的情况。选择*从学生什么地方studentid在(选择studentid从课程什么地方courseid='101')(10)比较子查询。查找课程号206的成绩不低于课程号101的最低成绩的学生的学号。选择studentid从等级什么地方courseid='206'和等级!任何的数据库语言SQL(11)存在子查询。查找选修206号课程的学生姓名。选择名字从学生什么地方存在(选择*从等级什么地方studentid=students.studentid和courseid='206')(12)查找选修了全部课程的同学的姓名(即查找没有一门功课不选修的学生)。选择名字从学生什么地方不存在(选择*从课程什么地方不存在(选择*从等级什么地方studentid=XS.studentid和courseid=courses.courseid))数据库语言SQL(13)查询结果分组。将各课程成绩按学号分组。选择studentid,等级从等级组在studentid(14)查询结果排序。将计算机系的学生按出生时间先后排序。选择*从学生什么地方部='计算机'订购在生日数据库语言SQL2.常用聚合函数?$数据库语言SQL【例2】本例对学生数据库表执行查询,使用常用的聚合函数。(1)求选修101课程的学生的平均成绩。选择AVG(等级)同样地'课程101平均成绩'从等级什么地方courseid='101'(2)求选修101课程的学生的最高分和最低分。选择MAX(等级)同样地'课程101最高分',MIN(等级)同样地'课程101最低分'从等级什么地方courseid='101'(3)求学生的总人数。选择数(*)同样地'学生总数'从学生数据库语言SQL数据更新插入数据语句插入插入有两种语法形式:(1)插入到目标[在externaldatabase](fields_list){默认价值|价值(默认|expression_list)(2)插入到目标[在externaldatabase]fields_list{选择…|执行…}例如,以下语句向学生表添加一条记录:插入到学生价值('990206','罗亮',0,'1/30/1980',1,150)2.删除数据语句DELETE删除语句的语法格式如下:删除从table_names[什么地方…]例如,以下语句从学生表中删除姓名为“罗亮”的记录:删除从学生什么地方名字=‘罗亮’•觤$3.更新数据语句UPDATE更新语句的语法格式如下:更新table_name设置Field_1=expression_1[,Field_2=expression_2…][从table1_name|view1_name[,table2_name|view2_name…]][什么地方…]例如,以下语句将计算机系的学生的总分增加10:更新学生设置totalscore=totalscore+10什么地方部=‘计算机’•?$存储过程使用存储过程的优点是:•更快的执行速度。•降低网络流量。•资源共享和安全操作。•灵活的编程及维护方式。•存储过程在SQL服务器2000中创建存储过程的SQL命令是创造程序,其语法格式如下:创造程序的语法:创造PROC[EDURE]procedure_name[;数]/*定义存储过程名*/[{@参数data_type}/*定义参数的类型*/[改变][=默认][输出]?]/*定义参数的属性*/[,...n1][有??{RECOMPILE|加密术|RECOMPILE,加密术}]/*定义存储过程的处理方式*/[为了复制]同样地sql_statement[...n2]/*执行的操作*/【例】在数据库学生中创建3个存储过程studentInfo、studentScore和studentUpdate。studentInfo的功能为返回学号、姓名、课程名、成绩和学分;studentScore根据学号和课程号查询该学生的姓名及指定课程的成绩;studentUpdate的功能是:首先判断所操作的表学生是否存在,若不存在,则返回出错值(-1);若表存在则根据参数所指定的学生学号存在与否进行不同的操作,若给定的学号存在,则将该学号的学生信息修改为指定的其余各参数值,若给定的学号不存在,则插入该学生信息;操作完毕后返回更新后的学生表数据。l创建存储过程studentInfo的SQL命令如下:使用学生/*检查是否studentInfo存储过程是否已存在,若是则删除*/如果存在(选择名字从sysobjects什么地方名字='studentInfo'和类型='P')滴下程序studentInfo去/*创建存储过程studentInfo*/创造程序studentInfo同样地选择A.studentid,A.name,coursename,等级从学生A,课程B,等级C什么地方A.studentid=C.studentid和B.courseid=C.courseid去l创建存储过程studentScore的SQL命令如下:使用学生/*检查是否studentScore存储过程是否已存在,若是则删除*/如果存在(选择名字从sysobjects什么地方名字='studentScore'和类型='P')滴下程序studentScore去存储过程/*创建存储过程studentScore*/创造程序studentScore(@sidVarChar(8),@cidVarChar(6),@haveitint=0输出)同样地选择@haveit=等级从学生A,课程B,等级C什么地方A.studentid=C.studentid和B.courseid=C.courseid和A.studentid=@sid和C.courseid=@cid去本章小结本章概括讲述了关系数据库系统的基本概念、关系数据库的表结构以及关系数据库的基本操作和常用的数据库系统及其特点;介绍了在VB.NET应用开发中常用的两类数据库通路和SQL服务器2000的数据库和表操作,讲述了关系数据库标准语言—SQL。