1. 程式人生 > >管理資料庫物件

管理資料庫物件

紫色代表一級目錄
粉紅代表二級目錄
藍色代表三級目錄
紅色代表關鍵字
橙色代表說明

資料庫物件:
  是資料庫定義的、用於儲存或引用資料的物件(表、檢視、索引等)。
規劃:
  規劃是與資料庫某個使用者名稱相關聯的資料庫物件集合。
  相應的使用者名稱被稱為規劃所有人(關聯物件組的所有人)。
  在這裡插入圖片描述
  USER1訪問自己的table1:table1
  USER1訪問自己的test:test
  USER1訪問USER2的table10:USER2.table10
  USER1訪問USER2的test:USER2.test
資料的主要儲存方式:
  簡單說明:table是關係型資料庫裡最主要的資料儲存物件,其簡單形式由行和列組成。表在資料庫中佔用實際的物理空間,可以是永久或者臨時的。
  列:


    簡單說明:在關係資料庫中列也被稱為欄位,它是表的基本組成部分,被設定為特定的資料型別。資料型別決定了什麼樣的資料可以儲存在相應的列中,從而儲存了資料的完整性
    在給列命名時,採用下劃線_將不同的單詞分開是一個不錯的選擇。
    列也可以指定為NULL和NOT NULL。
  行:
    簡單說明:行(也被稱為元組)是資料庫表中的一條記錄。
  CREATE TABLE語句:
    SQL中的CREATE TABLE語句用於建立一個表。
    在建立表時需要考慮到的問題:
       - 表的名字
       - 列的名字
       - 包含什麼型別的資料
       - 每一列的資料型別
       - 每一列的長度
       - 主鍵
       - 哪些欄位的值可以是NULL
    建立表的基本語法:

      CREATE TABLE table_name
      (  field1 data_type [ null / not null ],
         field2 data_type [ null / not null ],
         …
         fieldn data_type [ null / not null ];
      )
  ALTER TABLE
    1. 修改表的元素
      列的屬性是其所包含資料的規則和行為。利用ALTER TABLE可以修改列的屬性,這裡“屬性”的含義為:
        列的資料型別;
        列的長度、有效位數或標度;
        列值是否為空
      例:
ALTER TABLE table1
        name VARCHAR(10); 修改表table1的name屬性的變數型別(如果表已包含資料,這時新增的列就不能定義為NOT NULL。原因是當現有記錄中沒有相關資料時,就會產生自身矛盾的情況。
    2. 新增列
      強行向表新增一列的方法:
        a. 新增一列,把它定義為NULL(這一行不一定要包含資料)
        b. 給這個新列在每條記錄裡都插入資料
        c. 把列的定義修改為NOT NULL
    3. 新增自動增加的列(有時我們需要一列資料能自動增加,從而讓每一行都具有不同的序號)
      多種情況:
        MySQL提供SERIAL方法來為表生產真正的唯一值
          例:CREATE TABLE TEST(
              ID SERIAL,
              TEST_NAME VARCHAR(20));
            watch out:建立表時使用NULL(列的預設屬性是NULL)。
        Microsoft SQL Server中使用IDENTITY型別
          例:CREATE TABLE TEST(
              ID INT IDENTITY(1,1) NOT NULL,
              TEST_NAME VARCHAR(20));
        Oracle沒有提供直接的方法來建立自動增加的列,但卻可以用SEQUENCE物件和一個觸發器實現類似的效果。
    4. 修改列
  從現有的表新建另一個表
    格式:CREATE TABLE new_table_name AS  //建立一個新的表
       SELECT [列名]  //選擇被選擇表中的列
       FROM table_name  //被選擇的表
       [WHERE]  //條件判斷語句
  刪除表
     格式:DROP TABLE table_name [ RESTRICT | CASCADE ]
     說明:RESTRICT代表如果表被檢視或約束所引用,DROP就會返回一個錯誤。
        CASCADE代表全部引用檢視和約束都被刪除。
完整性約束
  作用:用於確定關係型資料庫裡資料的準確性和一致性。
  主鍵約束
    主鍵是表中一個或多個用於實現記錄唯一性的欄位。
    實現:在建立表時,在沒建立一列(欄位)時,在變數型別後指定PRIMARY KEY
    例:CREATE TABLE table_name
      (name CHAR(9) NOT NULL PRIMARY KEY,
       …
      );
  唯一性約束
    唯一性約束要求表中某列(欄位)的值在每條記錄裡都是唯一的。
    實現:將上例主鍵約束的PRIMARY KEY改為UNIQUE即可。
  外來鍵約束
    外來鍵是子表裡的一個欄位,引用父表的主鍵。外來鍵約束是確保表與表之間引用完整性的主要機制。
    實現:通過CONSTRAINT、FROEIGN KEY、REFERENCES關鍵字實現。
    例:CREATE TABLE new_table_name
      (
        …
        CONSTRAINT new_name FOREIGN KEY(name) REFERENCES table_name(name),
        …
      )
      在這裡插入圖片描述
    利用ALTER TABLE命令可以向表裡新增外來鍵
      例:ALTER TABLE new_table_name
        ADD CONSTRAINT new_name FOREIGN KEY (name)
        REFERENCES table_name(name);
  NOT NULL約束
    關鍵字NULL和NOT NULL說明(欄位預設是NULL)。
  檢查約束  在這裡插入圖片描述 
  去除約束
 DROP CONSTRAINT選項可以去除已定義的約束
 去除主鍵約束