完整性,模式,建表,建索引

Posted jkzr

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了完整性,模式,建表,建索引相关的知识,希望对你有一定的参考价值。

1.  关系的完整性有三种:实体完整性,参照完整性和用户定义的完整性。

   1. 实体完整性:若属性A是基本关系R的主属性,那么A不能取空值(就是“不知道”或“不存在”的值)。理解的就是主键不能为空。

   2. 参照完整性:设F是基本属性R的一个或一组属性,但不是关系R的码,K是基本关系S的主码。如果F和K相对应,那么F是S的外码,并称基本关系R为参照关系,基本关系S为被参照关系。关系R和关系S不一定是不同的关系。那么对于R中F属性值必须和S对应的元组的主码值相等。

   3. 用户定义完整性:针对某一个具体关系数据库的约束条件,它反映某一具体应用涉及的数据必须满足的语义要求。

2.  没有一个数据库系统能支持所有SQL标准的所有概念和特性。

3.  模式的定义和删除。

   基于书本,要创建模式,调用该命令必须拥有数据库管理员的权限或者获得了创建模式的权限。于是尝试一下。

   技术分享图片

   为什么?首先schema就是数据库对象的集合,这个集合包含了各种对象如:表、视图、存储过程、索引等。为了区分不同的集合,就需要给不同的集合起不同的名字。如果把database看作是一个仓库,仓库很多房间(schema),一个schema代表一个房间,table可以看作是每个房间中的储物柜,user是每个schema的主人,有操作数据库中每个房间的权利,就是说每个数据库映射的user有每个schema(房间)的钥匙。

   但是在Oracle数据库中不能新建一个schema,要想创建一个schema,只能通过创建一个用户的方法解决,在创建一个用户的同时为这个用户创建一个与用户名同名的schem并作为该用户的缺省shcema。即schema的个数同user的个数相同,而且schema名字同user名字一一 对应并且相同。

4.  表的定义,删除和修改。

   定义表基本格式:

   CREATE TABLE <表名> (

   <列名><数据类型>[列级完整性约束条件],

   <列名><数据类型>[列级完整性约束条件],

.   .....

   [表级完整性约束条件])

   如果主码由几个属性构成,那么必须作为表级完整性定义。

   可以看下面的例子

create table T_major_J122
( 
    mno char(2) primary key,
    mname varchar(20),
    loc varchar(20) check(loc in(主校区,南校区,新校区,铁道校区,湘雅校区)),
    mdean varchar(20)
);

create table T_stud_J122
(
    sno char(10) primary key,
    sname varchar(20),
  --列级完整性 sex
varchar(10) check(sex in(,,其它,其他)), tel varchar(15), email varchar(20) check(email like %@%.%), birthday date check((TO_CHAR(yyyymmdd))>=19990731),
  --表级完整性 mno
char(10) references T_stud_J122(sno), majorno char(2) references T_major_J122(mno) );

   修改基本表:

   ALERT TABLE <表名>

   [ADD <列名><数据类型>][ 完整性约束 ]; 增加列

   [ADD  <表级完整性约束> ];  增加完整性约束

   [DROP <列名> [CASCADE | RESTRICT] ];   删除列

   [DROP CONSTRAINT<完整性约束名>[CASCADE | RESTRICT]]; 删除完整性约束

   [ALERT COLUMN <列名> <数据类型>];       修改列

 

   删除基本表

   DROP TABLE <表名>[CASCADE | RESTRICT];

   CASCADE | RESTRICT:如果指定了CASCADE,则自动删除引用了该列的其他的对象,比方说视图,如果是RESTRICT,则如果被其他的对象引用,则拒绝删除该列或者该表。

5.  数据类型

   直接去W3school看一下就行http://www.w3school.com.cn/sql/sql_datatypes.asp

6.  建立索引

   当表的数据量非常大的时候,查询到操作会比较耗时,建立索引是加快查询速度的有效手段,但是也会占用一定的存储空间。

   常见的索引包括顺序文件上的索引,B+数索引,hash索引,位图索引。  

   顺序文件上的索引是针对按指定属性值升序或者降序存储的关系,在该属性上建立一个顺序索引文件,索引文件有属性值和相应的元组指针组成。

   B+树索引是将索引属性组织成B+树形式,B+树的叶节点为属性值和相应的元组指针。

   散列索引是家里若干桶,将索引属性按照散列函数值映射到桶中,桶中存储索引的属性值和相应的元组指针。

   位图索引是用位向量记录索引属性中可能出现的值,每个位向量对应一个可能值。

   建立索引:

   CREATE [UNIQUE | CLUSTER] INDEX  <索引名> ON <表名>(<列名> [<次序>] [,<列名> [<次序>]...);

   修改索引:

   ALTER INDEX <旧索引名> RENAME TO <新索引名>;

   删除索引:

   DROP INDEX <索引名>;



以上是关于完整性,模式,建表,建索引的主要内容,如果未能解决你的问题,请参考以下文章

pg:常用字段类型建表增删改查索引

pg:常用字段类型建表增删改查索引

索引很重要,记得建表之初加索引

常用SQL语句DDL建表建索引建序列(PGSQL)

mysql建表建索引

常用SQL语句常见建表建索引等DDL语句(PGSQL)