oracle 学习笔记(十一) 数据库常用对象, table ,constraint ,index ,view和数据字典

1 table :

   创建表 :  

   create table t(表名)  (数据名a +数据类型varchar2(20))


  创建一个表t  , 其中包括 名为a  数据类型为 varchar2 (变长字符串),最大长度20 .


  例:创建学生信息表:

 create table stu
(
id number(15),
name varchar2(20)not null,               #约束条件, 插入时name不能为空值
sex number(1),
age number (3),

sdate date,                                            # 此处不用为date设置最大长度, 因为sql里date就是一种保存日期的数据类型
grade number (2) default 1,               #设置默认值为1    .   当插入时未指定grade时 ,grade 为1 
class number(4),
email varchar2(50) unique
)

 

 



   2 约束constraint :

      本身也是一种对象  可以为它起名.  如

           name varchar2(20)  constraint  stu_name_nn not null,    

       not nul 为非空约束:

   

    2) 唯一约束: unique


     stu 表中,显然email 不能重复, 添加约束如下:

              email varchar2(50)  unique


    以上均为字段级约束 .

    表级约束 : 要求name 和 email 的组合不能重复:


 create table stu
(
id number(6),
name varchar2(20)not null,
sex number(1),
age number (3),
sdate date,
grade number (2) default 1,
class number(4),
email varchar2(50),
constraint stu_name_email_uni unique(email,name)
)

 3)主键primary key 约束:

     主键:可以唯一标注整条记录的字段.  (非空,唯一,并从逻辑意义上代表每条记录)


    上述stu表中, 可以设id 为主键: 

     字段级:          id number(6) primary key,

     表级           constraint  stu_id_pk primary key (id)

                        亦可以 以两个字段的组合作为主键 .


  4) 外键:

       外键存在于同一张表的两个字段或两张表的两个字段之间 .

       例 在 emp 表中 存在 deptno 这一字段, dept 表中也有deptno 这一字段.

       如果需要向emp 中 insert 数据, 显然 deptno这一字段的赋值不能超过 dept 表中deptno的包含范围,  这使外键约束成为必要.

                           

           创建class:

           create table class

           (

                   id number(4)  primary key,

                   name varchar2(20) not null

            )


           也就是说 ,class 中的id 与 stu中的 class 形成映射关系.  

           可在 stu  中的class 字段添加 约束:

           create table stu
           (
              id number(6),
              name varchar2(20)not null,
              sex number(1),
              age number (3),
              sdate date,
              grade number (2) default 1,
              class number(4) references class (id),
              email varchar2(50),

              constraint  stu_id_pk primary key (id),
              constraint stu_name_email_uni unique(email,name)

              #或者表级约束:

             #            constraint stu_class_fk  foreigh key (class) references class (id)
            )


            注意: 被参考的字段 (如上述 class 中的id)   必须是主键!

         

 3索引 index :

      为某个字段建立索引

     create index  idx_stu_email on stu(email) ;

   

      删除索引:

     drop index  idx_stu_email .

  

     建立索引后 ,用户读取相关数据时效率提高

                           修改相关数据时效率降低, 因为亦要修改 user_indexs 中相关内容


4 视图 view .


   给scott 用户 创建view的权限 


  conn sys /scott  as sysdba;

  grant create view to scott ;

  conn scott/tiger;


 某些方面来说,view相当于一种子查询, 便于提供给用户某些表的部分信息:

  create view v$_stu as select id,naem,age from stu ;

       


5

数据字典表  user_tables ,user_views ,user_constraints等.

    例如 想查看当前共有多少tables  他们的名字都是什么.

    select  table_name  from user_tables ;

            

     存储数据字典表之表  dictionary

   


   

 

    

    

   

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值