日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

Oracle数据库基础知识点汇总

發(fā)布時間:2025/6/17 数据库 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Oracle数据库基础知识点汇总 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1.數(shù)據(jù)庫 database

2.主鍵 ,表的唯一性標(biāo)識的一列,主鍵的值永遠(yuǎn)不能重。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

            默認(rèn)值約束 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,該部分?jǐn)?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)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。