oracle10g學習筆記

来源:https://www.cnblogs.com/qw870602/archive/2018/07/08/9279693.html
-Advertisement-
Play Games

1.簡介 1.1.sql:Structured Query Language 結構化查詢語言 1.2.windows在目錄路徑中使用反斜線\,unix和linux使用正斜線/ 1.3.Number(a,b) a為總有效位數,b為最多小數位數 1.4.Insert into 表名(需指定主鍵及要求非空 ...


1.簡介

1.1.sql:Structured Query Language 結構化查詢語言

1.2.windows在目錄路徑中使用反斜線\,unix和linux使用正斜線/

1.3.Number(a,b) a為總有效位數,b為最多小數位數

1.4.Insert into 表名(需指定主鍵及要求非空的欄位,允許為空的欄位如果不給值預設插入null)......

1.5.Binary_float和Binary_double是對number類型的補充,適合涉及大量數字運算的系統

1.6.oracle大小寫不敏感,列名和表名都可以大小寫替換

2.從資料庫表中檢索信息

2.1.rowid又被稱為偽列,記錄了該行在oracle中的物理位置(eg:AAASUiAAFAAAAHsAAA)

2.2.date格式日期可以直接相互加減,單位為天

2.3.字元串間通過||合併列

2.4.null和空字元串是兩個不同的概念,select的時候都顯示空的值,可通過nvl()函數加以區分,null會被替換,空字元串不會被替換

2.5.between a and b 包含邊界

2.6.連接本身包含

   內連接(兩者公共的部分,inner join..on)

   外連接(左連接,右連接,全外連接)(left join,right join,(+))

         Eg: select...from a,b where a.id(+)=b.id  則以b表為主表

   自連接(eg:員工信息和老闆信息在一個表

            select w.name||'works for'||m.name from employees w,employees m where w.manager_id(+)=m.employee_id )

3.使用簡單函數

3.1.count()函數避免使用*,增加了運算量,應該使用某一列

3.2.select後面的欄位(除聚合函數)group by後面必須都有,反過來,group by後面的欄位select後面卻並不要求一定有

3.3.分組依據的所有欄位值完全相同時才視為相同然後合併為一行

3.4.欄位值為null的也會被分成一組

3.5.聚合函數包括avg,count,max,median,min,stddev,sum,variance(聚合函數會忽略null值)

3.6.

   a.如果查詢中包含聚合函數,而所選擇的列並不在聚合函數中,那麼這些列必須在group by子句中,錯誤事例如下:

  eg: select a,avg(b) from table

     後面應該加group by a

   b.不能在where子句中使用聚合函數來限制行,因為where子句只能用來對單行而不是分組過濾,過濾分組行要用having,使用having的前提是必須有group by

   Eg:select  a,avg(b) from table where avg(b)>20 group by a

4.日期和時間的存儲與處理

5.使用sqlplus

6.子查詢

6.1.錯誤事例:

   Eg:select a,b from table where a=(select a from products where b like ‘%e%’)

    = 只能處理一行

6.2.子查詢不能包含order by

6.3.多行子查詢可以使用IN,ANY,ALL操作符

6.4.可以使用多列子查詢

Select a,b,c,d from table where (a,b) in (select a,min(b) from table group by a)

6.5.關聯子查詢,內部查詢可以調用外部表簡稱(檢索價格高於同類產品平均價格的產品)

Eg:select product_id,product_type_id,name,price from products outer

                                    Where price>

                                   (select avg(price) from products inner where                       inner.product_type_id=outer.product_type_id)

  外部查詢從表中檢索出所有的行,並將其傳遞給內部查詢,內部查詢依次讀取每一行數據

6.6.使用exits時可以返回一個常量值,提高查詢的性能

   Eg:select employee_id,last_name from employees outer where exits(select 1 from employees inner where inner.manager_id=outer.employee_id)

   檢索負責管理其它員工的員工記錄(關聯子查詢)

6.7.select 1 from table where id=...

無值:列名為1,行數為空

有值:返回一列,列名為1,列值也為1,行數為返回的行數

6.8.一般exits的性能比in性能高,為了避免空值影響,最好使用nvl函數

6.9.表連接的查詢性能高於嵌套查詢,嵌套最多255

6.10.單行子查詢

多行子查詢

多列子查詢

關聯子查詢

嵌套子查詢

7.高級查詢

7.1.UNION操作符返回查詢檢索出的所有非重覆行,要求表的列數和類型要一樣,列名可以不一樣,UNION ALL操作符才返回所有行,包括重覆行

8.修改表內容

8.1.事務:一組不可分割的SQL語句,一個邏輯工作單元

8.2.原子性,一致性,隔離性,持久性

8.3.併發事務間相互獨立,除非有事務提交了才可能有影響

8.4.事務鎖:讀程式不會阻塞讀程式,寫程式不會阻塞讀程式,只有在試圖對相同的行進行修改時,寫程式才會阻塞寫程式

9.資料庫安全性

10.創建表,序列,索引,視圖

10.1添加列

Alter table 表名 add 列名 類型

10.2.truncate,delete

11.PL/SQL編程簡介

11.1.聲明變數可通過

X 表名.列名%TYPE

11.2.迴圈中經常使用exit when.....

Eg:exit when 游標名%notfound

11.3.oracle有很多內置的異常,異常發生時,控制權交給EXCEPTION模塊

12.資料庫對象

13.集合

14.大對象(LOB)

14.1.CLOB  字元數據

NCLOB  多位元組字元數據(常用於非英語字元)

BLOB  二進位數據

BFILE  文件指針,文件位於資料庫之外

15.使用JAVA運行SQL

15.1.JDBC(Java Database Connectivity)

API(Application Programming Interface)應用編程介面

15.2.JDBC驅動程式有4種

Thin驅動程式

OCI驅動程式

伺服器端內部驅動程式

伺服器端Thin驅動程式

16.SQL優化

16.1.表連接查詢時,將行較少的表連接到後面

16.2.為表起別名,查詢欄位利用別名去調可以減少執行時間

16.3.當單個查詢檢索的行數不大於表總行數的10%,建立索引是有用的,且索引的候選列應該用於存儲範圍廣泛的值,比如主鍵列

 

 

17.select * from nls_database_parameters where parameter='NLS_CHARACTERSET';
select userenv('language') from dual;

 

18.資料庫用戶具有的角色許可權在存儲過程中失效,即使這個用戶名有dba的角色也沒用,必須手動賦予

比如:grant create any table to 用戶名   

sqlplus管理員連接:

sqlplus 用戶名/密碼@ip:port/實例 as sysdba 

或者先sqlplus /nolog

然後 conn 用戶名/密碼@ip:port/實例 as sysdb

sys    dba     system  sysoper

 

sqlplus執行sql:  @sql路徑名

 

角色授予:grant dba to 用戶名;

 

18.oracle創建主鍵時會預設給主鍵欄位加上唯一索引,便於檢索, 在同一個namespace的oracle對象名字不能相同

19.查看用戶具有LOB對象的時哪些表,哪些欄位(dba),lob是由創建表中含有blob,clob造成的

      select owner,TABLE_NAME,column_name,DATA_TYPE from dba_TAB_COLUMNS where data_type like '%LOB%' and owner='SCOTT';


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1. 官網下載安裝 MongoDB https://www.mongodb.com/ 2. 環境變數設置 把 mongod.exe 所在路徑加入到環境變數的PATH, 我這裡安裝的路徑是 D:\db\MongoDB\Server\3.4\bin 3.註冊為windows服務 在cmd命令視窗下執行 ...
  • 今天使用ide連接線下MySQL報錯Can not connect to MySQL server. Too many connections,報錯很明確,與MySQL的連接數滿了。想想也是,每起一個服務都會創建MySQL連接池,占用不少的長連接。用ide查看了一下,原來最大連接數才151,看來有必 ...
  • 1.ProxySQL的Admin管理介面 當ProxySQL啟動後,將監聽兩個埠: (1).admin管理介面,預設埠為6032。該埠用於查看、配置ProxySQL。 (2).接收SQL語句的介面,預設埠為6033,這個介面類似於MySQL的3306埠。 ProxySQL的admin管理接 ...
  • DDL 數據定義語言 CREATE ALTER DROP DML 數據操作語言 INSERT UPDATE DELETE DQL 數據查詢語言 SELECT TCL 事務控制語言 COMMIT ROLLBACK DCL 數據控制語言 GRANT REVOKE 視圖: 1.簡化SQL語句;2.提供了一 ...
  • Oracle的集合運算符有並集union、union all,交集intersect,差集minus 先建表myemp,進行集合運算的測試 並集 union all不過濾掉集合中重覆的數據 union過濾掉集合中重覆的數據 交集 返回兩個集合中相同的數據組成新的查詢結果 差集 返回集合1中獨有而集合 ...
  • 1.ProxySQL中的庫 使用ProxySQL的Admin管理介面連上ProxySQL,可查看ProxySQL擁有的庫。 其中: main庫是ProxySQL最主要的庫,是 需要修改配置時使用的庫 ,它其實是一個 記憶體資料庫系統 。所以,修改main庫中的配置後,必須將其持久化到disk上才能永久 ...
  • 一.資料庫的增刪改查 1.新建資料庫 資料庫名規則:可以由字母、數字、下劃線、@、#、$ 區分大小寫, 不能使用關鍵字如 create select, 不能單獨使用數字, 最長128位 2.查看資料庫 3.選擇資料庫 4.刪除資料庫 5.修改資料庫字元編碼 二.數據表的增刪改查 1.創建表 註意:同 ...
  • 1.簡介和安裝 sysbench是一個很不錯的資料庫性能測試工具。 官方站點:https://github.com/akopytov/sysbench/ rpm包下載:https://packagecloud.io/akopytov/sysbench/packages/el/7/sysbench 1 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...