Oracle基礎知識02
阿新 • • 發佈:2018-11-24
建立表
當已經建立好使用者並且賦予相關許可權之後,以建立好的使用者登入。
之前建立好的使用者為 vashon
登入PLSQL之後介面如圖所示:
在新建的視窗中我們就可以開始編寫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 -- 學生成績
)
;
約束其實內容很多,有時間整理一下。
修改表結構
當我們建立好表之後,還可以對錶的結構進行修改。
-
修改列
-
新增新列
ALTER TABLE 表名 ADD(列名 列的型別 [類的約束]) ;
-
修改已有列的資料型別
ALTER TABLE 表名 MODIFY(列名 列的型別 [類的約束]);
-
刪除列
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視窗,可以回到你之前編輯的視窗。
-
新增約束
當你建表的時候沒有為表中的列新增約束,建完表後可以再新增。
-
新增主鍵約束
alter table 表名 add constraint 主鍵約束名 primary key(主鍵約束列名);
-
新增唯一約束
alter table 表名 add constraint 唯一約束名 unique(唯一約束列名);
-
新增檢查約束
alter table 表名 add constraint 唯一約束名 check(唯一約束列的約束條件);
-
新增外來鍵約束
alter table course add constraint 外來鍵約束名 foreign key(表裡的列名) references 關聯的表名(關聯的表的欄位名);
-