关系数据库—SQL学习笔记

SQL的特点:

  • 综合统一
  • 高度非过程化(存取路径的选择以及SQL的操作过程由系统自动完成)
  • 面向集合的操作方式,以同一种语法结构提供多种使用方法(可以在终端键盘上直接键入SQL命令对数据库进行操作,也能够嵌入到高级语言(C,C++,JAVA)程序中)

模式,外模式,和内模式:

关系模型支持三级模式结构:模式,外模式,和内模式;

模式:是指数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图。它涉及的仅仅是对于某一类数据的结构和属性的描述。模式的一个具体值称为模式的一个实例,同一模式下可以有很多个实例。模式是相对稳定的,而实例是相对变动的。

外模式:也称子模式,或用户模式,是数据库用户能够看见和使用的局部数据的逻辑结构和特征的表述,是数据库用户的数据视图。是与某一应用有关的数据的逻辑表示。

内模式:也称存储模式,一个数据库只有一个内模式。他是数据物理结构和存储方式的描述,是数据库内部的组织方式。

模式与外模式的关系:一对多。

外模式与应用的关系:一对多。

其中外模式包括若干视图和部分基本表,数据库模式包括若干基本表,内模式包括若干存储文件。

数据库,模式,表的关系:

一个数据库可以建立多个模式,一个模式下通常包括多个表,视图和索引等数据库对象;

SQL数据库定义语句:

  1. 模式 :创建:create schema 删除:drop schema
  2. 表: 创建:create table 删除:drop table
  3. 视图:创建:create view 删除:drop view
  4. 索引:创建:create index 删除:drop index

模式的定义与删除:

1.定义模式:

Create schema 模式名 authorization 用户名

定义模式实际上定义了一个命名空间,建立了一个数据库的命名空间,一个框架。在创建模式时,同时也可以创建基本表,以及视图,并且可以定义授权。

2.删除模式:

drop schema 模式名 cascade或者drop schema 模式名 restrict

cascade:为级联,表示删除该模式时,删除该模式中所有的数据库对象。

Restrict:为限制,表示如果该模式中已经定义了下属的数据库对象,则拒绝执行该语句。

基本表:

1.定义基本表:

Create table 表名 (列名 数据类型 列级完整性约束条件,

列名 数据类型 列级完整性约束条件,

表级完整性约束条件);

如果完整性约束涉及该表的多个属性列,则必须定义在表级上,否则既可以定义在表级也可以定义在列级。

例如:

Create table course(
Cno char(4) primary key,/* primary key标示主码*/
Cname char(40) not NULL,/* 列级完整性约束条件,Cname 不能为空*/
Cpno char(4)Ccredit smallint,
foreign key(Cpno)refernces course(Cno) 
   /* 表级完整性约束条件,Cpno是外码,被参照表是:Cno;*/
); 

定义表的模式:

方法一:在表中明显的定义模式名:

Create table “S-T”.course(…);/*course所属的模式是S-T*/

方法二:在创建模式的同时创建表;

方法三:设置所属的模式。

当创建基本表时,若没有指定模式,系统会根据搜索路径来确定该对象所属的模式(搜索结果中第一个存在的模式)。

显示当前的搜索路径:

Show search_path; /*默认值是$user,public ,首先搜索与用户名相同的模式名,不过不存在这使用public*/

设置搜索路径,如:

Set search_path to “S-T”,public;

然后创建基本表:

Create table course(…);

2.修改基本表:

Alter table 表名

Add [column] 新列名 数据类型 完整性约束 /*增加新列*/

Add 表级完整性约束 /*增加表级完整性约束*/

Drop [column] 列名 cascade /**强制删除*/

Drop [column] 列名 restrict

Alter column 列名 数据类型 /*修改原有列定义**/

3.删除基本表:

Drop table 表名 restrict //有限制条件的删除,不能被其他的对象引用。

或者Drop table 表名cascade //强制删除

posted @ 2016-12-20 15:22  元墨  阅读(394)  评论(0编辑  收藏  举报