第07章 數(shù)據(jù)庫對(duì)象管理VIP_第1頁
第07章 數(shù)據(jù)庫對(duì)象管理VIP_第2頁
第07章 數(shù)據(jù)庫對(duì)象管理VIP_第3頁
第07章 數(shù)據(jù)庫對(duì)象管理VIP_第4頁
第07章 數(shù)據(jù)庫對(duì)象管理VIP_第5頁
已閱讀5頁,還剩159頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

ORACLE,

第7章數(shù)據(jù)庫對(duì)象管理

本章主要介紹Oracle數(shù)據(jù)庫中表、索引、視圖和序列的管理方法

第7章數(shù)據(jù)庫對(duì)象管理ORACLe

年骨文

本章學(xué)習(xí)目標(biāo)ORACLE,

?掌握表的創(chuàng)建、修改和刪除方法;

?掌握對(duì)表中數(shù)據(jù)的插入、更新和刪除的方法;

?掌握使用select語句進(jìn)行數(shù)據(jù)查詢的方法;

?掌握視圖的概念及視圖的創(chuàng)建、修改和刪除方法;

?理解索引的概念,掌握如何創(chuàng)建、管理和刪除索引;

?掌握創(chuàng)建、修改、刪除和使用序列的方法;

ORACLW]

第7章數(shù)據(jù)庫對(duì)象管理

年骨文

本章主要內(nèi)容ORACLE,

?7.1表管理

?7.2數(shù)據(jù)查詢

?7.3視圖管理

?7.4索引管理

?7.5序列管理

第7章數(shù)據(jù)庫對(duì)象管理ORACLe

年骨文

7.1表管理ORACLE,

?創(chuàng)建表

?修改表

?刪除表

-插入數(shù)據(jù)

?修改數(shù)據(jù)

?刪除數(shù)據(jù)

第7章數(shù)據(jù)庫對(duì)象管理ORACLe

年骨文

創(chuàng)建表ORACLE,

?表Users的結(jié)構(gòu)

編號(hào)字段名稱數(shù)據(jù)結(jié)構(gòu)說明

1UseridNUMBER用戶編號(hào),主鍵

2UserNameVARCHAR240用戶名,非空

3UserTypeNUMBER1用戶類型(1表示管理用戶,2

表示普通用戶)

4UserPwdVARCHAR240密碼

第7章數(shù)據(jù)庫對(duì)象管理ORACLe

年骨文

創(chuàng)建表ORACLE,

管理頁面

OracleEnterprisel&nager(STS)-數(shù)據(jù)庫實(shí)例:orel-licrosofIInternetExplorer____jgj兇

文件⑥編輯?)查看9收藏?工具①幫助團(tuán)I價(jià)1

J后退?,?兇£;",妹「收?夾口」??■也?—晨0

地址9)(立]http://oracleserver:1158/em/console/databaoe/instance/site?iap?even/=doLoaMt&rget=orcl&type=oracledatabase&p&geN,1^3轉(zhuǎn)到施接》

數(shù)據(jù)庫實(shí)例orcl

甌管理:蚯

“管理”選項(xiàng)卡上顯示的鏈接可使您管理數(shù)據(jù)庫對(duì)象和在Oracle數(shù)據(jù)庫內(nèi)啟動(dòng)數(shù)據(jù)庫操作?!熬S護(hù)”選項(xiàng)卡上顯示的鏈接提供可控制Oracle數(shù)據(jù)庫

之間或Oracle數(shù)據(jù)庫外部的數(shù)據(jù)濠的功能。

數(shù)據(jù)庫管理

存儲(chǔ)_____數(shù)據(jù)庫配置數(shù)據(jù)庫調(diào)度程序

控制文件

Sw-&

臨時(shí)表至間組所有初始化參數(shù)

數(shù)據(jù)文件-數(shù)據(jù)庫功能使用情況

志姐

歸檔日惠

統(tǒng)計(jì)信息管理更改數(shù)據(jù)庫資源管理器

自動(dòng)工作集資料檔案庫移植到ASM監(jiān)視器

曾應(yīng)優(yōu)訕箱屋端的I惠本地管理表空間使用者組

使后考組映行

策略

策略庫

違反瓢

方案

點(diǎn)擊數(shù)據(jù)庫對(duì)象程序XML數(shù)據(jù)庫

這里訪問控制列表

函數(shù)XML萬案

0?Intern.t/

第7章數(shù)據(jù)庫對(duì)象管理ORACLe

年骨文

創(chuàng)建表ORACLE,

-表管理頁面

第7章數(shù)據(jù)庫對(duì)象管理ORACLe

年骨文

創(chuàng)建表ORACLE,

?選擇方案

點(diǎn)擊這里

確定選擇

搜索

方案

方案

列表

第7章數(shù)據(jù)庫對(duì)象管理ORACLe

年骨文

創(chuàng)建表ORACLE,

選擇表組織

第7章數(shù)據(jù)庫對(duì)象管理ORACLe

年骨文

ORACLE,

點(diǎn)擊

這里保存

輸入

列定義

第7章數(shù)據(jù)庫對(duì)象管理ORACLe

年骨文

數(shù)據(jù)類型ORACLE,

char用于描述定長的字符型數(shù)據(jù),長度<=2000字節(jié)

varchar2用于描述變長的字符型數(shù)據(jù),長度<=4000字節(jié)

nchar用來存儲(chǔ)Unicode字符集的定長字符型數(shù)據(jù),長度<=1000字節(jié)

nvarchar2用來存儲(chǔ)Unicode字符集的變長字符型數(shù)據(jù),長度<=1000字節(jié)

number用來存儲(chǔ)整型或者浮點(diǎn)型數(shù)值

date用來存儲(chǔ)日期數(shù)據(jù)

long用來存儲(chǔ)最大長度為2GB的變長字符數(shù)據(jù)

raw用來存儲(chǔ)非結(jié)構(gòu)化數(shù)據(jù)的變長字符數(shù)據(jù),長度<=2000字節(jié)

longraw用來存儲(chǔ)非結(jié)構(gòu)化數(shù)據(jù)的變長字符數(shù)據(jù),長度<=2GB

rowid用來存儲(chǔ)表中列的物理地址的二進(jìn)制數(shù)據(jù),占用固定的10個(gè)字節(jié)

blob用來存儲(chǔ)多達(dá)4GB的非結(jié)構(gòu)化的二進(jìn)制數(shù)據(jù)

clob用來存儲(chǔ)多達(dá)4GB的字符數(shù)據(jù)

nclob用來存儲(chǔ)多達(dá)4GB的Unicode字符數(shù)據(jù)

Bfile用來把非結(jié)構(gòu)化的二進(jìn)制數(shù)據(jù)存儲(chǔ)在數(shù)據(jù)庫以外的操作系統(tǒng)文件中

urowid用來存儲(chǔ)表示任何類型列地址的二進(jìn)制數(shù)據(jù)

float用來存儲(chǔ)浮點(diǎn)數(shù)

ORACLe

第7章數(shù)據(jù)庫對(duì)象管理

年骨文

創(chuàng)建表ORACLE,

.?數(shù)據(jù)類型

-NUMBER可以用來表示所有的數(shù)值數(shù)據(jù):

fieldnameNUMBER(precision,scale);

-VARCHAR2用來表示變長的字符串?dāng)?shù)據(jù)類型:

fieldnameVARCHAR2(max_length);

-CHAR保存固定長度字符串,最大長度為2KB。

-DATE保存固定長度的日期數(shù)據(jù)。

-BLOB保存二進(jìn)制大對(duì)象,通常用來保存圖像和文檔等二

進(jìn)制數(shù)據(jù)。

-CLOB保存字符型大對(duì)象。varchar2數(shù)據(jù)類型最多只能保存

4000個(gè)字符,如果要保存的字符串?dāng)?shù)據(jù)超過此范圍,應(yīng)使

用dob數(shù)據(jù)類型。

第7章數(shù)據(jù)庫對(duì)象管理ORACLe

年骨文

創(chuàng)建表ORACLE,

CREATETABLE語句的基本使用方法如下所示:

Createtable[schema.]table_name

({columndatatype[default_expression][column_constraint]

[table_constraint]},..)

[tablespacetablespace_name]

【例】創(chuàng)建表Users,SQL語句如下:

CREATETABLEUsers

(UseridNumberPrimaryKey,

UserNameVarchar2(40)NOTNULL,

UserTypeNumber(1),

編號(hào)字段名稱數(shù)據(jù)結(jié)構(gòu)

UserPwdVarchar2(40)

1UseridNUMBER

);2UserNameVARCHAR240

3UserTypeNUMBER1

4UserPwdVARCHAR240

第7章數(shù)據(jù)庫對(duì)象管理ORACLe

年骨文

創(chuàng)建表一數(shù)據(jù)完整性O(shè)RACLE,

數(shù)據(jù)完整性是關(guān)系數(shù)據(jù)庫模型的基本原則,是用戶在表上定義的一

系列規(guī)則或約束條件,以及在表之間定義的一系列相互關(guān)系。

數(shù)據(jù)完整性的作用:強(qiáng)制要求數(shù)據(jù)庫中只能接受正確的、合理的數(shù)

據(jù),防止錯(cuò)誤的或無效的數(shù)據(jù)被插入到表中。

7955ZHANGMANAGER78393000

7369SMITHCLERK790217-12月-8080020

7499ALLENSALESMAN76982。-2月-81160030030

7521WARDSALESMAN769822-2月-81125050030

ORACLW]

第7章數(shù)據(jù)庫對(duì)象管理

年骨文

創(chuàng)建表一數(shù)據(jù)完整性O(shè)RACLE,

數(shù)據(jù)完整性分為三類:

?實(shí)體完整性

?參照完整性

?用戶定義的完整性

實(shí)體完整性:

規(guī)則1:主鍵的各個(gè)屬性都不能為空值。

參照完整性:

規(guī)則2:外鍵或者取空值,或者等于被參照關(guān)系中的主鍵的某個(gè)值。

用戶定義的完整性:

規(guī)則3:屬性(或?qū)傩越M)的取值應(yīng)當(dāng)滿足用戶定義的約束條件。

第7章數(shù)據(jù)庫對(duì)象管理ORACLe

年骨文

創(chuàng)建表一數(shù)據(jù)完整性的定義ORACl

Oracle通過為表中的列定義各種約束來實(shí)現(xiàn)數(shù)據(jù)完整性。

約束條件

-NotNuU:防止NULL值進(jìn)入到指定的列。

-Unique:保證在指定的各列中沒有重復(fù)的值。

-Check:檢查在約束中指定的條件是否得到了滿足。

—Primarykey:用來惟一地標(biāo)識(shí)出表的每一行,并且防

止出現(xiàn)NULL值。一個(gè)表只能有一個(gè)主鍵約束。

-Foreignkey:通過使用公共列在表之間建立一種父子

關(guān)系。在表上定義的外鍵可以指向其他表的主鍵或者

惟一鍵。

?約束級(jí)別

-列級(jí)約束

-表級(jí)約束

第7章數(shù)據(jù)庫對(duì)象管理ORACLe

年骨文

如果要在自己的方案中創(chuàng)建表,要求用戶必須具有

CREATETABLE系統(tǒng)權(quán)限。如果要在其他方案中建表,

則要求用戶必須具有CREATEANYTABLE系統(tǒng)權(quán)限。

Createtable語法4口下:

Createtable[schema.]table_name

({columndatatype[default_expression]

[column_constraint]|[table_constraint]}?..)

[tablespacetablespace_name]

第7章數(shù)據(jù)庫對(duì)象管理ORACLe

年骨文

創(chuàng)建表ORACLE,

注意事項(xiàng):

?如果不指定約束名Oracleserver自動(dòng)按照

SYS_Cn的格式指定約束名

?在什么時(shí)候創(chuàng)建約束:

-建表的同時(shí)

一建表之后

?可以在表級(jí)或列級(jí)定義約束

?可以通過數(shù)據(jù)字典視圖查看約束

第7章數(shù)據(jù)庫對(duì)象管理ORACLe

年骨文

創(chuàng)建表一約束的定義格式ORACLE,

NOTNULL的定義格式:

CREATETABLEemployees(

employeeidNUMBER⑹,

lastnameVARCHAR2(25)NOTNULL,

salaryNUMBER(8,2),

commission_pctNUMBER(2,2),

hire_dateDATE

CONSTRAINTemp_hire_date_nn用戶命名

NOTNULL,

第7章數(shù)據(jù)庫對(duì)象管理ORACLe

年骨文

創(chuàng)建表一約束的定義格式ORACLE,

UNIQUE約束的定義格式:

CREATETABLEemployees(

employee_idNUMBER(6),

last_nameVARCHAR2(25)NOTNULL,

emailVARCHAR2(25),

salaryNUMBER(8,2),

commission_pctNUMBER(2,2)UNIQUE,

hiredateDATENOTNULL,

CONSTRAINTempemailukUNIQUE(email));

第7章數(shù)據(jù)庫對(duì)象管理ORACLe

年骨文

創(chuàng)建表一約束的定義格式ORACLE,

?主鍵的定義格式:

Createtablestudents(

Snovarchar2(10)primarykey,

Snamevarchar2(8)notnull,

Ssexvarchar2(2)notnullcheck(Ssex='F'orSsex='M)

Sagenumber,

Sdeptvarchar2(15)default'Computer');

ConstraintPK_Snoprimarykey(Sno)

第7章數(shù)據(jù)庫對(duì)象管理ORACLe

年骨文

創(chuàng)建表一約束的定義格式ORACl

外鍵的定義格式:

CREATETABLEemployees(

employee_idNUMBER(6),

last_name-VARCHAR2(25)NOTNULL,

-emai1VARCHAR2(25),

salaryNUMBER(8,2),

commission_pctNUMBER(2,2),

hire_dateDATENOTNULL,

???

department_idNUMBER(4),

CONSTRAINTemp_dept_fkFOREIGNKEY(department_id)

REFERENCESdepartments(department_id),

CONSTRAINTempemailukUNIQUE(email));

第7章數(shù)據(jù)庫對(duì)象管理ORACLe

年骨文

創(chuàng)建表一約束的定義格式ORACl

CHECK約束的定義格式:

Createtablestudents(

Snovarchar2(10)primarykey,

Snamevarchar2(8)notnull,

Ssexvarchar2(2)notnulllcheck(Ssex='F'orSsex^M'),

Sagenumber,

Sdeptvarchar2(15)default'Computer');

第7章數(shù)據(jù)庫對(duì)象管理ORACLe

年骨文

列名,說明,數(shù)據(jù)類型,:約束、

—Sno<學(xué)號(hào),字符串,長度為10.主鍵,

Sname.姓名.字符串,長度為&非空值.Students

Ssex#性別.字符串,長度為2,非空值,取F或M2

Sage,年齡」整數(shù),空直

SdepL所在系字符串,長度為15.默認(rèn)為'Computer'

列名,說明。數(shù)據(jù)類型.約束說明.

-Cno-課程號(hào),字符串,長度為6,主鍵,Courses

Cname-課程名」字符串,長度為20.非空值?

PreCno。先修課程號(hào).字符串,長度為6允許為空值"

Credits-學(xué)分.整數(shù),允許為空值.-

列名說明,數(shù)據(jù)類型,約束說明,

…吟

學(xué)號(hào).字符串,長度為10外鍵,參照Students的主鍵.

—C*課程號(hào),字符串,長度為6.外鍵,參照Courses的主鍵,Enrollment

Grade*>成績?整數(shù),允許為空值,

主鍵為:(Sno,Cno)。

創(chuàng)建表—語句半例ORACLE,

在數(shù)據(jù)庫StuDB中定義一個(gè)表,表名為Students,表中

各列的要求見表。

列名,說明,數(shù)據(jù)類型:狗束

Sno<字號(hào),字符串,長度為10.主鑲

Sname^姓名,字符串,長度為8」非空值.,

Ssex,性刖字符串,長度為2.非空值,取下或加。

Sage-年齡,整數(shù).空值?

Sdept^所在系*字符串,長度為15.,默認(rèn)為'Computer-

第7章數(shù)據(jù)庫對(duì)象管理ORACLe

年骨文

創(chuàng)建K—語句卷例ORACLE,

CreatetableStudents(

Snovarchar2(10)primarykey,

Snamevarchar2(8)notnull,

Ssexvarchar2(2)notnullcheck(Ssex=,F,or

',

Ssex=M)/

Sagenumber,

Sdeptvarchar2(15)default'Computer');

第7章數(shù)據(jù)庫對(duì)象管理ORACLe

年骨文

定義約束ORACLE,

以在CREATETABLE語句中定義約束,也可以在創(chuàng)一

建表之后使用ALTERTABLE命令添加約束、修改約

乘花刪除約束。

列級(jí)定義

列級(jí)定義是指在定義列的同時(shí)定義約束,適合在單個(gè)

歹j上定義約策。

Column[CONSTRAINTconstraint_name]constraint_type

[condition]

表級(jí)定義

表級(jí)定義是指定義了所有列后再定義的約束,適合在

多個(gè)列上定義約束。

[CONSTRAINTconstraint_name]constraint_type

([coll?col2/??]|[condition])

第7章數(shù)據(jù)庫對(duì)象管理ORACLe

年骨文

至ORACLE,

X

Createtablestudentsf列級(jí)約束

Snovarchar2(10)primarykey,

Snamevarchar2(8)ndtnull,""

Ssexvarchar2(2)nullcheck(SsexrFor

',

Ssex=M)/

Sagenumber,

Sdeptvarchar2(15)default'Computer');

第7章數(shù)據(jù)庫對(duì)象管理ORACLe

年骨文

ORACLE,

Createtablestudents(

Snovarchar2(10),

Snamevarchar2(8)notnull,

Ssexvarchar2(2)notnull,

Sagenumber,

Sdeptvarchar2(15)default'Computer',

constraintPK_SNOprimarykey(Sno),

constraintCHK_SSEXcheck(Ssexin('F'JM'))

\)----表------級(jí)------約------束

第7章數(shù)據(jù)庫對(duì)象管理ORACLe

年骨文

列名,說明,數(shù)據(jù)類型,:約束、

—Sno<學(xué)號(hào),字符串,長度為10.主鍵,

Sname.姓名.字符串,長度為&非空值.Students

Ssex#性別.字符串,長度為2,非空值,取F或M2

Sage,年齡」整數(shù),空直

SdepL所在系字符串,長度為15.默認(rèn)為'Computer'

列名,說明。數(shù)據(jù)類型.約束說明.

-Cno-課程號(hào),字符串,長度為6,主鍵,Courses

Cname-課程名」字符串,長度為20.非空值?

PreCno。先修課程號(hào).字符串,長度為6允許為空值"

Credits-學(xué)分.整數(shù),允許為空值.-

列名說明,數(shù)據(jù)類型,約束說明,

…吟

學(xué)號(hào).字符串,長度為10外鍵,參照Students的主鍵.

—C*課程號(hào),字符串,長度為6.外鍵,參照Courses的主鍵,Enrollment

Grade*>成績?整數(shù),允許為空值,

主鍵為:(Sno,Cno)。

練習(xí)ORACLE,

【練習(xí)】請(qǐng)寫出創(chuàng)建表Courses和Enrollment的SQL命令。

CREATETABLECOURSES(

CnoVARCHAR2(6)PRIMARYKEY,

CnameVARCHAR2(20)NOTNULL,

PreCnoVARCHAR2(6),

CreditsNUMBER

);

CREATETABLEENROLLMENT(

SnoVARCHAR2(10),

CnoVARCHAR2(6),

GradeNUMBER,

CONSTRAINTPK_SCNOPRIMARYKEY(SNO,CNO),

CONSTRAINTFK_SNOFOREIGNKEY(SNO)REFERENCESSTUDENTS(SNO),

CONSTRAINTFK_CNOFOREIGNKEY(CNO)REFERENCESCOURSES(CNO)

);

第7章數(shù)據(jù)庫對(duì)象管理ORACLe

年骨文

NOTNULL約束ORACLE,

保證列值不能為空:

|JOBJD

EMPLOYEE』)|LAST』AMEEMAILPHONE一NUMBERHIRE_DATESALARYDEPARTMENT」。|

100King|SKING515.123.456717-JUN-87ADORES24000_90

515.123,4568|

101Kochhar|NKOCHHAR21-SEP-89AD_VP1/00090

_______10_21_De_H_aan__]LDEHAAN515:123,456913-JAN-93AD_VP1700090

103|Humid1AHUNOLD590.423.456703-JAN-90吁ROG900060

FT_PROG_]

1■■104ErnstBERNST590.423.456821.MAY-916000________60_

NOTNULL約束NOTNULL

約束

ORACLe

第7章數(shù)據(jù)庫對(duì)象管理

年骨文

ORACLE,

只能定義在列級(jí):

CREATETABLEemployees(

employeeidNUMBER⑹,

lastnameVARCHAR2(25)NOTNULL,

salaryNUMBER(8,2),

commission_pctNUMBER(2,2),

hire_dateDATE

CONSTRAINTemp_hire_date_nn用戶命名

NOTNULL,

第7章數(shù)據(jù)庫對(duì)象管理ORACLe

年骨文

UNIQUE約束ORACLE,

UNIQUE約束

EMPLOYEES

EMPLOYEEJDLAST_NAMEEMAIL

100KingSKING

101KochharNKOCHHAR

102DeHaanLDEHAAN

103HunoldAHUNOLD

104ErnstBERNST

INSERTINTO

208SmithJSMITH允許

209SmithJSMITH,允許:已經(jīng)存

第7章數(shù)據(jù)庫對(duì)象管理ORACLe

年骨文

ORACLE,

可以定義在表級(jí)或列級(jí):

CREATETABLEemployees(

employee_idNUMBER(6),

last_nameVARCHAR2(25)NOTNULL,

emailVARCHAR2(25),

salaryNUMBER(8,2),

commission__pctNUMBER(2,2),

hiredateDATENOTNULL,

CONSTRAINTempemailukUNIQUE(email));

第7章數(shù)據(jù)庫對(duì)象管理ORACLe

年骨文

PRIMARYKEY約束ORACLE,

DEPARTMENTS

PRIMARYKEY

DEPARTMENTJDDEPARTMENT_NAMEMANAGER」。LOCATIONID

1I

10Administration2001700!

20Marketing2011800

50Shipping1241500

60IT1031400

80Sales1492500

不允許INSERTINTO

(空值)

PublicAccounting1400

50Finance1241500

第7章數(shù)據(jù)庫對(duì)象管理ORACLe

年骨文

FOREIGNKEY約束ORACLE,

DEPARTMENTS

DEPARTMENT_IDDEPARTMENT_NAMEMANAGER_IDLOCATIONJD

10Administration2001700

20Marketing2011800

50Shipping1241500

PRIMARY60n-1031400

KEY80Sales1492500

■■■

EMPLOYEES

EMPLOYEEJDLAST_NAMEDEPARTMENTJDFOREIGN

100King90KEY

101Kochhar90

102DeHaan90

103Hunold60

104Ernst60

107Lorentz60

■■■

INSERTINTO不允許(9不存

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論