Oralce学习总结--oracle建表和约束

来源:互联网 发布:如何成为首富 知乎 编辑:程序博客网 时间:2024/05/16 11:52

一.概念:

      DBMS -- DataBase Management System
      DBMS 是一种操纵和管理数据库的大型软件,是用于建立、使用和维护数据库
     




       实体——在数据库中用行记录,称之为记录

       实体的属性——在数据库中列表示,称之为字段或属性

     

数据库中的表
       
数据库中的表由行和列组成

记录和属性:
        表中的行用来存储实体,称为记录
        表中的列用来存储每个实体的属性,称为字段或属性

主键:以唯一标识一个实体(记录)的列称之为主键列
主键列选择的原则是:
a.最少性
b.尽量选择单个键作为主键
c.稳定性
e.尽量选择数值更新少的列作为主键

数据类型:
字符数据类型 char 、varchar2、long…
数字类型 int、number、decimal…
日期类型 date
其它数据类型 raw、long raw、Blob、Clob、Bfile



二.创建表语法
  create table [<模式名>.]<表名>(
         <字段1> <类型> [约束条件],
         <字段2> <类型> [约束条件],
         ...
  )[tablespace <命名空间>];


三.数据完整性和约束


1.主键约束
    特点:非空且唯一
    作用:确保表中每一行数据的唯一性
    注意:一个表只能设置一个主键约束,但是主键约束可以由多个字段构成(组合主键)
    创建方式:
        a.在创建表的时候设置主键约束
            字段名 字段类型 primary key
            
        b.在修改表时添加主键约束
            alter table <表名> add constraint <主键约束名字> primary key (<列名1>,<列名2>....);  //多个列作为组合主键用逗号分开
        
2.外键约束
    特点:唯一涉及到表与表之间关系的约束
    创建方式:
        a.在创建表的时候设置外键约束
            字段名 字段类型 references 主表名(列名) //必须是主键,同一数据类型,值来源于主表的主键,或者null
            
        b.在修改表的时候添加外键约束
            alter table <表名> add constraint <外键约束名> foreign key(<外键列名>) references <主表>(<列名>)[on delete cascade|on delete set null]
        
3.唯一约束
    作用:保证字段值的唯一性
    创建方式:    
        a.在创建表的时候设置外键约束
            字段名 字段类型 unique   
            
        b.在修改表的时候添加外键约束
            alter table <表名> add constraint <唯一约束名> unique(<列名>)
                
4.检查约束
    作用:表中的值 更具有实际的意义
    创建方式:    
        a.在创建表的时候设置外键约束
            字段名 字段类型 check(条件)
            
        b.在修改表的时候添加外键约束
            alter table <表名> add constraint <检查约束名> check(<条件>)
    
有约束名称的(主键、外键、唯一,检查),以上四种
    a.更改约束的名称
        alter table <表名> rename constraint <旧约束名> to <新约束名>;
    
    b.删除主键约束
        禁用(启用)   disable、enable
            alter table <表名> disable constraint <约束名>;
            
        删除:
            alter table <表名> drop constraint <约束名>;    
                
5.非空约束
    创建方式:
        a.在创建表的时候设置非空约束
            字段名 字段类型 not null
            
        b.在修改表的时候添加非空约束
            alter table <表名> modify <列名> [字段类型] not nulll;
            
        c.将非空改为可以为null
            alter table <表名> modify <列名> [字段类型] nulll;
四:行级约束和表级约束
        行级约束:跟在字段后面,对当前行进行约束
        表级约束:写完字段后“,”隔开,constraint +约束ming+约束类型(主键,外键约束,检查约束)
区别:
        行级约束只能对表中的当前字段(属性)进行约束
       表级约束可以对表中的多个字段进行约束(例如组合主键一定要用表级约束)
ps:附加一个带约束的例子:
create table stuInfo(
    stuNo number(10) primary key,--主键约束
    cid number(4)   constraint FK_stuInfo_cid references classInfo(cid),--外键约束   关联班级id
    stuName varchar2(100) not null,--非空约束
    stuCardId varchar2(20)
        constraint CK_stuInfo_stuCardId check(length(stuCardId)=18),--检查约束
    sex varchar2(4) default '男'      --设置默认值
        constraint CK_stuInfo_sex check( sex='男' or sex='女' ),
    stuAge number(3)
        constraint CK_stuInfo_stuAge check(stuAge between 12 and 30),
    stuTel varchar2(15) unique, --注意:唯一约束不对NULL做约束
    stuAddr varchar2(100),
        constraint CK_stuInfo_stuTelAndAddr check( stuTel is not null or stuAddr is not null)--表级约束
);






原创粉丝点击