日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

oracle sql-1,Oracle – Oracle SQL(1)

發布時間:2023/12/10 数据库 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 oracle sql-1,Oracle – Oracle SQL(1) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Oracle?–?Oracle?SQL(1)

1.?簡介

(1)?SQL?:?Structured?Query?Language,結構化查詢語言,專門用于數據存取、數據更新及數據庫管理等操作。

(2)?Oracle?SQL

DDL:?Data?Define?Language

數據定義語言

包括CREATE、ALTER、DROP、TRUNCATE、COMMENT、RENAME等命令

DML:?Data?Manipulate?Language

數據操縱語言

包括SELECT、INSERT、UPDATE、DELETE、MERGE、CALL、EXPLAINPLAN、LOCKTABLE等命令

DQL:Data?Query?Language

數據查詢語言

包括基本查詢、ORDER?BY子句、GROUP?BY子句等

TCL:?Transaction?Control?Language

事務控制語言

包括COMMIT、SAVEPOINT、ROLLBACK、SET?TRANSACTION命令

DCL:?Data?Control?Language

數據控制語言

包括GRANT、REVOKE等命令

2.?SQL基本知識

(1)?SQL中的“鍵”

●?候選碼:CANDIDATE?KEY,在關系模式R(U)中,K為R的一個屬性或者一組屬性,若K能唯一標識一個元組,則K為關系模式R的候選碼;

●?主鍵:PRIMARY?KEY,表中單個屬性或多個屬性組合,其值能唯一地標識表中一行記錄,主鍵是候選碼集合中的一個元素,只能擁有一個主鍵;

●?外鍵:FOREIGN?KEY,關系模式R中屬性或屬性組X并非R的候選碼,但X是另一個關系模式的候選碼,則稱X是R的外部碼,也稱外鍵;

3.?Oracle?SQL

(1)創建表(DDL)

●?語法:

CREATE?TABLEtable_name

(

field_1??field_1_type,

field_2??field_2_type,

……

field_n??field_n-type

);

(2)創建表約束(DDL)

●?注意:在Oracle中default是一個值,而SQL?Server中default是一個約束。大括號表示內容可選。

●?創建主鍵約束

CREATE?TABLEtable_name

(

field_1??field_1_type{CONSTRAINTconstraint_name}?PRIMARY?KEY,

field_2??field_2_type,

……

field_n??field_n-type

);

或者

CREATE?TABLEtable_name

(

field_1??field_1_type,

field_2??field_2_type,

……

field_n??field_n-type

);

ALTER?TABLEtable_nameADD?CONSTRAINTconstraint_namePRIMARY?KEY(field_1);

CREATE?TABLEuser_info

(

user_idVARCHAR2(20)PRIMARY?KEY,

user_passwdVARCHAR2(20),

state_idNUMBER

);

或者

CREATE?TABLEuser_info

(

user_idVARCHAR2(20),

user_passwdVARCHAR2(20),

state_idNUMBER

);

ALTER?TABLEuser_infoADDCONSTRAINTpk_userinfoPRIMARY?KEY(user_id);

●?創建外鍵約束

CREATE?TABLEtable_name

(

field_1??field_1_type,

field_2??field_2_type{CONSTRAINTconstraint_name}?REFERENCESforeign_table_name(field),

……

field_n??field_n-type

);

或者

CREATE?TABLEtable_name

(

field_1??field_1_type,

field_2??field_2_type,

……

field_n??field_n-type

);

ALTER?TABLEtable_nameADD?CONSTRAINTconstraint_nameFOREIGN?KEY(foreign_key_field)REFERENCEforeign_table_name(field);

CREATE?TABLEstate

(

state_idNUMBER?PRIMARY?KEY,

state_nameVARCHAR2(20)

);

CREATE?TABLEuser_info

(

user_idVARCHAR2(20)?PRIMARY?KEY,

user_passwdVARCHAR2(20),

state_idNUMBERCONSTRAINTfk_userinfo_stateREFERENCESstate(state_id)

);

或者

CREATE?TABLEuser_info

(

user_idVARCHAR2(20)?PRIMARY?KEY,

user_passwdVARCHAR2(20),

state_idNUMBER

);

ALTER?TABLEuser_infoADD?CONSTRAINTfk_userinfo_stateFOREIGN?KEY(state_id)REFERENCESstate(state_id);

●?創建非空約束

CREATE?TABLEtable_name

(

field_1??field_1_type,

field_2??field_2_type{CONSTRAINTconstraint_name}NOT?NULL,

……

field_n??field_n-type

);

或者

CREATE?TABLEtable_name

(

field_1??field_1_type,

field_2??field_2_typeNOT?NULL,

……

field_n??field_n-type

);

或者

CREATE?TABLEtable_name

(

field_1??field_1_type,

field_2??field_2_type,

……

field_n??field_n-type

);

ALTER?TABLEtable_nameMODIFY?(field_nameNOT?NULL);

CREATE?TABLEuser_info

(

user_idVARCHAR2(20),

user_passwdvarchar2(20)CONSTRAINTnotnull_userpasswdNOT?NULL,

state_idNUMBER

);

或者

CREATE?TABLEuser_info

(

user_idVARCHAR2(20),

user_passwdvarchar2(20),

state_idNUMBER

);

ALTER?TABLEuser_infoMODIFY(user_passwdNOT?NULL);

●?創建唯一約束

CREATE?TABLEtable_name

(

field_1??field_1_type,

field_2??field_2_type{CONSTRAINTconstraint_name}UNIQUE,

……

field_n??field_n-type

);

或者

CREATE?TABLEtable_name

(

field_1??field_1_type,

field_2??field_2_type,

……

field_n??field_n-type

);

ALTER?TABLEtable_nameADD?CONSTRAINTconstraint_nameUNIQUE(field_name);

CREATE?TABLEdog

(

dog_idNUMBER,

dog_nameVARCHAR2(20)?CONSTRAINTun_dognameUNIQUE

);

或者

CREATE?TABLEdog

(

dog_idNUMBER,

dog_nameVARCHAR2(20)

);

ALTER?TABLEdogADD?CONSTRAINTun_dognameUNIQUE(dog_name);

●?創建檢查約束

CREATE?TABLEtable_name

(

field_1??field_1_type,

field_2??field_2_type{CONSTRAINTconstraint_name}?CHECK(judge_condition),

……

field_n??field_n-type

);

或者

CREATE?TABLEtable_name

(

field_1??field_1_type,

field_2??field_2_type,

……

field_n??field_n-type

);

ALTER?TABLEtable_nameADD?CONSTRAINTconstraint_nameCHECK(judge_condition);

CREATE?TABLEpig

(

pig_idNUMBER?CONSTRAINTck_pigidCHECK(pig_id>=0),

pig_nameVARCHAR2(20)

);

或者

CREATE?TABLEpig

(

pig_idNUMBER,

pig_nameVARCHAR2(20)

);

ALTER?TABLEpigADD?CONSTRAINTck_pigidCHECK(pig_id>=0);

(3)?刪除表(DDL)

DROP?TABLEtable_nameCASCADE?CONSTRAINTS

說明:如果表t1的外鍵在表t2中,則刪除t2的時候使用DROP?TABLE?t2

則系統提示:ORA-02449:表中的唯一/主鍵被外鍵引用。若使用DROP?TABLE?t2?CASCADE?CONSTRAINTS,則刪除t1的外鍵約束,然后刪除t2表;注意此命令不能回滾。

(4)?刪除表約束

ALTER?TABLEtable_nameDROP?CONSTRAINTconstraint_name

(5)?查看表結構

●?sqlplus:DESCtable_name

●?plsql?dev:All?objectsèTablesètable_nameè右鍵查看

(6)修改表

●?表改名:ALTER?TABLEsrc_table_nameRENAME?TOdst_table_name

●?刪除列:ALTER?TABLEtable_nameDROP?COLUMNcolumn_name;

●?添加列:

ALTER?TABLEtable_nameADD

(

field_1??field_1_type?field_1_constraint,

field_2??field_2_type?field_1_constraint,

……

field_n??field_n-type?field_1_constraint

);

●?修改列:類型、大小、默認值、默認空約束

ALTER?TABLEtable_nameMODIFY

(

field_1??field_1_type?field_1_constraint,

field_2??field_2_type?field_1_constraint,

……

field_n??field_n-type?field_1_constraint

);

●?修改列:添加約束和刪除約束

參見上文。

●?修改列:關閉約束和打開約束

不想刪除約束但又不想他現在其作用,這時可以采用DISABLE來完成此工作;我們還可以采用CASCADE關鍵字來把相互引用的約束一起級聯關閉;可以通過ENABLE關鍵點來開啟約束,使得約束有效

ALTER?TABLEtable_nameDISABLECONSTRAINTconstraint_nameCASCADE;

ALTER?TABLEtable_nameENABLECONSTRAINTconstraint_nameCASCADE;

●?修改列:列名修改

ALTER?TABLEtable_nameRENAME?COLUMNsrc_column_nameTOdst_column_name;

(7)?給表加注釋

●?給表加注釋

COMMENT?ON?TABLEtable_nameIS?‘comment_string’

●?給列加注釋

COMMENT?ON?COLUMNtable_name.column_nameIS‘comment_string’;

(8)TRANCATE表

TRUNCATE?TABLEtable_name;

●TRANCATE和DELETE只刪除數據不刪除表的結構(定義)對快速、無LOG記錄的方法,它等同于不含WHERE子句的DELETE語句,至少表面上看來功能上相同,但TRANCATETABLE的速度更快,并且使用更少的SYSTEM?RESOURCE和TRANCATIONLOG?RESOURCE。

●TRANCATE語句所使用的LOG?TABLESPACE較少。DELETE語句每刪除一行RECORD,都需要在LOG中為每一個所刪除的行進行記錄,但是TRANCATE是通過釋放用于STORE?DATA的數據PAGE來刪除數據。

●TRANCATE語句所使用的LOCK較少。DELETE語句始終鎖定TABLE中的各行,而TRANCATE始終鎖定TABLE本身和PAGE本身,不是TABLE中的各行。

●TRANCATE語句通常不會在所刪除的TABLE中留有空頁。DELETE語句執行后,TABLE中仍然會保留空頁,而且必須至少使用一個排他表鎖,LCK_M_X,才能釋放堆中的空表,否則執行完DELETE操作后,表或堆中會包含相當多的空頁或空表,而且對于INDEX,DELETE操作同樣會留下一些空頁。而TRANCATE操作后,只是會在DB而不是TABLE中保留一些相關的信息。

●TRANCATE語句不可回滾、觸發器中沒有TRUNCATE,即這個語句無法觸發任何操作

●TRANCATE和DELETE只刪除數據不刪除表的結構(定義),DROP語句將刪除表的結構被依賴的約束(CONSTRAINT),觸發器(TRIGGER),索引(INDEX);依賴于該表的存儲過程/函數將保留,但是變為INVALID狀態

總結

以上是生活随笔為你收集整理的oracle sql-1,Oracle – Oracle SQL(1)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。