在SQL语言中,数据库操作是核心功能之一,主要包括对数据表的创建、修改、删除以及视图的操作。这里我们通过一系列实例来深入理解这些基本概念。
1. **表的创建**:
- `CREATE TABLE`语句用于创建新的数据表。例如,在教学管理数据库中,`STUDENTS`表被定义为包含学号(SNO)、姓名(SNAME)、年龄(AGE)、性别(SEX)和出生地(BPLACE)的字段,其中SNO是主键。而`ENROLLS`表则包含了学生学号(SNO)、课程号(CNO)和成绩(GRADE),并且SNO和CNO组合构成复合主键,同时SNO和CNO分别参照STUDENTS和COURSES表的外键约束,限制了GRADE的取值范围。
2. **表的子集创建**:
- 使用`CREATE TABLE AS SELECT`语句可以从已有的表中创建一个新的表,如`GIRL`表就是从`STUDENTS`表中筛选出性别为“女”的记录,包含SNO、SNAME和AGE字段。
3. **表的删除**:
- `DROP TABLE`命令用于删除整个表,如删除`TEACHER`表。
4. **表的修改**:
- `ALTER TABLE`语句用于修改已存在的表结构。例如,向`TEACHERS`表添加新列`ADDR`,表示住址;删除`STUDENTS`表的`BPLACE`列,并用`CASCADE`选项删除所有依赖该列的视图和约束。
5. **主键的补充定义**:
- 当表创建时未指定主键,可以后续使用`ALTER TABLE`添加,如在`ENROLLS`表中添加`SNO`和`CNO`的复合主键。
6. **视图的创建**:
- 视图是虚拟表,不存储实际数据,而是根据查询语句动态生成结果。例如,`FACULTY`视图展示了教师号(TNO)、姓名(TNAME)和年龄(AGE),而`GRADE_TABLE`视图则综合了`STUDENTS`、`COURSES`和`ENROLLS`表的数据,提供了学生姓名、课程名和成绩的视图。
7. **视图的限制**:
- 视图定义中不能包含`ORDER BY`子句,这意味着创建视图时不能指定默认的排序规则,用户在查询视图时需要自行指定排序。
这些例子覆盖了SQL中的基础表操作和视图操作,对于学习和理解SQL语言的日常应用非常有帮助。掌握这些基本操作是进行数据库管理和数据分析的前提,能够帮助我们有效地组织和查询数据,实现数据的高效管理。在实际工作中,还可以结合索引、事务处理、存储过程等更高级的概念,提升数据库系统的性能和安全性。