📄 asp06.htm
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>数据库基础</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>
<body>
<p align="center">第6章 数据库基础</p>
<p>6.1 数据库基本概念<br>
6.1.1 数据和数据库<br>
数据是可以被计算机接受和处理的符号。根据所表示的信息特征不同,数据有不同的类别,如数字、文字、表格、图形图像、声音等等。<br>
数据库(Database,简称DB),就是存放数据的仓库,其特点是数据按照数据模型组织,是高度结构化的,可供多个用户共享并且具有一定的安全性。
<br>
6.1.2 数据库管理系统<br>
数据库管理系统即DBMS(DataBase Management System),它是位于用户应用程序和操作系统之间的数据库管理系统软件。其主要功能是组织、存储和管理数据,高效地访问和维护数据。<br>
数据库系统即DBS(DataBase System),是指按照数据库方式存储和维护数据,并向应用 程序提供数据访问接口的系统。<br>
6.1.3 关系数据库语言SQL <br>
结构化查询语言SQL(Structured Query Language)是用于关系数据库操作的标准语言,其具有数据定义、查询、更新和控制等多种功能
。<br>
6.1.4 表和视图<br>
表是关系数据库中最主要的数据库对象,它是用来存储和操作数据的一种逻辑结构。<br>
1. 表(Table)下面是以表的定义。<br>
(1)表结构 <br>
(2)记录<br>
(3)字段<br>
(4)关键字<br>
2. 视图(View)<br>
视图是从一个或多个表(或视图)导出的表。视图与表不同,它是一个虚表,即视图所对 应的数据不进行实际存储,数据库中只存储视图的定义,对视图的数据进行操作时,系统根据
视图的定义去操作与视图相关联的基本表 。 <br>
6.1.5 数据库设计 <br>
数据库应用程序开发的目标是建立一个满足用户需求的软件产品。在开发数据库应用程序 之前必须仔细了解用户需求,对数据库进行认真的规划设计,这是决定开发是否成功的关键。
<br>
6.1.6 常用数据库简介 <br>
1. Access <br>
Access是在Windows环境下开发的一种全新的关系型数据库系统,具有某些大型数据库的 基本功能 。 <br>
2.Microsoft SQL Server 2000 <br>
Microsoft SQL Server 2000是基于客户机/服务器(Client/Server)模型的新一代大型关系型数
据库管理系统。其对数据库中的数据提供有效的管理,并采用有效的措施实现数据的完整性及 数据的安全性。<br>
6.2 数据库、表的创建与维护<br>
本节介绍Access和Microsoft SQL Server 2000系统中数据库、表的创建和维护方法。(略)<br>
6.3数据库语言SQL<br>
结构化查询语言SQL由3部分组成:<br>
(1) 数据定义语言(DDL,Data Desciption Language)<br>
(2) 数据操纵语言(DML,Data Manipulation Language)<br>
(3) 数据控制语言(DCL,Data Control Language)<br>
6.3.1 SELECT查询 SELECT查询是SQL语言的核心,功能强大 。<br>
1. Select语句 SELECT语句很复杂,主要的子句如下:<br>
SELECT [DISTINCT] [别名.]字段名或表达式 [AS 列标题] /* 指定要选择的列或行及其限定 */ <br>
FROM table_source /* FROM子句,指定表或视图 */ <br>
[ WHERE search_condition ] /* WHERE子句,指定查询条件 */ <br>
[ GROUP BY group_by_expression ] /* GROUP BY子句,指定分组表达式 */<br>
[ ORDER BY order_expression [ ASC | DESC ]] <br>
其中,SELECT和FROM子句是不可缺少的。<br>
【例6】本例对Student数据库进行各种查询。<br>
(1) 查询Student数据库的students表中各个同学的姓名和总学分。<br>
USE Student<br>
SELECT name,totalscore FROM students<br>
(2) 查询表中所有记录。查询students表中各个同学的所有信息。<br>
SELECT * FROM students <br>
(3) 条件查询。查询students表中总学分大于等于120的同学的情况。<br>
SELECT * FROM students WHERE totalscore >= 120 <br>
(4) 多重条件条件查询。查询students表中所在系为“计算机”且总学分大于等于120的同学的 情况。<br>
SELECT * FROM students WHERE department='计算机' AND totalscore >= 120 <br>
(5) 使用LIKE谓词进行模式匹配。查询students表中姓“王”且单名的学生情况。<br>
SELECT * FROM students WHERE name LIKE '王_' <br>
(6) 用BETWEEN…AND指定查询范围。查询students表中不在1979年出生的学生情况。<br>
SELECT * FROM students WHERE birthday NOT BETWEEN '1979-1-1' and '1979-12-31'<br>
(7) 空值比较。查询总学分尚不定的学生情况。<br>
SELECT * FROM students WHERE totalscore IS NULL <br>
(8) 自然连接查询。查找计算机系学生姓名及其“C程序设计”课程的考试分数情况。<br>
SLELCT name,grade FROM students, courses,grades, WHERE department = '计算机' AND
student.studentid = grades.studentid AND courses.courseid = grades.coursesid
<br>
(9) IN子查询。查找选修了课程号为101的课程的学生的情况。<br>
SELECT * FROM students WHERE studentid IN (SELECT studentid FROM courses WHERE
courseid = '101' )<br>
(10) 比较子查询。查找课程号206的成绩不低于课程号101的最低成绩的学生的学号。<br>
SELECT studentid FROM grades WHERE courseid = '206' AND grade !< ANY ( SELECT
grade FROM grades WHERE courseid = '101' ) <br>
(11) EXISTS子查询。查找选修206号课程的学生姓名。<br>
SELECT name FROM students WHERE EXISTS ( SELECT * FROM grades WHERE studentid
= students.studentid AND courseid = '206' )<br>
(12) 查找选修了全部课程的同学的姓名(即查找没有一门功课不选修的学生)。<br>
SELECT name FROM students WHERE NOT EXISTS ( SELECT * FROM courses WHERE NOT
EXISTS ( SELECT * FROM grades WHERE studentid=XS.studentid AND courseid=courses.courseid
)) <br>
(13) 查询结果分组。将各课程成绩按学号分组。<br>
SELECT studentid,grade FROM grades GROUP BY studentid<br>
(14) 查询结果排序。将计算机系的学生按出生时间先后排序。<br>
SELECT * FROM students WHERE department = '计算机' ORDER BY birthday<br>
2. 常用聚合函数 </p>
<p align="center"><img src="image/slide6image001.PNG" width="485" height="336"></p>
<p>【例】本例对Students数据库表执行查询,使用常用的聚合函数。<br>
(1) 求选修101课程的学生的平均成绩。<br>
SELECT AVG(grade) AS ' 课程101平均成绩' FROM grades WHERE courseid = '101' <br>
(2) 求选修101课程的学生的最高分和最低分。<br>
SELECT MAX(grade) AS '课程101最高分' , MIN(grade) AS '课程101最低分' FROM grades WHERE
courseid = '101'<br>
(3) 求学生的总人数。<br>
SELECT COUNT(*) AS '学生总数' FROM students <br>
6.3.2 数据更新 <br>
1. 插入数据语句INSERT <br>
INSERT有两种语法形式:<br>
(1) INSERT INTO target [IN externaldatabase] (fields_list)<br>
{DEFAULT VALUES|VALUES(DEFAULT|expression_list)<br>
(2) INSERT INTO target [IN externaldatabase] fields_list <br>
{SELECT…|EXECUTE…} <br>
例如,以下语句向students表添加一条记录:<br>
INSERT INTO students VALUES('990206','罗亮', 0 ,'1/30/1980', 1, 150) <br>
2. 删除数据语句DELETE<br>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -