1.數(shù)據(jù)庫
DB(database) 用來存儲數(shù)據(jù)的倉庫
DBS(數(shù)據(jù)庫系統(tǒng)) 一套軟件 包括DB 和DBS
DBMS(數(shù)據(jù)庫管理系統(tǒng))
主流數(shù)據(jù)庫:主流數(shù)據(jù)庫
2.sql->structs query lanagues(結(jié)構(gòu)化的查詢語言)
任何數(shù)據(jù)庫都支持的語言標(biāo)準(zhǔn)sql
不同數(shù)據(jù)庫
1:數(shù)據(jù)類型會存在一些差異
2:函數(shù)存在一些差異
3:存儲過程 plsql.一些差異
3.Oracle 定義
1) oracle版本
oracle7 – oracle8 -> oracle8i -> oracle9i -> oracle10g -> oracle11g -> oracle12c
i->internet 支持網(wǎng)絡(luò)訪問操作
g-> grid 支持網(wǎng)格的數(shù)據(jù)庫 (支持分布式應(yīng)用)
c->cloud 支持云計算的數(shù)據(jù)庫
2)oracle數(shù)據(jù)類型
- 字符類型
char 是一個定長的字符類型 最大存儲空間是2000字符
char(10) “a”, -> a ,
varchar 是一個變長的字符類型最大存儲空間是4000字符
varchar(10) “a” -> a,
varchar2 是一個變長的字符類型最大存儲空間是4000字符,是oracle 10g新推出的數(shù)據(jù)類型在varchar上面改正的數(shù)據(jù)類型,在性能上比varchar高
- 數(shù)值類型
number 可以存儲任意的數(shù)據(jù) 包括帶小數(shù)位的
number(n) n代表整數(shù)位數(shù)
number(3)->存儲范圍 -999 -999
number(n,m) n代表有效值的總位數(shù) m小數(shù)位數(shù)
number(5,2) ->存儲范圍 -999.99 -999.99
- 時間類型
date 時間 可以存儲到 年月日 時分秒
timestamp 時間 可以存儲到 年月日 時分秒 毫秒
- 大數(shù)據(jù)類型
clob 以字符存儲的大數(shù)據(jù) 最大值是4G (文章)
blob 以二進(jìn)制存儲的大數(shù)據(jù) 最大值是4G (視頻 照片)
3) oracle 表 列命名規(guī)范
必須只能是 字母 數(shù)字 _ - $ 組成
首字母必須不能是數(shù)字
命名不能是oracle的關(guān)鍵字 number char varchar….
命名的長度不能超出 30個字符
數(shù)據(jù)庫中 表名 列名 關(guān)鍵字 都不區(qū)分大小寫,但數(shù)據(jù)值區(qū)分大小寫
4、數(shù)據(jù)庫定義語言 DDL(database defined language)
1)創(chuàng)建表:
create table 表名(
列名1 數(shù)據(jù)類型1,
………,
列名n 數(shù)據(jù)類型n
)
2) 修改表結(jié)構(gòu)
- 添加列
alter table 表名 add (字段名 字段類型 默認(rèn)值 是否為空,....); - 修改列
alter table 表名 modify (列名 新的數(shù)據(jù)類型,….. 列名 新的數(shù)據(jù)類型) - 刪除列
alter table 表名 drop column 列名; - 字段重命名
alter table 表名 rename column 老列名 to 新列名 - 表的重命名
alter table 表名 rename to 新表名
3) 刪除表
drop table 表名;
/*刪除閃回為刪除oracle10g中的數(shù)據(jù)庫實體提供了一個安全機(jī)制,當(dāng)用刪除一個表時,oracle10g
會將該表放到回收站中,回收站中的對象一真會保留,直到用戶決定永久刪除它們或出現(xiàn)表空間的空間不足
時才會被刪除?;厥照臼且粋€虛擬容器,用于存儲所有被刪除的對象*/
flashback table 表名 to before drop;
4)截斷表
truncate table 表名;//刪除數(shù)據(jù),保留表結(jié)構(gòu)
5、數(shù)據(jù)庫操縱語言 DML(database manipulate language)
- 向數(shù)據(jù)庫表里面插入記錄
insert into 表名 (列名1,。。。。。列名n) values (列名1值,…. 列名n值);
數(shù)據(jù)僅僅插入數(shù)據(jù)庫的緩沖器 要進(jìn)入數(shù)據(jù)庫 必須啟動事務(wù)操縱
Commit ;或者 rollback;
- 刪除表里面的記錄
delete from表名 刪除表里面的所有記錄 保留表結(jié)構(gòu)
也需要 Commit ;或者 rollback;
drop table刪除表 刪除表數(shù)據(jù)與表結(jié)構(gòu) 不能回滾 會釋放空間
truncate table刪除表數(shù)據(jù) 保留表結(jié)構(gòu) 不能回滾 會釋放空間
delete table刪除表數(shù)據(jù) 保留表結(jié)構(gòu)可以回滾 不釋放空間
- 修改表里面的數(shù)據(jù)
Update 表名 set 屬性1=值1,….. 屬性1=值1 where 屬性=值;
6、數(shù)據(jù)庫的規(guī)范(范式)
第一范式 :表的列不可再分
第二范式: 在滿足第一范式的基礎(chǔ)上,行數(shù)據(jù)可以唯一區(qū)分
可以考慮給表加上唯一可以區(qū)分的 不能重復(fù)的列(主鍵)
第三范式:在滿足第二范式的基礎(chǔ)上,外鍵要依賴其他表的主鍵
7、表的約束
constraint 約束名 約束類型(列名)
創(chuàng)建表的時候添加約束:
Create table xxx( 列1 數(shù)據(jù)類型1, ..., Constraint 約束名 約束類型 (列名) )創(chuàng)建完表之后添加約束:
alter table ttss_user add constraint ttss_user_pk primary key(id);
- 主鍵約束(primary key)
- 唯一約束(unique):只可以有一個null
-
檢查約束(check):常用于范圍檢查
constraint sex_check check(sex='女') -
默認(rèn)值約束(default ):寫法不一樣
alter table 表名 modify 列名 default 默認(rèn)值 -
外鍵約束(foreign key):值可以是null
constraint 約束名 foreign key(列名) references 外表名(列名)
