数据库对象管理 (表)
實驗10表的創建和修改&&答案 http://pan.baidu.com/share/link?shareid=447633&uk=3912660076
SQL Statements
數據類型
NUMBER 可以用來表示所有的數值數據:
fieldname NUMBER (precision, scale); precision(精確度)是最大長度,scale(范圍)是小數點后的位數
VARCHAR2 用來表示變長的字符串數據類型:
fieldname VARCHAR2 (max_length);
CHAR 保存固定長度字符串,最大長度為2KB。
DATE? 保存固定長度的日期數據。
BLOB 保存二進制大對象,通常用來保存圖像和文檔等二進制數據。
CLOB 保存字符型大對象。varchar2數據類型最多只能保存4000個字符,如果要保存的字符串數據超過此范圍,應使用clob數據類型。
創建表—數據完整性
數據完整性是關系數據庫模型的基本原則,是用戶在表上定義的一系列規則或約束條件,以及在表之間定義的一系列相互關系。
數據完整性的作用:強制要求數據庫中只能接受正確的、合理的數據,防止錯誤的或無效的數據被插入到表中。
數據完整性分為三類:
實體完整性
參照完整性
用戶定義的完整性
實體完整性:
規則1:主鍵的各個屬性都不能為空值。
參照完整性:
規則2:外鍵或者取空值,或者等于被參照關系中的主鍵的某個值。
用戶定義的完整性:
規則3:屬性(或屬性組)的取值應當滿足用戶定義的約束條件。
Oracle通過為表中的列定義各種約束來實現數據完整性
約束(constraint)條件:
Not Null:防止NULL值進入到指定的列。(只能定義在列級)
forexample:?...UserName?????Varchar2(40)??? NOT NULL,...(系統命名)
? ...data?????? Data?? CONSTRAINT? constraint_name????NOT NULL?);(自定義命名)
Unique:保證在指定的各列中沒有重復的值。
forexample:...age???? number?? UNIQUE,...(系統命名)
CONSTRAINT? constraint_name????UNIQUE(age)?);(自定義命名)?????????? ?--->表級
Check:檢查在約束中指定的條件是否得到了滿足。
forexample:...Sex?? varchar2(2)?? not? ?null?? CHECK(Sex='F' or Sex='M'),...
CONSTRAINT??CHK_name ?CHECK(Sex in('F','M'));??? --->表級
Primary key:用來惟一地標識出表的每一行,并且防止出現NULL值。一個表只能有一個主鍵約束。
forexample:...BugsBug?? varchar2(8)?? primary key,...
CONSTRAINT? PK_constraint_name????primary key(BugsBug,[agr]...)?);(自定義命名)?????? --->表級
Foreign key:通過使用公共列在表之間建立一種父子關系。在表上定義的外鍵可以指向其他表的主鍵或者惟一鍵。(可以定義在表級或列級)
forexample:...CONSTRAINT??FK_constraint_name??FOREIGN? KEY(BugsBug)? ?REFERENCES? othertable_name(BugsBug));
?
????? Default : 在表上定義行的默認值.
forexample:...Sdept varchar2(15)? default ?'Computer');
?
參數:
FOREIGN KEY: 在表級指定子表中的列
REFERENCES: 標示在父表中的列
ON DELETE CASCADE: 當父表中的列被刪除時,子表中相對應的列也被刪除
ON DELETE SET NULL: 子表中相應的列置空
ON DELETE NO ACTION:不進行任何操作
約束級別
列級約束
表級約束
添加約束:
?創建表之后如果需要添加約束(除NOT NULL以外),可以用以下語句實現:
ALTER TABLE table_name? Add? [CONSTRAINT constraint_name]? Constraint_type(col1,col2,…)? [condition]
只能用modify格式
刪除約束:
?
創建表語法:
create table? table_name
({column_name??? datatype?? [default_expression]?? ?[column_constraint] | [table_constraint]},....)
[tablespace tablespace_name];
注意事項:
如果不指定約束名 Oracle server 自動按照 SYS_Cn 的格式指定約束名
在什么時候創建約束:
建表的同時
建表之后
可以在表級或列級定義約束
可以通過數據字典視圖查看約束
?
?查看約束信息:
表的約束信息:desc user_constraints;
列的約束信息:desc? user_cons_columns;
?修改表:
表在創建之后還允許對其進行更改,如添加或刪除表中的列,修改表中的列,以及對表進行重新命名和重新組織等。
普通用戶只能對自己方案中的表進行更改,而具有ALTER ANY TABLE系統權限的用戶可以修改任何方案中的表。
?Alter table? table_name
?????? Add(newcolumn_name? ?datatype[,…])?????????????????????????? ???????? ???????????? ????//添加列
????? | Modify? column datatype|(column datatype [,...])?????????????????????????????????? ?//修改列
????? | Drop ?[unused? columns]|column??column_name|(column_name1, ...)????? //刪除列
????? | rename? column?? oldcolumn_name ?to ?newcolumn_name?????????????????? ???//重命名列
????? | set unused? (column_name1, column_name1…)?????????????????????????????? ??? // 設置不可用==》刪除列
?
?查看表的列名:
刪除列:
修改列不可用:
刪除不可用的列: ?ALTER TABLE Users? DROP UNUSED COLUMNS
插入數據:INSERT?? INTO? ?<表名>??[列名1, 列名2, …, 列名n]?? VALUES? (值1, 值2, …, 值n);
修改數據:UPDATE?? <表名>?? SET?? ?列名1 = 值1,?...? WHERE? <更新條件表達式>
刪除數據:DELETE? FROM? <表名>? WHERE?? <刪除條件表達式>
?
?COMMIT;?在用DML(INSERT,UPDATE,DELETE)語句對數據庫修改之后,需要提交事務。
?COMMIT WORK;(DELETE)?
?刪除表 :
?
轉載于:https://www.cnblogs.com/wjshan0808/archive/2013/05/08/3063798.html
總結
以上是生活随笔為你收集整理的数据库对象管理 (表)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【转】如果要像钢铁侠那样看世界,谷歌眼镜
- 下一篇: 修改Sql server中列的属性脚本