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

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM