創(chuàng)建和維護(hù)表

一、數(shù)據(jù)定義語(yǔ)言

數(shù)據(jù)定義語(yǔ)言(DDL)是SQL語(yǔ)言集中負(fù)責(zé)數(shù)據(jù)結(jié)構(gòu)定義與數(shù)據(jù)庫(kù)對(duì)象定義的語(yǔ)言孔庭,由CREATE尺上、ALTER和DROP三個(gè)語(yǔ)法組成材蛛。

二、數(shù)據(jù)庫(kù)對(duì)象
  • 數(shù)據(jù)庫(kù)對(duì)象怎抛,是數(shù)據(jù)庫(kù)的組成部分卑吭,有表、約束马绝、索引豆赏、視圖、序列富稻、同義詞掷邦、存儲(chǔ)過(guò)程、函數(shù)等椭赋。
    1.表:表是用來(lái)存放用戶數(shù)據(jù)的對(duì)象抚岗,由行和列組成,列就是字段哪怔,行就是表中的記錄宣蔚。
    2.約束:保證數(shù)據(jù)完整性的約束,設(shè)置在單個(gè)字段或者多個(gè)最短的組合上认境,寫入這些字段的數(shù)據(jù)必須符合約束的限制胚委。
    3.視圖:是一個(gè)命名的查詢,用于改變基表的數(shù)據(jù)顯示叉信,通過(guò)視圖能夠簡(jiǎn)化查詢亩冬,訪問(wèn)方式與表相同。
    4.索引:構(gòu)建于表的單字段或者字段組合上茉盏,用于加速對(duì)表中的數(shù)據(jù)進(jìn)行查詢鉴未。
    5.序列:產(chǎn)生順序的不重復(fù)數(shù)字串,被作為主鍵約束值的參照鸠姨。
    6.同義詞:數(shù)據(jù)庫(kù)對(duì)象的別名铜秆。
  • Oracle數(shù)據(jù)庫(kù)對(duì)象的命名原則
    1.必須由字母開始,長(zhǎng)度在1-30個(gè)字符之間讶迁。
    2.名字中只能包含A-Z连茧,a-z,0-9巍糯,_(下劃線)啸驯,$和#。
    3.同一個(gè)Oracle服務(wù)器用戶所擁有的對(duì)象名字不能重復(fù)祟峦。
    4.名字不能用Oracle的保留字罚斗。
    5.名字是大小寫不敏感。
三宅楞、創(chuàng)建表
  • 建表語(yǔ)句語(yǔ)法
  1. 建表語(yǔ)法
    CREATE TABLE [schema.]table
    (column datatype [DEFAULT expr][, ...]);
  2. 你必須具備
    1.CREATE TABLE的權(quán)限
    2.一定的存儲(chǔ)空間(ALTER USER 用戶名 QUOTA 尺寸 ON 表空間名字)
  3. 你需要指定
    1.表名
    列名针姿、列的類型及列的寬度
  • DEFAULT選項(xiàng)
  1. 指定插入或更新數(shù)據(jù)時(shí)袱吆,列的默認(rèn)值
  2. 合法的值可以是字面值、表達(dá)式或SQL函數(shù)
  3. 非法的值是另一個(gè)列的名稱或虛擬列
  4. 默認(rèn)值的數(shù)據(jù)類型必須和列的類型匹配
四距淫、數(shù)據(jù)類型
  • 數(shù)據(jù)類型(字符型)

CHAR(size): 固定長(zhǎng)度字符型數(shù)據(jù)绞绒,長(zhǎng)度的大小以字節(jié)為單位,默認(rèn)和最小長(zhǎng)度為1榕暇;最大長(zhǎng)度為2000
VARCHAR2(size): 可變長(zhǎng)度字符數(shù)據(jù)蓬衡,最小長(zhǎng)度為1;最大長(zhǎng)度為4000
CLOB 可變長(zhǎng)度字符數(shù)據(jù)彤枢,最大可存儲(chǔ)4G數(shù)據(jù)

  • 數(shù)據(jù)類型(數(shù)值型)

NUMBER 數(shù)值型:可以表示整數(shù)狰晚,也可以表示小數(shù),表數(shù)范圍-10的125次方到10的126次方
NUMBER(n) 整型:
NUMBER(p,s) 數(shù)值型:總長(zhǎng)度為p堂污,小數(shù)位最大為s位家肯,整數(shù)位最大為p-s位,p的范圍從1到38盟猖,s的范圍從-84到127

  • 數(shù)據(jù)類型(日期型)

DATE 包括年月日時(shí)分秒
TIMESTAMP 9i后新增的讨衣,精度比DATE更高一些酒来,可以精確到毫秒

  • ?數(shù)據(jù)類型(圖片類型)

BLOB 最大可以存儲(chǔ)4G二進(jìn)制的數(shù)據(jù)输钩,可以存放圖片,聲音送火,文件

五娘汞、創(chuàng)建表的幾種方式
  • 建表語(yǔ)法創(chuàng)建
CREATE TABLE DOSSIER ( 
   ID  NUMBER(4),  
   CNAME  VARCHAR2(20 ),  
   BIRTHDAY  DATE,  
   STATURE    NUMBER(3),  
   WEIGHT  NUMBER(5, 2),  
   COUNTRY_CODE  CHAR(2 )  DEFAULT ‘01’);
  • 子查詢語(yǔ)法創(chuàng)建表
  1. 使用子查詢創(chuàng)建表的語(yǔ)法
CREATE  TABLE  table[(column, column...)] 
AS  subquery;
  1. 新表的字段列表必須與子查詢中的字段列表匹配
  2. 字段列表可以省略
  3. Select列表中的表達(dá)式列需要給定別名歹茶,如果沒有別名會(huì)產(chǎn)生錯(cuò)誤
CREATE  TABLE  dept10  
AS  SELECT empno, ename, sal+1000 newSalary  
FROM emp   
WHERE deptno = 10;
  • 引用另一個(gè)用戶的表

如果一個(gè)表不屬于當(dāng)前用戶,如果引用它你弦,必須把方案名放在前面惊豺。例如:

scott.emp
SELECT  * 
FROM  scott.emp
六、修改表
  • 修改表的定義
  • 添加列語(yǔ)法
ALTER TABLE table   
ADD (columnname datatype[DEFAULT expr]  
          [, columnname datatype]...);
  • 修改列語(yǔ)法
ALTER TABLE table  
MODIFY(columnname datatype[DEFAULT expr]  
             [, columnname datatype]...);
  1. 把dossier表性別(sex)列禽作,修改為長(zhǎng)度為2
ALTER  TABLE  dossier  MODIFY  ( sex  CHAR(2) )
  1. 添加默認(rèn)值
ALTER  TABLE  dossier  MODIFY  ( sex  DEFAULT  ‘ 男 ’ )
  • 刪除列語(yǔ)法
ALTER  TABLE  table 
DROP (columnname [,columnname]);
  • 添加新列
  • 添加列原則
    a)可以添加或修改列
    b)不能指定新添加列的位置尸昧,新列會(huì)成為最后一列
  • 如在dossier表上增加性別字段
ALTER  TABLE  dossier  ADD  (  sex  CHAR(1)  )
  • 修改已經(jīng)存在的列
  • 列的修改可以修改列名,數(shù)據(jù)類型旷偿,長(zhǎng)度烹俗,及默認(rèn)值。
  • 修改數(shù)據(jù)類型:已有的行數(shù)據(jù)必須為空萍程。
  • 修改長(zhǎng)度原則:
    a)字符型修改長(zhǎng)度:當(dāng)長(zhǎng)度向小改時(shí)幢妄,只要是修改后的值能夠容納下當(dāng)前已有數(shù)據(jù)的最大值即可,當(dāng)長(zhǎng)度向大改時(shí)茫负,可以隨意改變蕉鸳。
    b)數(shù)值型修改長(zhǎng)度:當(dāng)長(zhǎng)度向小改時(shí),已有行的數(shù)該列必須為空忍法,當(dāng)長(zhǎng)度向大改時(shí)潮尝,可以隨意改无虚。
  • 修改列的默認(rèn)值:默認(rèn)值的修改不會(huì)影響已經(jīng)存在的行,只會(huì)影響新增加的行衍锚。
  • 修改列名:ALTER TABLE表名RENAMR COLUMN 原有列名 TO 新列名
  • 刪除列
  • 可以用DROP子句從表中刪除列,包括列的定義和數(shù)據(jù)嗤堰。
  • 刪除列的原則:
    a)列可以有也可以沒有數(shù)據(jù)
    b)表中至少要保留一列
    c)列被刪除后戴质,不能再恢復(fù)
    d)被外鍵引用的列,不能被刪除
  • 刪除列的用法

刪除列的語(yǔ)法一:

ALTER  TABLE  emp  DROP  COLUMN  sex

刪除列的語(yǔ)法二:

ALTER  TABLE  emp  DROP  ( sex )

刪除表中的兩個(gè)字段:

ALTER  TABLE  emp  DROP  ( sex , ename )
七踢匣、刪除表
  • 語(yǔ)法:DROP TABLE table

a)只有表的創(chuàng)建者
b)或具有DROP ANY TABLE權(quán)限的用戶才能刪除表

  • 刪除表的原則

a)表中的所有數(shù)據(jù)和表結(jié)構(gòu)都被刪除
b)任何視圖和同義詞被保留但是無(wú)效
c)所有與其相關(guān)的約束和索引都被刪除
d)任何未完成的事務(wù)被提交

八告匠、重命名表
  • 語(yǔ)法:RENAME old_name TO new_name

a)必須是對(duì)象的所有者
-例子: 將emp 表重新命名為emp1

RENAME  emp  TO  emp1
九、截?cái)啾?/h5>
  • 語(yǔ)法:TRUNCATE TABLE table

a)執(zhí)行TRUNCATE語(yǔ)句的前提离唬,必須是表的所有者
b)或者有DELETE ANY TABLE系統(tǒng)權(quán)限來(lái)截?cái)啾?/p>

TRUNCATE和DELETE的區(qū)別
1)TRUNCATE是DDL后专,只能刪除表中的所有記錄,釋放存儲(chǔ)空間输莺,使用ROLLBACK不可以回滾戚哎。
2)DELETE是DML,可以刪除指定記錄嫂用,不釋放存儲(chǔ)空間型凳,使用ROLLBACLK可以回滾。

十嘱函、數(shù)據(jù)字典
  • 數(shù)據(jù)字典表:有oracle服務(wù)器創(chuàng)建和維護(hù)的表甘畅,通過(guò)數(shù)據(jù)字典,可以很容易了解當(dāng)前用戶的對(duì)象的信息往弓。比如user_tables這個(gè)數(shù)據(jù)字典表疏唾,里面保存當(dāng)前用戶所有的表對(duì)象。
  • 數(shù)據(jù)字典表的數(shù)據(jù)是由oracle自動(dòng)維護(hù)的函似。
  • 相關(guān)數(shù)據(jù)字典

a)查詢數(shù)據(jù)字典

SELECT  table_name
FROM  user_tables

b)查看數(shù)據(jù)字典結(jié)構(gòu)

DESC  user_tables
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末槐脏,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子缴淋,更是在濱河造成了極大的恐慌准给,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,122評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件重抖,死亡現(xiàn)場(chǎng)離奇詭異露氮,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)钟沛,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門畔规,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人恨统,你說(shuō)我怎么就攤上這事叁扫∪瑁” “怎么了?”我有些...
    開封第一講書人閱讀 164,491評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵莫绣,是天一觀的道長(zhǎng)畴蒲。 經(jīng)常有香客問(wèn)我,道長(zhǎng)对室,這世上最難降的妖魔是什么模燥? 我笑而不...
    開封第一講書人閱讀 58,636評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮掩宜,結(jié)果婚禮上蔫骂,老公的妹妹穿的比我還像新娘。我一直安慰自己牺汤,他們只是感情好辽旋,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,676評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著檐迟,像睡著了一般补胚。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上锅减,一...
    開封第一講書人閱讀 51,541評(píng)論 1 305
  • 那天糖儡,我揣著相機(jī)與錄音,去河邊找鬼怔匣。 笑死握联,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的每瞒。 我是一名探鬼主播金闽,決...
    沈念sama閱讀 40,292評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼剿骨!你這毒婦竟也來(lái)了代芜?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,211評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤浓利,失蹤者是張志新(化名)和其女友劉穎挤庇,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體贷掖,經(jīng)...
    沈念sama閱讀 45,655評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡嫡秕,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,846評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了苹威。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片昆咽。...
    茶點(diǎn)故事閱讀 39,965評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出掷酗,到底是詐尸還是另有隱情调违,我是刑警寧澤,帶...
    沈念sama閱讀 35,684評(píng)論 5 347
  • 正文 年R本政府宣布泻轰,位于F島的核電站技肩,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏浮声。R本人自食惡果不足惜亩鬼,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,295評(píng)論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望阿蝶。 院中可真熱鬧,春花似錦黄绩、人聲如沸羡洁。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,894評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)筑煮。三九已至,卻和暖如春粤蝎,著一層夾襖步出監(jiān)牢的瞬間真仲,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,012評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工初澎, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留秸应,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,126評(píng)論 3 370
  • 正文 我出身青樓碑宴,卻偏偏與公主長(zhǎng)得像软啼,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子延柠,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,914評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • ORA-00001: 違反唯一約束條件 (.) 錯(cuò)誤說(shuō)明:當(dāng)在唯一索引所對(duì)應(yīng)的列上鍵入重復(fù)值時(shí)祸挪,會(huì)觸發(fā)此異常。 O...
    我想起個(gè)好名字閱讀 5,317評(píng)論 0 9
  • 第一天 7月13日OCP筆記: Oracle Ocp11g準(zhǔn)備資料: OracleFundmentals 書 管理...
    fjxCode閱讀 2,815評(píng)論 0 4
  • 1. 了解SQL 1.1 數(shù)據(jù)庫(kù)基礎(chǔ) ? 學(xué)習(xí)到目前這個(gè)階段贞间,我們就需要以某種方式與數(shù)據(jù)庫(kù)打交道贿条。在深入學(xué)習(xí)MyS...
    鋒享前端閱讀 1,071評(píng)論 0 1
  • 在這樣一個(gè)熱情洋溢的日子里,我決定意淫一下這位三國(guó)第一美女增热,她整以,既是傳奇,用自己的風(fēng)華絕代演繹了三國(guó)最大腦洞钓葫。 公...
    265d9103bab3閱讀 334評(píng)論 0 0
  • 1.列表解析式 列表解析式是將數(shù)據(jù)全部存儲(chǔ)在內(nèi)存中一并返回悄蕾; 列表解析是Python迭代機(jī)制的一種應(yīng)用,它常用于實(shí)...
    暖A暖閱讀 360評(píng)論 0 0