oracle 資料庫基本操作——數據定義語言

来源:http://www.cnblogs.com/a1982467767/archive/2017/10/21/7705230.html
-Advertisement-
Play Games

熟悉Oracle上機環境及Oracle客戶端的配置;熟練掌握和使用DDL語言,建立、修改和刪除資料庫表、主鍵、外鍵約束關係和索引。 (修改資料庫表名) 將資料庫表S1改名為Student_Temp。 在定義外鍵約束條件時,不能把其他表中沒有的屬性定義在本表的外鍵中,否則會生辰一個錯誤; 在建表時,因 ...


  熟悉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

 

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 前言 之前翻博客園的時候,看到有人朋友分享阿裡巴巴的面試題,其中有一道題就是關於ES6轉ES5 原理的,當時我看到感覺到自己離去阿裡巴巴的路還很遠啊,像我們大部分做開發的時候,都只知其然不知 其所以然,本著好學的態度我也去網上搜了下關於Babel es6轉es5的原理,但是很多都是枯燥難懂,整理了一 ...
  • 首先#pragma在本質上是聲明,常用的功能就是註釋,尤其是給Code分段註釋;而且它還有另一個強大的功能是處理編譯器警告,但卻沒有上一個功能用的那麼多。 clang diagnostic 是#pragma 第一個常用命令: 常見的用法 1. 方法棄用告警 2. 不相容指針類型 3. 迴圈引用 4. ...
  • 服務是Android四大組件之一,與Activity一樣,代表可執行程式。但Service不像Activity有可操作的用戶界面,它是一直在後臺運行。用通俗易懂點的話來說: 如果某個應用要在運行時向用戶呈現可操作的信息就應該選擇Activity,如果不是就選擇Service。 Service的生命周 ...
  • 在按照第三方sdk文檔中的Emedded Binaries 中加入了他們的framework,在刪除這下麵的對應的framework後,問題就得到瞭解決 發下有個英文的頁面也是涉及這個問題的, 描述的很詳細. 鏈接: https://stackoverflow.com/questions/41786 ...
  • 一:sqlserver 執行計劃介紹 sqlserver 執行計是在sqlser manager studio 工具中打開,是檢查一條sql執行效率的工具。建議配合SET STATISTICS IO ON等語句來一起使用,執行計劃是從右向左看,耗時高的一般顯示在右邊,我們知道,sqlserver 查 ...
  • 例:MySQL5.7.19 下載 當然首先是要下載咯https://dev.mysql.com/downloads/mysql/ 官網下載地址。 選擇適合自己電腦的版本,點擊Download,跳轉,直接No thanks下載好了。 靜靜的等待下載,解壓。這是我的解壓路徑D:\MySQL 正式開始安裝 ...
  • Redis4.0 Cluster — Centos7, Ruby redis-trib.rb , gem redis ...
  • 一、安裝包 先從網路上,下載Mysql安裝包,複製到U盤 下載地址:https://dev.mysql.com/downloads/mysql/ 二、掛載U盤 2.1查看分區 先輸入命令 cat /proc/partitions 插入U盤,重新輸入命令 cat /proc/partitions 結果 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...