Oracle 數(shù)據(jù)類型
創(chuàng)建表時(shí)贬墩,必須為各個(gè)列指定數(shù)據(jù)類型
以下是 Oracle 數(shù)據(jù)類型的類別:
Oracle主要數(shù)據(jù)類型
Character 數(shù)據(jù)類型
Char:固定長度字母數(shù)字值,可1-2000個(gè)字節(jié)
Varchar2:可變長度欣福,1-4000個(gè)字節(jié)
Long:可變長度,最多2G
Number 數(shù)據(jù)類型
可以存儲(chǔ)整數(shù)改橘、浮點(diǎn)數(shù)和實(shí)數(shù)
最高精度為 38 位
格式: NUMBER [( p[, s])]
Date 數(shù)據(jù)類型
存儲(chǔ)日期和時(shí)間值
Date:存儲(chǔ)日期和時(shí)間部分绵脯,精確到整個(gè)的秒
Timestamp:存儲(chǔ)日期、時(shí)間和時(shí)區(qū)信息慰照,秒值精確到小數(shù)點(diǎn)后6位
RAW/LONG RAW數(shù)據(jù)類型
RAW:存儲(chǔ)二進(jìn)制數(shù)據(jù),最多2000字節(jié)
LONG RAW:用于存儲(chǔ)可變長度的二進(jìn)制數(shù)據(jù)琉朽,最多2GB
LOB數(shù)據(jù)類型
稱為“大對(duì)象”數(shù)據(jù)類型毒租,可以存儲(chǔ)多達(dá) 4GB 的非結(jié)構(gòu)化信息,例如聲音剪輯和視頻文件等箱叁,允許對(duì)數(shù)據(jù)進(jìn)行高效墅垮、隨機(jī)、分段的訪問
CLOB:字符數(shù)據(jù)耕漱;BLOB:二進(jìn)制對(duì)象算色,如圖形、視頻孤个、音頻等剃允;BFILE :即 Binary File(二進(jìn)制文件),它用于將二進(jìn)制數(shù)據(jù)存儲(chǔ)在數(shù)據(jù)庫外部的操作系統(tǒng)文件中
SQL 語句復(fù)習(xí)
SQL 支持下列類別的命令:
數(shù)據(jù)定義語言(DDL):用于改變數(shù)據(jù)庫結(jié)構(gòu)
CREATE? ALTER? DROP
數(shù)據(jù)操縱語言(DML):用于檢索修改和插入數(shù)據(jù)
INSERT? SELECT? DELETE UPDATE
事務(wù)控制語言(TCL):保證事務(wù)的執(zhí)行
COMMIT? ROLLBACK? SAVEPOINT
數(shù)據(jù)控制語言(DCL):提供權(quán)限控制命令
GRANT? REVOKE
表管理--創(chuàng)建表
利用現(xiàn)有的表創(chuàng)建表
語法:
CREATE TABLE <new_table_name> AS SELECT column_names FROM <old_table_name>;
示例:
SQL> CREATE TABLE newemp
? ? ? ? ? ?AS SELECT * FROM emp[WHERE 1 = 2;];
SQL> CREATE TABLE newemp
? ? ? ? ? ?AS SELECT empno, salary
? ? ? ? ? ?FROM emp;
表管理--約束
五大約束
1齐鲤、非空約束:NOT NULL
2斥废、主鍵約束:PRIMARY KEY,唯一给郊、且非空
3牡肉、外鍵約束:FOREIGN KEY ... REFERENCES
4、唯一約束:UNIQUE淆九,唯一统锤,允許為空
5、條件約束:CHECK
列級(jí)約束
約束作為列定義的一部分炭庙,允許定義全部的五類約束
SQL> CREATE TABLE clazz_table (
? ? ? ? ? cid NUMBER(10)PRIMARY KEY,
? ? ? ? ? cname VARCHAR2(30) NOT NULL,
? ? ? ? ? cdate DATE);
SQL> CREATE TABLE student_table(
? ? ? ? ? sid NUMBER(10) primary key ,
? ? ? ? ? clazzid NUMBER(10)REFERENCES clazz_table(cid),
? ? ? ? ? sno VARCHAR2(30)UNIQUE,
? ? ? ? ? sname VARCHAR(30) NOT NULL,
? ? ? ? ? sage NUMBER(3) CHECK(sage>0 AND sage<120));
注意:
列名饲窿、數(shù)據(jù)類型、缺省值的次序不能亂焕蹄;
在列定義的最后逾雄,指定列類型的約束;
主鍵約束的列可以不指定非空約束(NOT NULL)。
表級(jí)約束
約束作為表定義的一部分鸦泳,除非空約束外银锻,允許定義其他四類約束
唯一約束
CONSTRAINT nameUNIQUE(column[,column...])?
主鍵約束
CONSTRAINT name PRIMARY KEY(column[,column...])?
外鍵約束
CONSTRAINT name FOREIGN KEY (column[,column...]) REFERENCES table(column[,column...])
條件約束
CONSTRAINT name CHECK(condition)?
定義表級(jí)約束
SQL>create table account(
name VARCHER2(32) ,
acc_type NUMBER(1) NOT NULL,
acc_code VARCHAR2(32),
ba NUMBER(5,2) DEFAULT 100,
CONSTRAINT pk_qrsx_account PRIMARY KEY (name),
CONSTRAINT uk_qrsx_account UNIQUE(acc_code),
CONSTRAINT ck_qrsx_account CHECK(ba>=100 AND ba<=1000));
表管理--修改表
ALTER TABLE :修改表
列的添加、修改
給表添加/刪除約束
語法:
ALTER TABLE[add][modify][drop column]
示例:
alter table users add(pubdate date);
alter table users add(age number)
alter table users modify(userName varchar2(20));
alter table users drop(password);
alter table users add primary key(userId);
表管理--其它
RENAME table_name TO new_name :重命名
TRUNCATE TABLE:刪除表 做鹰,記錄不可恢復(fù)
DROP TABLE:刪除表
COMMENT ON:為表添加注釋
示例:
RENAME users to test
DROP TABLE users击纬;--刪除表結(jié)構(gòu)
TRUNCATE TABLE users --刪除記錄,釋放空間
DELETE FROM emp --刪除記錄钾麸,但可以恢復(fù)
COMMENT ON TABLE emp IS 'Employee Information';
Oracle數(shù)據(jù)庫中的表
用戶表
用戶創(chuàng)建和維護(hù)的一系列表的集合包含用戶的信息
數(shù)據(jù)字典
Oracle 服務(wù)器創(chuàng)建和維護(hù)的一系列表和視圖的集合更振,包含數(shù)據(jù)庫的信息
user_xxx用戶擁有的
all_xx 用戶有權(quán)查看
dba_xxx(sys)? 所有的信息
數(shù)據(jù)控制語言DCL
數(shù)據(jù)控制語言為用戶提供權(quán)限控制命令
用于權(quán)限控制的命令有:
GRANT 授予權(quán)限
REVOKE 撤銷已授予的權(quán)限
示例:
SQL> GRANT ALL ON EMP TO TEA;
SQL> REVOKE SELECT, UPDATE ON EMP FROM TEA;
本章小結(jié)
掌握Oracle常用數(shù)據(jù)類型
掌握Oracle數(shù)據(jù)庫表的管理
掌握事務(wù)控制語句