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


      熟悉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(16) not null,
          tsex char(3) 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

     

  • 相关阅读:
    Python装饰器理解(新手)
    vue项目随笔
    ajax 请求数据传到后台为空字符
    关于document.body.scrollTop 的谷歌,火狐浏览器兼容问题
    Nginx 反向代理解决浏览器跨域问题
    SpringBoot maven build a new demo
    UI收集
    git
    编译
    网络2
  • 原文地址:https://www.cnblogs.com/a1982467767/p/7705230.html
Copyright © 2020-2023  润新知