Oracle 學習第二天

2021-08-06 01:19:45 字數 3664 閱讀 2263

直接見筆記

/*

資料表的建立

create table 資料表的名字

( 列名 資料型別 ···,

列名 資料型別 ···,

列名 資料型別 ···,

-- 新增約束

-- 新增主鍵

constraint 約束名 primary key(列名),

-- 新增外來鍵約束

constraint 約束名 foreign key(列名) references 資料表名(資料表中的列名),

-- 新增唯一約束

constraint 約束名 unique(列名),

-- 新增條件約束

constraint 約束名 check(條件)

-- 最後一條語句千萬不要加','號

);在···處這些約束都可以新增,除此以外還可以新增not null,default()等約束

但是只推薦在哪些地方建立not null,default()的約束,對於其他約束建議不要在定義列的時候新增

在下面或者外面新增的好處在以後新增資料報錯的時候可以知道是違背的什麼約束,可以定位到列

在外面定義約束見下:

alter table 表名 add constraint constraint 約束名 primary key(列名);

alter table 表名 add constraint constraint 約束名 foreign key(列名) references 資料表名(資料表中的列名);

alter table 表名 add constraint constraint 約束名 unique(列名);

alter table 表名 add constraint constraint 約束名 check(條件);

-- 不為為空,這是與其他的不同

alter table 表名 modify 列名 not null;

-- 在 oracle 中資料若沒有輸入 則認為是 null

*/create table testcontent

( tid int,-- primary key 不推薦這種方式,

title varchar2(100) not null,

contents clob not null,

pubtime date not null,

contype nvarchar2(100) default('雜談'),

userid int not null,

-- 新增主鍵

constraint pk_testcontent_tid primary key(tid),

)-- 新增外來鍵

alter table testcontent add constraint fk_testcontent_userid

foreign key(userid) references testusers(userid);

create table testusers

( userid int,

username char(6) not null,

user*** int default(1), -- 1 代表男 0代表女

userpoint number(9,2) default(20),

-- 新增約束

constraint pk_testusers_userid primary key(userid),

constraint uq_testuses_username unique(username)

constraint ck_testusers_user*** check(user*** in(0,1))

--等價於

--constraint ck_testusers_user*** check(user*** = 0 or user*** = 1))/*

幾點說明:

約束名並不強制你取什麼名字,只要符合規範,不是關鍵字即可

但是我們一般都會有統一的風格

例如我這裡是 約束名簡寫_表名_被約束的列名

約束名簡寫 約束名

pk primary key

fk foreign key

uq unique

ck check

另外要強調的是外來鍵

外來鍵的含義是指本表中的這一列一定存在於另外乙個表中的某一固定列中

外來鍵引發了幾個概念

主表 外來鍵含義中的另一表

子表 外間含義中的本表

最後要說的是子表中的被借鑑的那一列的列名和子表中的外來鍵的那一列的列名不強制要相等

資料型別

int 整數

float 浮點數

number 整數+浮點數

char(n) 定長 最大長度為n 長度不為n的也佔n個位元組 查詢比下面乙個要快

nchar(n) 變長 最大長度為n

varchar2(n) 定長 支援unicode編碼,在這種情況下乙個中文和字母佔的位元組數相同,

此時的n指最大個數 查詢比下面乙個要快

nvarchar2(n) 變長 支援unicode編碼,在這種情況下乙個中文和字母佔的位元組數相同,

此時的n指最大個數

long 淘汰 可占用4gb的內容

date 固定 佔7個位元組

lob 8-12tb 可分層處理

clob 字元大物件 一般用來存文章之類的內容

blob 用於儲存二進位制檔案

*/-- 刪除主鍵

-- alter table 資料表名 drop primary key

-- 例子

alter table testusers drop primary key

-- 其餘我也不太清楚 希望有時間去補充

/*最後講一點概念行的內容

優秀的資料庫的設計有哪些好處

1· 減少資料的冗餘 節省空間

2· 保證資料的完整性 儲存完整的資料資訊

3· 方便應用程式的開發

如何設計?

1· 看經驗

2· 滿足一些正規化(6 種正規化)

我們一般設計資料庫要達到三正規化,正規化是向上相容的(我是這樣理解的)

即 如滿足二正規化就一定滿足一正規化

正規化是一把雙刃劍,為什麼這樣說???待補充吧(資料庫原理沒好好學,見諒)

一正規化 列的原子性 即乙個列的資訊不可能在拆成兩個列更小的資訊

二正規化 行的唯一性 即每一行資料都是不同的 都是可區分的

三正規化 乙個表若含有其他表中的資料 那麼這個資料只可能是那張表的主鍵

一般只要滿足這三點即可

資料的完整性

域的完整性 保證列級資料的正確性

資料型別

預設約束 制定預設值

非空約束 必填 不為 null

條件約束 滿足一定的條件

外來鍵約束

實體完整性 保證行級資料的完整性

主鍵約束 這一列的資料不可以重複 即唯一標識一行資料 一張表只用乙個

唯一鍵約束 保證列的資料不重複 一張錶可有多個

引用完整性 保證標語標準間資料的完整性

外來鍵約束

自定義完整性 保證資料滿足自定義的完整性

觸發器*/-- 刪除表

drop table 資料表名

-- 若這個表中的某個列是其他表的外來鍵(姑且這麼說) 那麼這個表會刪除失敗

學習第二天

linux系統的檔案型別及許可權的相關知識 1.普通檔案 l 連線檔案 d 資料夾 表示不同的檔案型別 2.檔案許可權 r 可讀 w 可寫 x 可執行 3.chmod 修改檔案許可權,修符號或者使用八進位制 linux的基礎命令 cd 切換目錄 ls 檢視內容 表示當前目錄 上一級目錄等 touch...

第二天學習

快捷鍵 功能ctrl alt t 啟動終端 print 全屏截圖 ctrl alt a 截圖alt tab 切換視窗 shift alt tab 反向切換視窗 super d 顯示桌面 super e 檔案管理器 super l 屏鎖介面 super up 最大化視窗 super down 恢復視窗...

學習第二天

製表符和換行符 換行符 n 的作用是是來游標跳到下乙個新行,輸入完一行內容後游標下移一行 而製表符 t 的作用是 跳格 即到自下乙個 製表位置 在系統中乙個 製表區 佔8列,相當於4個或8個空格符。正斜槓和反斜槓 正斜槓 是斜率是正數的斜槓,反斜槓 是斜率為負數的斜槓 這個世界上就只有microso...