数据库第三章 学生——课程数据库
来源:互联网 发布:企业在淘宝开店流程 编辑:程序博客网 时间:2024/05/01 02:31
3.3数据定义
3.3.1 模式的定义(CREATE)与删除(DROP)
3.3.2基本表的定义(CREATE TABLE)、删除(DROP TABLE)与修改(ALTER TABLE)
1.建立三个表,主码,外码要标出来,特别注意SC表主码为(Sno,Cno),且也是外码
2.修改基本表:ALTER TABLE <表名>
ADD[COLUMN]<新列名>
DROP<新列名>
3.3.3索引的建立(CREATE INDEX)与删除(DROP INDEX)
1.索引的建立:
CREATE [UNIQUE] INDEX<索引名>
ON<表名>(<列名><次序>)
例:CREATE UNIQUE INDEX SCno
ON SC(Sno ASC,Cno DESC):
3.4数据查询(数据查询是数据库的核心操作)
一般格式:SELETE [ALL/DISTINCT]
FROM 表名
WHERE (不能用于聚集函数)
GROUP BY <列名> HAVING<条件表达式>
1.BETWEEN......AND和NOT BETWEEN.......AND IN和NOT IN
2.聚集函数
统计元组个数 : COUNT(*)
统计一列中值的个数: COUNT([DISTINCT|ALL] <列名>)
计算一列值的总和(此列必须为数值型) SUM([DISTINCT|ALL] <列名>)
计算一列值的平均值(此列必须为数值型) AVG([DISTINCT|ALL] <列名>)
求一列中的最大值和最小值 MAX([DISTINCT|ALL] <列名>) MIN([DISTINCT|ALL] <列名>)
SELECT Sno, AVG(Grade)
FROM SC
WHERE AVG(Grade)>=90(X)
GROUP BY Sno;
因为WHERE子句中是不能用聚集函数作为条件表达式!!
正确的查询语句应该是:
SELECT Sno, AVG(Grade) (分组后,只能先Sno后聚集函数,分组属性)
FROM SC
GROUP BY Sno
HAVING AVG(Grade)>=90;
3.自身连接
查询每一门课的间接先修课(即先修课的先修课)
SELECT FIRST.Cno, SECOND.Cpno
FROM Course FIRST, Course SECOND
WHERE FIRST.Cpno = SECOND.Cno;
过程:先找到一门课的先修课,再按该先修课的课程号找它自己的先修课
4.左外连接
查询每个学生及其选修课程的情况
SELECT Student.*, SC.*
FROM Student, SC
WHERE Student.Sno = SC.Sno;
用左外连接改写
SELECT Student.Sno,Sname,Ssex,Sage,Sdept,Cno,Grade
FROM Student LEFT OUTER JOIN SCON (Student.Sno=SC.Sno);
5.EXISTS谓词(可用连接代替)
NOT EXISTS(不可以用连接代替)
3.5数据更新
1.插入数据(INSERT)
INSERT (没有*号)
INTO
VALUES
2.删除数据(DELETE)
3.7视图
1.并不是所有的视图都是可以更新的,一般行列子视图是可更新的
2.sql语句的功能:数据查询、数据操作、数据控制和数据定义
3.视图是从基本表和视图中导出的表,是一个虚表,数据库中实际存放的是视图的定义
4.视图的作用:
(1).视图能够简化用户的操作
(2).视图能够使用户从多种角度看待同一数据
(3).视图对重构数据库提供了一定程度的逻辑独立性
(4).视图能够对机密数据提供安全保护
(5)。利用视图能够更清晰的表达查询
- 数据库第三章 学生——课程数据库
- 学生-课程数据库
- SQL_学生-课程数据库(上)
- SQL_学生-课程数据库(下)
- 数据库操作: 查询选修了所有课程的学生
- 第三章 数据库——表管理
- 数据库—学生管理系统问题
- 第三章、创建数据库
- 数据库第三章
- 数据库视频-第三章
- 优化数据库第三章
- 课程实训—学生成绩管理系统
- 自考总结——数据库原理第三章
- 大学里学习的Oracle课程——数据库创建
- 学生信息管理系统总结——数据库的访问方式
- 【Computer】学生信息管理系统——数据库配置
- 学生管理系统——数据库表设计
- 学生信息管理系统3——连接数据库的前提
- 我来说说XML文件中的xmlns、xmlns:xsi和xsi:schemaLocation、dtd文件的具体含义
- 【Android学习】spinner
- 分块算法 优雅的暴力
- 常用数据库知识(四)
- 解决cordova 自打包下https下 调不通的问题
- 数据库第三章 学生——课程数据库
- libsvm中数据归一化的重要性
- 基于ros系统下使用Android应用 Make nav进行地图加载和导航
- anroid studio 快捷键 全解
- Keras 和 tensorflow安装过程中的小问题
- Nginx的基本原理
- C++操作Excel说明
- Nginx + IIS 实现负载均衡
- python的一些面试资料