码迷,mamicode.com
首页 > 数据库 > 详细

oracle 数据库基本操作——数据定义语言

时间:2017-10-21 19:01:09      阅读:271      评论:0      收藏:0      [点我收藏+]

标签:str   index   foreign   span   www.   除了   查询   错误   用户   

  熟悉Oracle上机环境及Oracle客户端的配置;熟练掌握和使用DDL语言,建立、修改和删除数据库表、主键、外键约束关系和索引。

  1. (建立数据库表)  建立教学数据库的四个数据库表,其中Student表中不包含SSEX(C,2) 字段,Sname 字段为Sname(C,8)且可为空。
    create table student
       (sno char(5),
        sname varchar2(8),
        sage number(2) check(age between 12 and 60),
        sdept char(2),
        sclass char(2),
        constraint student_pk primary key(sno));
    create table course
       (cno char(3) not null primary key,
        cname char(16),
        ctime number(3));
    create table score
    (   Sno char(5),
        cno char(3),
        grade number(3),
        constraint score_pk primary key(sno,cno),
        constraint s_sno_fk foreign key(sno) references student(sno),
        constraint s_cno_fk foreign key(cno) references course(cno),
        constraint score_ck1 check (grade >= 0 and grade <= 100));
    create table teach
    (
        tname char(8) not null,
        tsex char(2) not null,
        cno char(3) not null ,
        tdate date not null,
        tdept char(2) not null,
        constraint teach_pk primary key(cno),
        constraint teach_cno_fk foreign key(cno) references course(cno));
  2. (修改数据库表)  在Student表中增加SEX(C,2) 字段。
    alter table student
    add(sex char(2)); 
  3. (修改列名)  将Student表中列名SEX修改为SSEX。
    alter table student
     rename column sex to ssex;
    modify(ssex char(2) check(ssex in (‘男‘,‘女‘)));
  4. (修改数据库表)  将Student表中把Sname 字段修改为Sname(C,10)且为非空。
    alter table student
    modify(sname char(10)not null);
  5. (建立索引)  为Score表按课程号升序、分数降序建立索引,索引名为SC_GRADE。
    create index sc_grade on score(cno,grade desc);
  6. (删除索引)  删除索引SC_GRADE。
    drop index sc_grade;
  7. (建立数据库表)  建立数据库表S1(SNO,SNAME,SD,SA),其字段类型定义与Student表中的相应字段(SNO,SNAME,SDEPT,SAGE)的数据类型定义相同。
    create table s1(
      sno char(5) not null,
      sname char(10) not null unique,
      sd char(2),sa number(2));
  8. (修改数据库表)  删除成绩表Score的参照完整性约束关系。
    alter table score drop constraint s_sno_fk;
    alter table score drop constraint s_cno_fk;
  9. (修改数据库表)  添加成绩表Score的参照完整性约束关系。
    alter table Score 
    add(constraint s_sno_fk foreign key(sno) references student(sno),
      constraint s_cno_fk  foreign key(cno) references course(cno));
  10. (修改数据库表名)  将数据库表S1改名为Student_Temp。

     rename S1 to student_temp;
  11. 查看表的约束条件
    select constraint_name, table_name, r_owner, r_constraint_name
    from all_constraints
    where table_name = score;
  12. 删除表中的列
    alter table student
    drop column spec;
  13. 查看用户下所有的表名
    select table_name from user_tables;  //当前用户的表 
    select table_name from all_tables;  //所有用户的表 
    select table_name from dba_tables;  //包括系统表 
    select * from user_indexes //可以查询出所有的用户表索引
  14. 查看表中所有的列名
  15. select column_name,data_type ,data_length,data_precision,data_scale from user_tab_columns where table_name=STUDENT;//表名必须大写
    //或者
    desc student;

  在定义外键约束条件时,不能把其他表中没有的属性定义在本表的外键中,否则会生辰一个错误;

  在建表时,因为约束条件的名称被重复定义,导致表建不起来:改进方法,将课本上的约束条件名称家上表名前缀,避免重复性定义问题;

  经常会遗漏分号,导致cmd中格式脏乱;

  在设置一个属性的类型时,如果设置为not null则不能再更改它的属性为null;

  在oracle中汉字占得是三个字节,所以姓名出现四个字就超出了范围,需要修改其范围,性别应该修改为3个字节;

  姓名不可以设置为not null unique ,如果出现重名就会发生错误,因为当时设置了unique最后还得重建表,删除此约束条件;

 

删除表数据有两种方法:delete和truncate。

delete的用法如下:

delete from <表名> [where条件]

truncate的用法如下:

truncate table <表名>

delete和truncate的区别如下:

1、delete可以删除表中的一条或多条数据,也可以删除全部数据;而truncate只能将表中的全部数据删除。

2、delete删除表数据后,标识字段不能复用。也就是说如果你把id=10(假如id是标识字段)的那行数据删除了,你也不可能再插入一条数据让id=10.

3、truncate删除表数据后,标识重新恢复初始状态。默认为初始值为1,也就是说,truncate之后,再插入一条数据,id=1.

 但是在使用truncate删除数据时可能受到外键的限制,必须从子集开始删除,才可以删除数据;

 

参考:http://www.cnblogs.com/laipDIDI/articles/2615210.html
http://www.jb51.net/article/82660.htm

 

 

oracle 数据库基本操作——数据定义语言

标签:str   index   foreign   span   www.   除了   查询   错误   用户   

原文地址:http://www.cnblogs.com/a1982467767/p/7705230.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!