常见的orcale数据库对象 --- 表

 

常见的orcale数据库对象 --- 表

 

表:基本的数据存储集合,由行和列组成。

1.表名和列名的命名规则:

l  必须以字母开头

l  必须在 1–30 个字符之间

l  必须只能包含 A–Z, a–z, 0–9, _, $, 和 #

l  必须不能和用户定义的其他对象重名

l  必须不能是Oracle 的保留字

l  Oracle默认存储是都存为大写

l  数据库名只能是1~8位,datalink可以是128位,和其他一些特殊字符

 

2.数据类型:

       varchar2(size)   可变长度的字符串   最大长度为4000 bytes

       char(6)        固定的字符串    最大长度为2000 bytes

       nchar(3)     根据字符集而定的固定长度字符   1000 字符  

       nvarchar2      根据字符集而定的可变的       长度为  2000 字符

              一个字符两个字节

       number(p,s)  数字 p是有效位,或精度,s是小数

number(3,2)  3是有效位,2是小数位    多余的小数四舍五入

p的范围:1~38

s的范围:-84~127

date      

       long

       clob  字符数据

       blob  二进制数据

       raw     固定长度二级制

       bfile   存放在数据外的二进制数据

       rowid  数据库中记录唯一的行号,是一个伪劣,是在查询语句的时候构造出来的

       integer

       float

       raw   存入的是流,图像声音等(image raw)

       long rsw

       real ==  number(63)  精度更高比float

 

1.普通创建表,在scott用户下创建

create  table demo(

    id number(8),

    name varchar2(30) default ‘laowng’

);

因为访问表是有权限的,所以在scott用户下创建的表在hr中无法访问,要授权之后才可以访问,语句为:

    grant select to demo to hr;

授权之后访问的语句为:

    select *from scott.demo

 

2.子查询创建表

    create table demo1 as select * from emp;

3.alter table语句

追加新的列

修改现有的列

为新追加的列定义默认值

删除一个列

   

(1)为表追加一个新的列:

    alter table demo add (id number(8));

(2)修改现有的列字段的类型:

    alter table demo modify (name varchar2(30));

(3)修改现有列的字段名:

SQL> alter table demo rename column name to realname;

注:对默认值的修改只能影响今后对表的修改

(4)删除一列:

    alter table demo drop column id;

(5)删除表:

    删除表的时候数据和结构都被删除

所有正在运行的相关事务被提交

所有相关索引被删除

drop table 语句不能回滚

drop table demo

(6)改变对象的名称(重命名表)

    SQL> rename demo to demo_dep;

注:执行rename语句改变表, 视图, 序列, 或同义词的名称

        必须是对象的拥有者??

(7)清空表

    truncate table demo;

    作用:

删除表中所有的数据

        释放表的存储空间

    注:

truncate语句不能回滚

        可以使用delete语句删除数据

4.根据数据类型创建表:

SQL> create table demo9(

    name varchar2(30),

    sex char(2),

    age number(3),

    birth date

    );

表已创建。

 

5.修改日期的格式:

SQL> select to_char(birth,'yyyy-mm-dd HH24:MI:SS') from demo9;

   

6.创建表的约束:

    约束是表一级的限制

    如果存在依赖关系,约束可以防止错误的删除数据

    约束的类型有5种:

    (1)not null

    (2)unique

    (3)primary key

    (4)foreign key

    (5)check

    用户可以自定义约束,也可以使用Qracle Server的sys_cn格式命名约束

约束创建的时机:

创建表的时候,同时创建约束

表结构创建完成后

约束可以定义在列一级,或者是表一级

通过数据字典查看约束

   

    定义的约束可以分为表级约束和列级约束:

        作用范围:列级约束只能作用在一个列上,而表约束可以作用在多个列上(当然表约束也可以作用在一个列上)

       定义方式:列约束必须跟在列的定义里后面,表约束不与列一起,而是单独定义

       非空约束(not null)只能定义在列上

 

       列级的约束为:

not null   系统命名

constraint  加这个单词说明是用户自定义的约束

       SQL> create table checkTable(

         id number(8),

         name varchar2(30) default 'redarmy' not null

);

        或

SQL> create table checkTable2(

         name varchar2(30)

constraint chk_name_nn not null

);

 

       表级的约束:

           create table check(

              email varchar2(30) not null,

              constraint chk_email unique(email)

);

   

       主键约束

       create table bookType(

           bt_id number(9),

           bt_name varchar2(30),

           constraint bt_id_pk primary key(by_id)

       );

       Oracle主键约束必须放到最后面,因为主键约束是针对于一个表来说的。

       create table books(

           bt_id number(9),

           bt_name varchar2(30),

           constraint bt_id_pk primary key(by_id)

       );

    外键约束:

    create table books(

        bk_id number(9),

        bk_name varchar2(30),

        bt_id number(9),

        constraint bk_id_pk primary key(bk_id),

        constraint bt_id_fk foreign key (bt_id)

references bookType(bt_id) on delete cascade

   );

    在定义外键的同时设了级联删除

 

check约束

SQL> create table check01(

   sal number(3,2),

    constraint sal_ck check(sal>0.2)

 );

 

 

查询所有的用户约束

    SQL> select * from user_constraints;                

   

 

   

 

你可能感兴趣的:(常见的orcale数据库对象 --- 表)