1. 程式人生 > >Oracle基礎知識02

Oracle基礎知識02

建立表

當已經建立好使用者並且賦予相關許可權之後,以建立好的使用者登入。
之前建立好的使用者為 vashon
登入視窗
登入PLSQL之後介面如圖所示:
登入後的介面
開啟SQL編寫視窗

在新建的視窗中我們就可以開始編寫SQL,進行練習

建立一張新表

語法:

create table 表名{
  列名 列的型別 [類的約束],
  列名 列的型別 [類的約束]......
};

語法解釋:

列名是自己起的,不能為中文,

列的型別有:

分類 資料型別 描述
字元型別 CHAR 固定長度的字串 CHAR§:p表示輸入的資料長度,如果輸入沒有達到那麼長,長度還是按照設定的一致。超過則報錯
VARCHAR2 可變長度的字串 VARCHAR2(a):a表示定義的最大字元長度,變長表示如果沒達到這麼長,長度等於輸入的長度。超過則報錯。
NCHAR/NVARCHAR2 Unicode字符集型別
LONG 可變長字串,最大長度2GB
NUMBER 整數和浮點數,NUMBER(p, s):p表示有多少位數,s表示有多少位小數
日期時間型別 DATE 日期和時間資料
TIMESTAMP 秒值精確到小數點後6位
LOB型別 BLOB 二進位制物件
CLOB 字元格式的大型物件
BFILE 將二進位制資料儲存作業系統檔案中

列的約束:

1.not null 非空約束

2.primary key 主鍵約束

3.unique 唯一約束,值不能重複(空值除外)

4.check 條件約束,插入的資料必須滿足某些條件

5.foreign key 外來鍵

舉例:為了之後練習,我在這直接建立好後面練習的表

CREATE TABLE teachers(             							-- 新建一張老師表
       tno VARCHAR(3) PRIMARY KEY, 							-- 老師編號,主鍵約束
       tname VARCHAR(4) NOT NULL,  							-- 老師姓名,非空約束
       tsex VARCHAR(2) CHECK(tsex = '男' OR tsex = '女'),	-- 老師性別,條件約束
       tbirthday DATE,											-- 老師生日,無約束
       prof VARCHAR(6), 										-- 職位
		depart VARCHAR(10) NOT NULL								-- 學科
       )
;
CREATE TABLE courses(              							-- 新建一張課程表
       cno VARCHAR(5) PRIMARY KEY,               -- 課程編號
       cname VARCHAR(10) NOT NULL,               -- 課程名字
       tno VARCHAR(10) NOT NULL REFERENCES teachers(tno)  -- 課程負責的老師,外來鍵約束,關聯老師的編號
       )
;
create table students(                      -- 學生表
       sno varchar(10) PRIMARY KEY,              -- 學生編號
       sname varchar(10) NOT NULL,                -- 學生姓名
       ssex varchar(10) CHECK(ssex = '男' OR ssex = '女'),   -- 學生性別
       sbirthday DATE,
       sage NUMBER CHECK(sage BETWEEN 0 AND 150),      -- 學生年齡
       class VARCHAR(5))                      -- 班級
;
CREATE TABLE scores(                             -- 新建一張成績表用來儲存學生成績 
       sno VARCHAR(3) NOT NULL REFERENCES students(sno),   -- 學生編號,外來鍵關聯(外來鍵約束)
       cno VARCHAR(5) NOT NULL REFERENCES courses(cno),   -- 課程編號,外來鍵關聯
       degree NUMERIC(10, 1) NOT NULL              -- 學生成績
       ) 
;
約束其實內容很多,有時間整理一下。

修改表結構

當我們建立好表之後,還可以對錶的結構進行修改。

  1. 修改列

  2. 新增新列

    ALTER TABLE 表名 ADD(列名 列的型別 [類的約束]) ;
    
  3. 修改已有列的資料型別

    ALTER TABLE 表名 MODIFY(列名 列的型別 [類的約束]);
    
  4. 刪除列

    ALTER TABLE 表名 DROP COLUMN 列名;
    

舉例:向老師表新增微訊號這一列,然後修改這列的屬性,然後在刪除這列。

--新增新列
ALTER TABLE teachers ADD(t_weiXin VARCHAR2(20));
--修改已有列的資料型別
ALTER TABLE teachers MODIFY(t_weiXin NUMBER(20));
--刪除列
ALTER TABLE teachers DROP COLUMN t_weiXin;

注意:這三條語句不要一起跑,不然你是看不到列的變化的,檢視列的屬性變化可以選擇左邊物件視窗,選擇tables資料夾,選擇你修改的表,右鍵選擇檢視,然後選擇列。點選視窗列表選擇SQL視窗,可以回到你之前編輯的視窗。

在這裡插入圖片描述

  1. 新增約束

    當你建表的時候沒有為表中的列新增約束,建完表後可以再新增。

    1. 新增主鍵約束

      alter table 表名 
      add constraint 主鍵約束名 primary key(主鍵約束列名);
      
    2. 新增唯一約束

    alter table 表名 
    add constraint 唯一約束名 unique(唯一約束列名);
    
    1. 新增檢查約束

      alter table 表名 
      add constraint 唯一約束名 check(唯一約束列的約束條件);
      
    2. 新增外來鍵約束

      alter table course 
      add constraint 外來鍵約束名 foreign key(表裡的列名) references 關聯的表名(關聯的表的欄位名);