用alter語句進(jìn)行修改。
創(chuàng)新互聯(lián)是專業(yè)的潛江網(wǎng)站建設(shè)公司,潛江接單;提供成都網(wǎng)站設(shè)計、網(wǎng)站建設(shè)、外貿(mào)網(wǎng)站建設(shè),網(wǎng)頁設(shè)計,網(wǎng)站設(shè)計,建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行潛江網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊,希望更多企業(yè)前來合作!
語法:
1
alter table 表名 modify 字段名 字段類型(字段長度);
說明:如果是date等沒有長度的類型,字段長度部分可以省略。
如:目前test表屬性如下
要將name列的字段類型改為date類型,可用如下語句:
1
alter table test modify name date;
此時可見name列的類型已經(jīng)更新成功。
注意事項(xiàng):
如果表中有數(shù)據(jù)盡量不要使用此語句,會造成數(shù)據(jù)丟失,應(yīng)在備份的情況下進(jìn)行修改。
子查詢目標(biāo)
子查詢是一種把查詢的結(jié)果作為參數(shù)返回給另一個查詢的一種查詢
子查詢可以讓你將多個查詢綁定在一起
嵌套子查詢
多層子查詢
相關(guān)子查詢
可接受外部的引用
exists/any/all
any:與子查詢中的每一行與主查詢進(jìn)行比較 并對子查詢中的每一行返回一個true值
some 結(jié)果與any一樣
all 子查詢結(jié)果都滿足條件 才會返回true
DML
數(shù)據(jù)庫插入
insert value
insert select
update update table set col=value
delete
DDL
創(chuàng)建和操作表
create
存儲參數(shù) storage(initial size next size minextents value pctincrease value)初始分配空間 追加的長度 最小追加長度 每次追加的百分比或進(jìn)行下一次追加
用已存在的表創(chuàng)建新表
create table new_t(num name amount) as(select * from old_t where amount )
alter
加入一列到已經(jīng)存在的表中
修改已經(jīng)存在的表中的某一列
ALTER TABLE BILLS MODIFY NAME CHAR( );將表中某字段改為長度 個字符
ALTER TABLE NEW_BILLS ADD MENTS CHAR( );向表中加一列
alter不能用于對一個數(shù)據(jù)庫增加或刪除字段 但可以將某列由not null改為null
drop
drop table table_name;
創(chuàng)建視圖和索引
視圖 常被稱為虛表 create view 視圖是一個數(shù)據(jù)庫對象 他允許用戶從一個表或一組表中建立一個 虛表 它本身沒有數(shù)據(jù) 僅僅是一條查詢語句 它可以方便的在各個表中進(jìn)行聯(lián)合查詢 這對用戶來說是很方便的 其次 可以增加安全性 屏蔽一些不想讓無權(quán)限的用戶看一些表中的數(shù)據(jù)即隱藏了基本表 這同時也可以隱藏著其中的復(fù)雜性 有時更改起來也很方便而不必涉及到應(yīng)用程序 如一個表中有 列數(shù)據(jù) 我只想讓其他用戶看到 列 這時候視圖就會顯得十分方便 如表school 有ID name lesson三項(xiàng) 我只需要顯示其中 項(xiàng) 實(shí)例如下
子查詢目標(biāo) 子查詢是一種把查詢的結(jié)果作為參數(shù)返回給另一個查詢的一種查詢子查詢可以讓你將多個查詢綁定在一起嵌套子查詢多層子查詢相關(guān)子查詢可接受外部的引用exists/any/allany:與子查詢中的每一行與主查詢進(jìn)行比較 并對子查詢中的每一行返回一個true值some 結(jié)果與any一樣all 子查詢結(jié)果都滿足條件 才會返回true
DML 數(shù)據(jù)庫插入 insert valueinsert selectupdate update table set col=valuedelete
DDL 創(chuàng)建和操作表create存儲參數(shù) storage(initial size next size minextents value pctincrease value)初始分配空間 追加的長度 最小追加長度 每次追加的百分比或進(jìn)行下一次追加用已存在的表創(chuàng)建新表 create table new_t(num name amount) as(select * from old_t where amount )alter 加入一列到已經(jīng)存在的表中 修改已經(jīng)存在的表中的某一列ALTER TABLE BILLS MODIFY NAME CHAR( );將表中某字段改為長度 個字符ALTER TABLE NEW_BILLS ADD MENTS CHAR( );向表中加一列alter不能用于對一個 數(shù)據(jù)庫 增加或刪除字段 但可以將某列由not null改為nulldropdrop table table_name;
創(chuàng)建視圖和索引視圖 常被稱為虛表 create view 視圖是一個數(shù)據(jù)庫對象 他允許用戶從一個表或一組表中建立一個 虛表 它本身沒有數(shù)據(jù) 僅僅是一條查詢語句 它可以方便的在各個表中進(jìn)行聯(lián)合查詢 這對用戶來說是很方便的 其次 可以增加安全性 屏蔽一些不想讓無權(quán)限的用戶看一些表中的數(shù)據(jù)即隱藏了基本表 這同時也可以隱藏著其中的復(fù)雜性 有時更改起來也很方便而不必涉及到應(yīng)用程序 如一個表中有 列數(shù)據(jù) 我只想讓其他用戶看到 列 這時候視圖就會顯得十分方便 如表school 有ID name lesson三項(xiàng) 我只需要顯示其中 項(xiàng) 實(shí)例如下
所以在適當(dāng)?shù)臅r候 十分有必要在眾多表中建立視圖
索引 索引是與磁盤上數(shù)據(jù)的存儲方式不同的另外一組數(shù)據(jù)的方法 索引的特例是表中記錄一句其在磁盤上的存儲位置顯示 索引可以在表內(nèi)創(chuàng)建一個列或列的組合 通過對正確的 特定的兩個表的歸并字段進(jìn)行索引可以獲得明顯的好處 create index
ps 視圖和索引是兩個完全不同的對象 但有一點(diǎn)是相同的 它們都與一個表或數(shù)據(jù)庫相關(guān)聯(lián) 盡管每一個對象只能與一個特定的表相關(guān)聯(lián) 但它們還是通過對數(shù)據(jù)的預(yù)排序和預(yù)定義顯著地提高了表的工作性能
使用視圖 create view view_name(col col ……) as select table_name(col col ……) from table_name;
select規(guī)則 不能使用union 不能使用order by 但使用group by有其相同功能
DML的規(guī)則 對于多表視圖不能使用delete
除非非空列都出現(xiàn)在視圖中 否則不能使用insert
對于一個歸并(merger)的表插入或更新 所有被更新的記錄必須屬于同一個物理表
如果創(chuàng)建視圖時使用dintinct子句 就不能插入或更新這個視圖
不能更新視圖中????? 的虛擬列(它是用計算字段得到的)
刪除視圖:drop view view_name;
使用索引
索引可以讓存儲于磁盤上的數(shù)據(jù)進(jìn)行重新排序
使用索引的原因 在使用unique關(guān)鍵字時前執(zhí)行的保證數(shù)據(jù)的完整性
可以容易的用索引字段或其他字段進(jìn)行排序
提高查詢執(zhí)行速度
索引的概念
兩種方法從數(shù)據(jù)庫中獲得數(shù)據(jù) 順序訪問方式 需要sql檢查每一個記錄以找到與之匹配的 此法效率很低 但它是使記錄準(zhǔn)確定位的唯一方法 ? 使用索引的的直接訪問方式 sql采用樹形結(jié)構(gòu)來存儲和返回所以數(shù)據(jù) 用以指示的數(shù)據(jù)存儲在樹的最末端(也就是葉子) 它們被稱為結(jié)點(diǎn)(也可以叫葉 子) 每個結(jié)點(diǎn)中有一個指向其他結(jié)點(diǎn)的指針 結(jié)點(diǎn)左邊的值只是它的雙親結(jié)點(diǎn) 結(jié)點(diǎn)右邊的值則是孩子結(jié)點(diǎn)或葉子 sql將從根結(jié)點(diǎn)開始找到所需的數(shù)據(jù)
ps 當(dāng)查詢沒有使用索引的表時 查詢通常是全表搜索后才會得到結(jié)果 全表搜索會讓數(shù)據(jù)庫服務(wù)程序遍歷過表中的所有記錄然后返回給定條件的記錄 索引可以讓數(shù)據(jù)庫服務(wù)程序快速的定位到表中的確定行
create index index_name on table_name(column_name [column_name ] );
SQL Server 和ORACLE允許你創(chuàng)建成簇的索引 Informix和ORACLE允許你指明列名是按升序排列還是按降序排列
使用索引不會對表中的物理存儲造成影響
order by和索引的區(qū)別
使用order by子句時 每次運(yùn)行它都需要重新進(jìn)行排序 而使用索引時 數(shù)據(jù)庫會建立一個物理索引對象(樹結(jié)構(gòu)) 每次運(yùn)行查詢時都訪問同一個索引
當(dāng)表被刪除時 所有與之相關(guān)的索引也將被刪除
使用索引的技巧
對于小表來說 使用索引對于性能不會有任何提高
當(dāng)你的索引列中有極多的不同數(shù)據(jù)和空值時 索引會使性能有極大的提高
當(dāng)查詢要返回的數(shù)據(jù)很少時(少于全部數(shù)據(jù)的 %) 索引可以優(yōu)化你的查詢 如果要返回的數(shù)據(jù)很多時 索引會加大系統(tǒng)開銷
索引可以提高數(shù)據(jù)的返回速度 但它使得數(shù)據(jù)的更新操作變慢 (對記錄和索引進(jìn)行更新時請不要忘記先刪除索引 當(dāng)執(zhí)行完更新操作后 恢復(fù)索引即可 對于一次特定的操作 系統(tǒng)可以保存刪除的索引 個小時 在這個時間內(nèi)數(shù)據(jù)更新完成后你可以恢復(fù)它 )
索引會占用數(shù)據(jù)庫空間
可以提高歸并速度
大多數(shù)數(shù)據(jù)庫系統(tǒng)不允許對視圖使用索引
不要對經(jīng)常需要更新或修改的字段創(chuàng)建索引 否則會降低性能
不要將索引與表存儲在同一個驅(qū)動器上 分開存儲會去掉訪問沖突從而使結(jié)果返回的更快
復(fù)合索引
對多個字段進(jìn)行索引(一個索引包含多個列)
CREATE INDEX ID_CMPD_INDEX ON BILLS( ACCOUNT_ID AMOUNT );盡量將經(jīng)常在查詢中使用的字段放在最前邊
復(fù)合索引的性能與單個字段的索引相比是無法判定的
創(chuàng)建索引時使用unique關(guān)鍵字
復(fù)合索引通常使用unique關(guān)鍵字來防止有相同數(shù)據(jù)的多個記錄多次出現(xiàn) (oracle 不支持 從 i開始支持)
索引與歸并
當(dāng)查詢中使用了復(fù)雜的歸并時 你的select語句會好用很長時間
在歸并時對字段創(chuàng)建索引可以顯著得提高查詢反應(yīng)速度 但創(chuàng)建太多的索引 會使性能下降而不是提高
作為一個規(guī) 則你應(yīng)該對表中的唯一屬性的字段或你用以歸并操作的字段來創(chuàng)建索引
群集(簇)的使用
當(dāng) 使用群集索引時 數(shù)據(jù)在表中的物理排序方式會被修改 使用群集索引通常比傳統(tǒng)的不使用群集索引速度要快 ORACLE 中群集的概念與此不同 當(dāng)使用ORACLE 關(guān)系數(shù)據(jù)庫系統(tǒng)時 群集就是一個像數(shù)據(jù)或表一樣的對象 群集一般是存儲了表的共有字段以提高對表的訪問速度
oracle 的例子
CREATE CLUSTER [schema ]cluster (column datatype [ column datatype] )
[PCTUSED integer] [PCTFREE integer] [SIZE integer [K|M] ]
[INITRANS integer] [MAXTRANS integer] [TABLESPACE tablespace]
[STORAGE storage_clause] [!!under!!INDEX | [HASH IS column] HASHKEYS integer]
你隨后創(chuàng)建的其于該表的群集的索引會被加入到群集中 然后把表也加入群集中 你應(yīng)該只將經(jīng)常需要?dú)w并的表加入到群集 不要向群集中加入只需要用簡單的SELECT 語句進(jìn)行個別訪問的表
事務(wù)處理控制
事務(wù)控制
事務(wù)控制(事務(wù)處理)指關(guān)系數(shù)據(jù)庫系統(tǒng)執(zhí)行數(shù)據(jù)庫事務(wù)的能力 (邏輯分組 它有自己的開始和結(jié)束)
事務(wù) 邏輯上必須完成的一命令序列的單位
單元工作期 事務(wù)的開始和結(jié)束時期
開始事務(wù)處理
SET TRANSACTION {READ ONLY | USE ROLLBACK SEGMENT segment}
可以在下列語句中使用READ ONLY選項(xiàng) SELECT LOCK TABLE SET ROLE ALTER SESSION ALTER SYSTEM
有些數(shù)據(jù)庫支持SET AUTOMIT [ON | OFF]
結(jié)束事務(wù)處理
MIT [WORK][ MENT text | FORCE text [ integer] ] ;
MIT (TRANSACTION | TRAN | WORK) (TRANSACTION_NAME)
取消事務(wù)處理
這必須是在MIT 之前 ROLLBACK 語句必須在一個事務(wù)之中運(yùn)行 它可以一直撤消到事務(wù)的開始
在事務(wù)中使用保存點(diǎn)
SAVEPOINT savepoint_name;
ROLLBACK TO SAVEPOINT savepoint_name;
數(shù)據(jù)庫安全
技巧要帶著下邊的問題去規(guī)劃你數(shù)據(jù)庫系統(tǒng)的安全性
誰應(yīng)該得到數(shù)據(jù)庫管理員權(quán)限?
有多少個用戶需要訪問數(shù)據(jù)庫系統(tǒng)?
每個用戶應(yīng)該得到什么樣的權(quán)限與角色?
當(dāng)一個用戶不再訪問數(shù)據(jù)庫時應(yīng)該如何去刪除它?
oracle使用三個結(jié)構(gòu)來實(shí)現(xiàn)安全性 用戶 角色 權(quán)限
用戶
CREATE USER user
IDENTIFIED {BY password | EXTERNALLY}
[DEFAULT TABLESPACE tablespace]
[TEMPORARY TABLESPACE tablespace]
[QUOTA {integer [K|M] | UNLIMITED} ON tablespace]
[PROFILE profile]
如 果選擇了EXTERNALLY 選項(xiàng) ORACLE 將會依賴于你登錄進(jìn)入計算機(jī)系統(tǒng)的用戶名和密碼 也就是說當(dāng)你登錄進(jìn)行計算機(jī)時你就已經(jīng)登錄進(jìn)行了ORACLE 我們推薦你使用IDENTIFIED BY 子句強(qiáng)制用戶在登錄進(jìn)行系統(tǒng)時輸入密碼IDENTIFIED BY PASSWORD
角色
GRANT role TO user [WITH ADMIN OPTION];
REVOKE role from user;
lishixinzhi/Article/program/Oracle/201311/16734
連接ORACLE數(shù)據(jù)庫有兩種方式:數(shù)據(jù)庫名和服務(wù)名,數(shù)據(jù)庫名的更改要使用重建控制文件的方式更改.alter database backup controlfile to trace后更改其中數(shù)據(jù)庫名為新名,運(yùn)行該文件
如果要更改目錄,在上面的Trace文件中將文件目錄改為新的文件目錄名稱重建或在mount階段使用alter database rename datafile一一將文件更改過來.