09-Oracle学习_建表与约束

一, 数据库对象

1、表(Table )
  数据库中的表与我们日常生活中使用的表格类似,它也是由行(Row) 和列(Column)组成的。
    列由同类的信息组成,每列又称为一个字段,每列的标题称为字段名。
    行包括了若干列信息项。一行数据称为一个或一条记录,它表达有一定意义的信息组合。
    一个数据库表由一条或多条记录组成,没有记录的表称为空表。
    每个表中通常都有一个主关键字,用于惟一地确定一条记录。
2、索引(Index)
  索引是根据指定的数据库表列建立起来的顺序。
    它提供了快速访问数据的途径,并且可监督表的数据,使其索引所指向的列中的数据不重复。
3、视图(View)
  视图看上去同表似乎一模一样,具有一组命名的字段和数据项,
    但它其实是一个虚拟的表,在数据库中并不实际存。
    视图是由查询数据库表产生的,它限制了用户能看到和修改的数据。
    由此可见,视图可以用来控制用户对数据的访问,并能简化数据的显示,
    即通过视图只显示那些需要的数据信息。
4、图表(Diagram)
  图表其实就是数据库表之间的关系示意图。利用它可以编辑表与表之间的关系。
5、缺省值(Default)
  缺省值是当在表中创建列或插入数据时,对没有指定其具体值的列或列数据项赋予事先设定好的值。
6、规则(Rule)
  规则是对数据库表中数据信息的限制。它限定的是表的列。
7、触发器(Trigger)
  触发器是一个用户定义的SQL事务命令的集合。
    当对一个表进行插入、更改、删除时,这组命令就会自动执行。
8、存储过程(Stored Procedure)
  存储过程是为完成特定的功能而汇集在一起的一组SQL 程序语句,经编译后存储在数据库中的SQL 程序。
9、用户(User)
  所谓用户就是有权限访问数据库的人。


二, 建表与约束

1, 建表语法
    create table tabel_name
    (
        列名 类型,
        ...
    )
2, 数据类型
    varchar2(n)     变长字符串,最多 4KB
    char(n)         定长, 效率高, 但浪费空间
    number(m, n)    数字, m-总长度, n-小数位的长度 
    date            日期和时间
    long            可变长度的字符串,最多 2GB
3, 举例
(1)建表 学生表 stu
create table stu
(
  id number(6),
  name varchar2(20),
  sex number(1),
  age number(3),  
  sdate date,
  grade number(2) default 1,
  class number(4),
  email varchar2(50)
)
(2)插入记录
insert into stu(id, name, sex, age, sdate, grade, class, email)
values(201301, '张三', 1, 22, to_date('2012-09-01', 'YYYY-MM-DD'), 1, 3, '[email protected]')
(3)非空约束 not null
    非空约束也是数据库对象, 可以给它命名
    =>
        name varchar2(20) constraint stu_name_nn not null,
    如果未命名, 则oracle会自动命名
(4)唯一约束 unique
   ①字段级约束 
    只能约束一个字段, 紧跟在字段定义后面
    =>
        email varchar2(50) unique
    注意: null 不算重复.
   ②表级约束
    在所有字段定义完之后定义, 可约束多个字段
    email 与 name 的组合 不能重复.
    =>
        email varchar2(50),
        constraint stu_name_uni unique(email, name)
(5)主键约束 primary key
    可以唯一标识一条记录
    =>字段级约束
        id number(6) primary key,
    语法上: not null + unique
    逻辑上: 代表一条记录
    =>表级约束
        constraint stu_id_pk primary key(id),
(6)外键约束 
    加在两张表上(主表,副表), 
    主表上某个字段的值 参考 副表主键的值
    外键约束被参考的字段必须是主键, 
    即副表被主表参考的字段必须是主键
    => 字段级
        class number(4) references class (id),
    => 表级
        constraint stu_class_fk foreign key (class) references class(id),
create table class
(
  id number(4) primary key,
  name varchar2(20) not null
);
create table stu
(
  id number(6),
  name varchar2(20) constraint stu_name_nn not null,
  sex number(1),
  age number(3),
  sdate date,
  grade number(2) default 1,
  class number(4),
  -- class number(4) references class(id),
  email varchar2(5),
  constraint stu_class_fk foreign key (class) references class(id),
  constraint stu_id_pk primary key (id),
  constraint stu_name_email_uni unique (email, name)
);

你可能感兴趣的:(oracle学习,建表与约束)