Oracle数据库基础知识点汇总
1.數(shù)據(jù)庫 database
2.主鍵 ,表的唯一性標(biāo)識的一列,主鍵的值永遠不能重。primary key
主鍵的類型:單一主鍵:一列構(gòu)成的;復(fù)合主鍵:多個列組合起來充當(dāng)主鍵。多采用流水號,單一列當(dāng)做主鍵
3.三大規(guī)則 :實體完整性約束:主鍵 ?:PK
參照完整性約束:外鍵 :A表的主鍵出現(xiàn)在B表,在B中就被成為外鍵,簡稱FK,此時A為主表,B從表
從表外鍵的值需要參照主表主鍵進行填充,或者從表外鍵的值為空,如果外鍵的值在主建中不存在,禁止填充
自定義約束:唯一性約束 unique(對NULL無效,可以有多個NULL),
空值約束 not null
默認值約束 default(對NULL無效,可以錄入NULL)
檢查約束 check(列名=''or列名='')(對null無效)
4. 存儲字符串: Varchar2(長度 char)長度個漢字的長度
? Varcher2(長度)
存儲數(shù)字 NUMBER(n)?
存儲日期 DATE ?
DATE(N)錯誤書寫
5.創(chuàng)建一個表的語法
create table 表名(列名1 類型 primary key not null,
?列名2 類型 not null,
?列名3 類型 not null) ; (注意最后一個沒有逗號)
插入數(shù)據(jù)到表中:
insert into 表名(列名1,列名2,列名3)
values(列值1,列值2,列值3)列值的類型必須是列名的類型
查詢語句的書寫
select 列名1,列名2,列名3 B(可以給列名起別名用于顯示:
列別名需要加雙引號的三種情況:1)區(qū)分大小寫
2)有空格
3)特殊字符),B.列名
from 表名 A(給表起別名A,然后在select中可以寫A.列名),
表名B(可以多表一起查詢)(做多表連接的時候表的書寫順序,從表在前,主表在后,)
where 條件語句 (先寫篩選條件,后寫連接)
(where 可以做嵌套查詢把另一個查詢出來的結(jié)果作為篩選條件,但是不建議用,性能太差,一般把 select查詢出來的作為from的一個虛擬表進行處理)
order by asc 列名(正序)or desc 列名(逆序) 排序輸出結(jié)果(order by 中 null最大)
改寫語句
update 表名 set 列值 (新)where 條件 ?滿足什么條件就修改
刪除語句?
delete from 表名 ?整張表的數(shù)據(jù)刪除 ?
delete from 表名 where 條件語句 ?有條件的刪除數(shù)據(jù)
在表空間:
1.表空間與分用戶管理
??分用戶管理在實現(xiàn)上有兩種方式
??方式1:物理隔離
????每個用戶的所有數(shù)據(jù)都存儲到獨立的表空間中,該表空間只裝載該用戶的所有表,這樣一個用戶的表空間發(fā)生問題,對其他用戶沒有影響
??方式2:邏輯隔離
?????表歸屬用戶所有,但是所有用戶的表共用一個表空間
2.表空間(TABLESPACE)
???就是表的容器,實際上就是一堆數(shù)據(jù)文件的集合,用戶表中的數(shù)據(jù),實際上存儲到表空間的指定文件中.
???表空間的分類:
???????1.臨時表空間-----做交換分區(qū)
???????2.永久表空間------用以存儲數(shù)據(jù) ?
刪除表有兩個:
drop:可恢復(fù)
? ttruncate(數(shù)據(jù)截斷) ? ?:不可恢復(fù) ?在oracle中有一個數(shù)據(jù)回滾,truncate就是繞過這個數(shù)據(jù)回滾,而drop可以回滾就恢復(fù)剛剛 刪除的數(shù)據(jù)。
oracle數(shù)據(jù)庫中的時間date:sysdate 就可以從表中獲取 :select sysdate from dual;
字符串與日期之間的轉(zhuǎn)換:to_date('1997-08-08','YYYY-MM-DD')
to_char(sysdate,'YYYY-MM-DD HH25:MI:SS' )
時間的運算按天
多表關(guān)聯(lián)查詢中,表之間的構(gòu)型
???1.一主多從
???2.一從多主
???3.單線連珠
自連接?:?一個表和自己建立連接,把自己虛擬成另一張表就可以連接啦
比如查詢scott 下 emp 中 每個職員的管理者
SELECT A.EMPNO,A.ENAME,A.JOB,A.MGR,B.ENAMEFROM EMP A,EMP BWHERE A.MGR=B.EMPNO內(nèi)連接(等值連接):
只顯示滿足連接條件的數(shù)據(jù),不滿足的不顯示;應(yīng)用語境:應(yīng)用于過去和現(xiàn)在,對既成事實的查詢
外連接:以某一張表為基礎(chǔ),該表中的所有數(shù)據(jù)都顯示,對應(yīng)的從表,如果存在數(shù)據(jù),則顯示數(shù)據(jù),如果不存在數(shù)據(jù)就顯示NULL:對將來,全部的概念。
在Oracle中的語法:從表外鍵加(+);
比如查詢scott下表emp所有人的管理者;
SELECT A.EMPNO,A.ENAME,A.MGR,B.EMPNO,B.ENAMEFROM EMP A,EMP BWHERE A.MGR=B.EMPNO(+)對未來尚未實現(xiàn)的夢想進行查詢外連接去反就可以實現(xiàn):就是取從表相應(yīng)列為null,該部分數(shù)據(jù)表位將來時
查詢將來可能被管理的人?
SELECT A.EMPNO,A.ENAME,A.MGR,B.EMPNO,B.ENAMEFROM EMP A,EMP BWHERE A.MGR=B.EMPNO(+)AND B.EMPNO IS NULL這個例子可能不恰當(dāng),但是用法就這樣
前面提到的排序 order by asc 正序 desc 倒敘也叫降序
多字段排序:依據(jù)字段分組,組內(nèi)一字段一排序
分組統(tǒng)計函數(shù) :
min 求最小值
max ?求最大值(max min count可以對任意數(shù)據(jù)類型列取值)
avg 求平均值(avg 與 sum 只能對數(shù)值類型列取值)
sum 求和
count 計算滿足條件的記錄數(shù)(自動忽略null值)
count(列)只統(tǒng)計非空值,此列上所有不為null的參與計數(shù)
count(*) 只要有一列不為空即可
count五大統(tǒng)計函數(shù)中 具有篩選功能,
用了聚合函數(shù)count,寫在select中還有其他列名要查,就得進行聚合分組group by ,select出現(xiàn)的都得寫在group by中。group by 子句中不能使用別的列別名進行分組,也不可以有子查詢,可以有having子句。
sql語句的執(zhí)行順序
1 from 獲取數(shù)據(jù)
2 where 篩選數(shù)據(jù)
3.group by 聚合分組
4.聚合函數(shù)運算
5.having條件語句
6.select 查詢需要的列
7 distinct 刪除重復(fù)數(shù)據(jù)
8 .order by 排序想要的數(shù)據(jù)
decode函數(shù)
就是給字符表示的漢字意思顯示出來。比如存入數(shù)據(jù)庫 狀態(tài)一欄信息,1代表活著.2代表死了
查詢出來 1 或者2 別人看不懂我們就可以用 decode函數(shù)實現(xiàn) decode(表名.列名,'1','活著')這樣如果是1就顯示活著、
substr 函數(shù)
用來 截取字符串 substr(‘a(chǎn)bcdefg’,2,3)從第二個開始截取三個字符‘bcd’,如果2改成-2則順序顛倒,如果3改成100截取到最后一個位置‘bcdefg’。
rowid:
這是兩個偽列;行的物理地址,以最快的速度,檢索或者刪除滿足條件的記錄
這個用到嵌套查詢 我們查出要刪除的重復(fù)數(shù)據(jù)的最大rowid然后把前邊的我們不需要的全部刪除
rownum:
查詢結(jié)果集中,每行的記錄的行號。一般用于top-n分析;在select中直接加上rownum就會給查詢出來的數(shù)據(jù)每行加上一個序號;然后可以在where條件中寫 rownum<3 ?就可以獲取前兩行的數(shù)據(jù)。< 與!=一個意思,<=小于等于
大多數(shù)人說:rownum用來做分頁查詢:
在這我了解到rownum用來做top-n分析。就是對前幾名的數(shù)據(jù)的獲取,先是查詢出來用某一列用order by排序作為虛擬表用rownum選擇我們要的前幾名然后在可以用一個order by 語句來選擇我們想要的順序輸出,注意用什么來排序必須在上述的select 虛擬表中查出來的。
序列 ?
create sequence 序列名 ?:用來產(chǎn)生一個遞增的值,但不保證連續(xù)?
刪除 drop sequence 序列名
索引
作用:有助于提高查詢效率
創(chuàng)建時機:一般在系統(tǒng)上上線運行半年,基于優(yōu)化性能角度考量,將用戶經(jīng)常使用的查詢條件列創(chuàng)建索引。
自動索引,oracle中存在主鍵索引和唯一約束索引
創(chuàng)建索引的語句create index 索引名 on 表名(列名,列名)可以一列 為單一索引可以多列復(fù)合索引
刪除索引 是drop index 索引名
視圖
view 創(chuàng)建視圖 語句 create view 視圖名字 as select 查詢出來的數(shù)據(jù) 相當(dāng)于一個虛擬表 真正項目中不會用到視圖的?
刪除語句 drop view 視圖名字
視圖與原始表的關(guān)系:
視圖只是原始表數(shù)據(jù)的引用,視圖中,沒有任何數(shù)據(jù)
當(dāng)查詢視圖的時候,相當(dāng)于將創(chuàng)建視圖時select語句再執(zhí)行一次,
視圖的作用:混淆原始數(shù)據(jù),重構(gòu)數(shù)據(jù),簡化查詢。
?
轉(zhuǎn)載于:https://www.cnblogs.com/doucunkai/p/7295685.html
總結(jié)
以上是生活随笔為你收集整理的Oracle数据库基础知识点汇总的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 机器学习优化方法总结比较(SGD,Ada
- 下一篇: 二、SpringMVC的常用注解——1-