《從實踐中學習oracle/SQL》讀書筆記 6
瀏覽量: 次 發布日期:2023-10-15 20:13:44
《從實踐中學習oracle/SQL》讀書筆記 6
第九章:數據字典
數據字典是有oracle服務器創建和維護的一組系統表,SYS用戶擁有所有的數據字典表。
數據字典試圖分為3大類,它們用前綴來區別,其前綴分別為:USER,ALL,DBA
User_objects,all_objects,dba_objects.
第十章:創建表
Create table 語句用來創建表 該語句為DDL
表名命名規則:
必須以英文字母開頭,之后可以跟字母,數字,下劃線,$,#
名字最短為一個字母,最長為30個字符
不能用oracle系統的保留字
表名也不能與同一用戶下的任何對象相同。但同一用戶下,不同表的列名可以相同。
如何引用其他用戶的表
用戶名.表名
有些書使用了schema名,而不是用戶名。用戶名與模式名在oracle系統中是沒有區別的。只是模式名學術味更濃一些
列的數據類型和默認值
VARCHAR2(SIZE),變長字符數據
Size為該列最多可以容納的字符個數,最大值為4000,size必須定義
CHAR(SIZE),定長字符數據
默認值和最小值為1,最大值為2000
DATE,日期型數據
取值范圍是公元前1471到公元后9999年12月31日
NUMBER(P,S)數字型數據
P為十進制的總長度,即位數。S為十進制小數點后面的位數
P最小值為1,最大值為38,s最小值為-84,最大值為124
CLOB,BLOB,BFILE,RAW。盡量少用Long,從oracle8以后,Long被LOB代替了
可以通過子查詢來創建表
修改表結構:alter table emp add (hiredate,date)
修改一個表中已經存在的列:注意事項:
可以增加字符類型列的寬度
可以增加數字類型列的寬度和精度
只有當所有列的值都為空,或表中沒有數據時,才可以減少列的寬度
只有所有列的值都為空時,才可以改變某一列的數據類型。
如果改變某一列的默認值,該默認值只影響以后的操作
只有當某一列的值為空,或者沒有改變列大小的情況下,才可以把char列改成varchar2列,或者varchar2改成char
刪除表的一列 :alter table emp drop column id
刪除表的一列,應該注意的問題:
該語句一次只能刪一列
刪掉一列后,該表中必須至少還有一列
只能用在oracle8以后
所刪除的列,無法恢復
所刪列,可以包含數據,也可以包含數據
置成無用的列:oracle8以后版本
alter table emp set unused id;或
alter table emp set unused column id
陸家嘴數據恢復改變對象的名字:
常用的對象:表,索引,視圖,序列,同義詞
其他的對象:存儲過程,函數,觸發器
rename 對象原來名字 to 對象現在名字
只有對象的主人才可以修改對象的名字
為表和列加注釋:
comment on table 表名|column 表名.列名 IS ‘注釋的內容’
截斷表和刪除表:
TRUNCATE TABLE 表名;
刪除表中所有數據的行,但保留表結構
如果沒有備份的化,刪除的數據無法恢復
該表釋放所占用的磁盤空間
不觸發表的刪除觸發器
Drop table 表名;
刪除表的數據和表的結構
刪除表的所有索引
數據同樣無法恢復
提交所有掛起的事務
所有基于該表的視圖和別名依然保留,但已失效
第十一章:
替代變量:
無錫數據恢復select empno from emp where sal >=&v_salary
在SQLPLUS中輸入。
保存文件:save D:/SQL/SAL REPLACE
@D:\SQL\SAL
日期和字符型的代替變量要用單引號括起來
第十二章:數據的維護
Insert ,可以插入NULL值
Update與insert不同,可以一次修改多行記錄
可以基于另一個表來修改一個表的記錄,如用子查詢