Oracle 基礎知識 新手學習詳解一

文章太長,分批發送,會註明順序。送給正在學習的你,希望有所幫助!

DDL : 數據庫模式定義語言,關鍵字:create

DML : 數據操縱語言,關鍵字:Insert、delete、update

DCL : 數據庫控制語言 ,關鍵字:grant、remove

DQL : 數據庫查詢語言,關鍵字:select

結構化查詢語言 (Structured Query Language, SQL),Oracle 中的 SQL 不區分大小寫只有在文本數字值得時候才會檢查

注 : 當創建表或列名的時候使用雙引號括起來就可以創建大小寫敏感的列名或表名,但是不推薦這樣做

SQL*Plus 是 Oracle 的一種操作數據庫數據和對數據庫執行即時查詢的工具,甚至還可以作為代碼生成器來使用

邏輯判斷 : = > >= < <= != ^= <>

!= ^= <> 這3個都表示不等於

注 : 在進行數據類型比較時,一定要考慮編碼情況,VARCHAR2 和 CHAR 是字符比較,如果列數據類型為 NUMBER 則 12 > 9,如果是字符比較則 9 > 12 因為字符 9 比字符 1要大

DESCRIBE : 查詢表結構

SQL> describe newspaper;

LIKE 執行模式匹配 : _表示一個字符 %表示任意多個字符

NULL 表示該列是否存在數據,如果沒有數據,就說明該列是 null

IS NULL,IS NOT NULL

IN : 在某幾個指定項中

NOT IN : 不在幾個指定項中

BETWEEN AND : 在指定範圍之間

NOT BETWEEN AND : 不在指定範圍之間

AND : 同事滿足兩邊的條件

OR : 只滿足其中一邊的條件

優先級 : () 優先級最高,乘除次之,加減法最後,AND 的優先級高於 OR

使用 CREATE TABLE 關鍵字創建表

SQL> CREATE TABLE trouble(city VARCHAR2(13) NOT NULL,sample_date DATE NOT NULL,noon NUMBER(3,1),midnight NUMBER(3,1),precipitation NUMBER);

表明和列名必須以由字母、數字和下劃線,長度為1~30個,並且名稱必須唯一,不使用雙引號括起來時不考慮字母大小寫,使用雙引號括起來時就要考慮大小寫,建議不要括起來否則可能會給開發人員和用戶造成麻煩

在設計表時需要考慮字符(CHAR 和 VARCHAR2)的最大寬度,並設置 NUMBER 精度

注 : 1> 使用寬的 VARCHAR2 存儲數據不會浪費空間,但是會對默認的 SQL*Plus 列格式產生影響

2> NUMBER(3,1) 3表示存儲數字位數,1表示小數點右邊的位數 小數部分的長度比較大會進行四捨五入來達到指定精度

定義約束 : 表添加的約束越多那麼維護數據的工作就越少,但更新數據花的時間就越長

1> 候選鍵(condidation key) : 是一列或多列的組合,其唯一地標識表中的一行

SQL> CREATE TABLE trouble(

city VARCHAR2(13) NOT NULL,

sample_date DATE NOT NULL,

noon NUMBER(4,1),

midnight NUMBER(4,1),

precipitation NUMBER,

CONSTRAINT trouble_uq UNIQUE(city,sample_date)

);

創建 UNIQUE 約束時,將創建唯一地索引來強制值得唯一性。在主鍵約束中,主鍵的列中至少有一列必須是 NOT NULL

2> 主鍵(primary key) : 具有特殊性質的候選鍵之一,可以僅有一個主鍵,並且主鍵列不能包含 NULL 值

SQL> CREATE TABLE trouble(

city VARCHAR2(13),

sample_date DATE,

noon NUMBER(4,1),

midnight NUMBER(4,1),

precipitation NUMBER,

CONSTRAINT trouble_pk PRIMARY KEY(city,sample_date)

);

# 對於但主鍵,可以使用如下方式定義

SQL> CREATE TABLE author(

author_name VARCHAR2(50) PRIMARY KEY,

comments VARCHAR2(100)

);

3> 指定索引表空間 : UNIQUE約束和 PRIMARY KEY 約束創建索引,索引默認存儲在表空間中

SQL> CREATE TABLE author2(

author_name VARCHAR2(50),

comments VARCHAR2(100),

CONSTRAINT author2_pk PRIMARY KEY(author_name) USING INDEX TABLESPACE USERS

)

注 : 在大多數默認安裝中,會創建 USERS 表空間,他是默認表空間

<1> 外鍵(foreign key) : 也叫完整性約束,指明外鍵值對應另一個表中主鍵的實際值

SQL> CREATE TABLE bookshelf(

title VARCHAR2(100) PRIMARY KEY,

publisher VARCHAR2(20),

category_Name VARCHAR2(20),

rating VARCHAR2(2),

CONSTRAINT bookshelf_fk FOREIGN KEY(category_Name) FERENCES category(category_name));

<2> CHECK約束 : 指定某個表達式,表達式對於表中的每一行數據都必須始終為真

SQL> CREATE TABLE rating_with_check(

rating NUMBER(1) CHECK(rating<=8),

rating_description VARCHAR2(50)

);

4> 命名約束 : 可以對約束命名,如果約束名使用一種有效的命名模式,能更好地識別和管理約束。約束名應該標識出它所作用的表和它所表示的約束類型。創建時如果沒有指定約束名稱,Oracle 會生成名稱大多以 SYS_C##### 的形式因此最好自己命名

刪除表 : 使用 DROP TABLE table_name 即可

SQL> DROP TABLE trouble;

使用 TRUNCATE 可以高效的刪除表中的所有數據並回收空間,而不從數據庫中刪除刪除表的定義

從 Oracle10g 開始,刪除表仍保留表空間,可以在 "回收站" 中來訪問,如果要從回收站中清除,使用 PURGE 子句

SQL> DROP TABLE trouble PURGE;

如果表已經刪除,可以從 "回收站" 中清除所佔的空間

SQL> PURGE TABLE trouble;

清除 "回收站" 中所有內容

SQL> PURGE RECYCLEBIN;

截斷表

SQL> TRUNCATE TABLE trouble;

更改表

添加或更改列的規則

1> 可隨時增加字符列寬度

2> 可隨時增加 NUMBER 列的數字位數

3> 可隨時增加或減少 NUMBER 列中的小數位數,對於減少的情況需要表為空

如果表中每一行的某一列都為 NULL,可作如下更改

1> 可以更改該列的數據類型

2> 可以減少字符列的寬度

3> 減少 NUMBER 列的數字位數

注 : 添加或更改列,更改後的列的每一行數據必須滿足更改後列的數據限定,否則將會更改

失敗。

歡迎大家留言討論,一起學習一起上岸!!!


分享到:


相關文章: