SQL管理數據庫對象

一、什麼是數據庫對象
    數據庫對象是數據庫裏定義的、用於存儲或引用數據的對象,比如表、視圖、簇、序列、索引和異名。

二、什麼是規劃
    規劃是與數據庫某個用戶名相關聯的數據庫對象集合。相應的用戶名被稱爲規劃所有人,或是關聯對象組的所有人。數據庫裏可以有一個或多個規劃。用戶只與同名規劃相關聯,通常情況下反之亦然。

三、表:數據庫的主要存儲方式

    1、列
        字段在關係型數據庫也被稱爲列,它是表的組成部分,被設置爲特定的數據類型。

    2、行
        行是數據庫表裏的一條記錄。

    3、CREATE TABLE語句

        在創建表時,需要考慮以下一些基本問題。
        表裏會包含什麼類型的數據?
        表的名稱是什麼?
        哪個(或哪些)列組成主鍵?
        列(字段)的名稱是什麼?
        每一列的數據類型是什麼?
        每一列的長度是什麼?
        表裏哪些列可以是NULL?

        創建表的基本語法:
        CREATE TABLE table_name
        (
            Field1 date_type [not null],
            Field2 date_type [not null],
            Field3 date_type [not null],
            Field4 date_type [not null],
            Field5 date_type [not null]
        );

    4、命名規範

    5、ALTER TABLE命令
        ALTER TABLE命令的標準:
        alter table table_name[modify] [column column_name][datatype]null not null] [restrict | cascade]
        [drop] [constraint constraint_name]
        [add] [column] column definition

        (1) 修改表的元素

            列的屬性是其所包含數據的規則和行爲。利用ALTER TABLE命令可以修改列的屬性,在此“屬性”的含義是:
            列的數據類型;
            列的長度、有效位數或標度;
            列值能否爲空。

            語法:
            ALTER TABLE table_name MODIFY
            Field date_type [not null];

        (2) 添加列
            強行向表添加一列的方法:
            添加一列,把它定義爲NULL(這一行不一定要包含數據);
            給這條新列在每條記錄裏都插入數據;
            把列的定義修改爲NOT NULL。

        (3) 添加自動增加的列

            格式:

            MySQL:
            CREATE TABLE table_name
            (
                Field SERIAL;
                …

            SQL Server:
            CREATE TABLE table_name
            (
                Field INT IDENTITY(1,1) NOT NULL,
                ...

            Oracle:
            可以使用SEQUENCE對象和一個觸發器來實現類似的效果。

        (4) 修改列

            修改列的通用規則:
            列的長度可以增加到特定數據類型所允許的最大長度;
            如果想縮短某列的長度,則必須要求這一列在表裏所有數據的長度都小於或等於新長度;
            數值數據的位數可以增加;
            如果要縮短數值數據的位數,則必須要求這一列在表裏所有數值的位數小於或等於新指定的位數;
            數值的小數位數可以增加或減少;
            列的數據類型一般是可以改變的。

    6、從現有表新建另一個表

        MySQL和Oralce:
        利用CREATE TABLE語句與SELECT語句組合可以複製現有的表。
        create table new_table_name as
        select [*|column1, column2]
        from table_name
        [where]

        SQL Server:
        利用SELECT…INTO方法來實現相同的效果。
        select [*|column1, column2]
        into new_table_name
        from table_name
        [where]

     7、刪除表
        drop table table_name [restrict | cascade]

四、完整性約束

    1、主鍵約束
        主鍵是表裏一個或多個用於實現記錄唯一性的字段。
        隱含約束:Field date_type [not null] PRIMARY KEY;
        明確指定:PRIMARY KEY(Field);
        明確指定兩個主鍵:PRIMARY KEY(Field1, Field2);
        ALTER TABLE table_name:ALTER TABLE table_name ADD CONSTRAINT constraint_name PRIMARY KEY(Field1, Field2);

    2、唯一性約束
        唯一性約束要求表裏某個字段的值在每條記錄裏都是唯一的。
        Field date_type [not null] UNIQUE;

    3、外鍵約束
        外鍵是子表裏的一個字段,引用父表裏的主鍵。

        創建表的同時創建外鍵:
        …
        CONSTRAINT constraint_name FOREIGN KEY(Field) REFERENCES table_name(Field);

        利用ALTER TABLE命令可以向表裏添加外鍵:
        ALTER TABLE table_name
        ADD CONSTRAINT constraint_name FOREIGN KEY(Field)
        REFERENCES table_name(Field);

    4、NOT NULL約束

    5、檢查約束
        檢查(CHK)約束用於檢查輸入到特定字段的數據的有效性。
        在檢查約束力可以使用幾乎任何條件,就像在SQL查詢裏一樣。

    6、去除約束
        利用ALTER TABLE命令的DROP CONSTRAINT選項可以去除已經定義的約束。
        ALTER TABLE table_name DROP CONSTRAINT constraint_name;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章