数据定义

2019-04-13 15:19发布

SQL标准不提供修改模式定义和修改视图定义的操作模式的定义与删除1定义模式模式的定义语句:CREATE SCHEMA<模式名>authorization<用户名>如果没有指定模式名,那么模式名隐含为用户名用户可以在创建模式的同时在这个模式定义中进一步创建表视图定义授权。2删除模式drop schema<模式名>cascade表示在删除模式的同时把该模式中所有的数据库对象全部删除restrict表示如果该模式中已经定义了下属数据库对象,则拒绝删除语句的执行基本表的定义删除与修改1定义基本表创建一个模式就建立了一个数据库的命名空间,一个框架Create table<表名>(<列名><数据类型>列级完整性约束条件                    .......)
表级完整性约束条件例建立一个课程表Coursecreate table Course(Cno char(4)primary key,//列级完整性约束条件,Cno是主码Cname char(40)not null,    //列级。。。,Cname不能为空值Cpno char(4)                //Cpno 的含义是先修课Ccredit smallint,foreign key(Cpno)references Course(Cno)//表级完整性约束条件,Cpno是外码,被参照表是Course,被参照列是Cno);本例说明参照表和被参照表可以使一个表//外键参照表,主键被参照表例2建立学生选课表SCcreate table SC(Sno char(9),Cno char(4),Grade Smallint,primary key(Sno,Cno)//主码由两个属性构成,必须作为表级完整性进行定义foreign key(Sno)references Student(Sno),//表级完整性约束条件,Sno是外码,被参照表是studentforeign key(Cno)references Course(Cno)//表级完整性约束条件,Cno是外码,被参照表是Course);
2模式与表三种方法定义所属模式1,在表中明显给出模式名create table “S-T”.Student(....)2在创建模式语句的同时创建表3当用户创建基本表时若没有指定模式,系统根据搜索路径(search path)来确定该对象所属模式
3修改基本表alter table<表名>【add 【cloumn】<新列名><数据类型>【完整性约束】】【add<表级完整性约束>】【drop 【column】<列名>【cascade|restrict】】//删除表中的列【drop constraint<完整性约束名>【restrict|cascade】】//删除指定的完整性约束条件【alter column<列名》<数据类型>】;//用于修改原有的列定义,包括修改列名和数据类型例向student表中添加入学时间列,其数据类型为日期型alter table student add S_entrance  Date;将年龄的数据类型由字符型改为整数alter table student alter conlumn Sage int;增加课程名称必须取唯一值得约束条件alter table Course add unique(Cname);
4删除基本表drop table<表名>[restrict|cascade];

索引的建立与删除数据库索引有多种类型,常见顺序文件上的索引B+树索引散列索引位图索引1建立索引create【unique】【cluster】index<索引名>on 《表名》(列名,次序)例student表按学号升序建唯一索引,SC按学号升序和课程号降序建唯一索引create unique index Coucno ON course(Cno);create unique index SCno ON SC(Sno ASC,Cno DESC);2修改索引alter index<旧索引名>rename to<新索引名>;3删除索引drop index<索引名>