針對Oracle資料庫表中的數據的常見操作(1)

来源:http://www.cnblogs.com/duanrantao/archive/2017/06/27/7084677.html
-Advertisement-
Play Games

1、查詢表中所有數據 select * from 表名; 例:select * from stu; 2、查詢的同時修改表中數據 select * from 表名 for update; 例:select * from stu for update; 3、往表中添加數據 insert into 表名( ...


1、查詢表中所有數據

select * from 表名;  例:select * from stu;

2、查詢的同時修改表中數據

select * from 表名  for update;  例:select * from stu for update;

3、往表中添加數據

insert into 表名(列1,列2...) values(值1,值2...);

例:insert into stu(id,name,age) values(1,'zhangsan',23);

註意:字元串類型要用單引號括起

   對於列中要求非空的屬性,添加時必須添加,可以為空的數據可以不寫上.

   列名和值要一一對應。

4、刪除表中數據(刪除某行數據)

delete from 表名 where 列名=值;    例:delete from stu where id=1;//刪除id是1的那行數據

註意:刪除時儘量使用唯一鍵進行刪除,或者使用主鍵進行刪除。

5、更改表中某行數據

update 表名 set 列名=值,列名=值...where 列名=值;  例:update stu set id=2,name='lisi';age=4 where id=1;  //把id為1的那行數據進行更改,可只更改部分數據

6、查詢(重點,最常用的對資料庫進行的操作就是查詢)

在sql中,可以使用簡單的運算符(+-%/);

 (1)、查詢表中所有數據

  select * from 表名;  例:select * from stu;

(2)、查詢表中指定列的數據

  select 列名 from 表名;  例:select name,age from stu;

(3)、查詢表中指定行列的數據

  select 列名 from 表名 where 列名=值;  例:select name,age from stu where id=2;(查詢id為2的數據的姓名和年齡)

(4)、查詢十年後張三的年齡

  select name,age+10 from stu where name='zhangsan';

(5)、給age欄位起別名

    給欄位起別名是為了更好的對欄位進行描述,也就是說起一個別名並不能隨意起,要適用於這個欄位的意思

    select name age+10 as ages from stu where name='zhangsan';(使用關鍵字as,通常情況下,這裡的as可以省略)

    select name age+10 ages from stu where name='zhangsan';

    也可以給表起別名:select name from stu s;(給表stu起別名s,這裡不能加as);

    註意:如果別名中間有空格,需要給別名加個雙引號

    例:select age+10 "zhangsan age" from stu where id=1;

(6)、表格自定義的格式表現

  例:select '姓名:'||name,'年齡:'||age from stu;(使用了單引號)

(7)、對數據進行排序

  這裡需要使用關鍵字order by,預設是升序的---->asc升序,如果以升序進行排列通常情況下asc省略。desc降序,不能省略

  例:select * from stu order by age asc;(對學生表按照年齡升序排列)

    select * from stu order by age desc;(對學生表按照年齡降序排列)

    select * from stu order by age desc,name desc;(對學生表按照年齡降序排列,年齡相同時按名字降序排列)

(8)、去除重覆項(關鍵字:distinct)

  例:select distinct age from stu;(去除stu表中年齡相同的項,只保留一項)

  註意:這裡的去除只能按照某一屬性去除,不能同時按照兩個或以上屬性去除。
(9)、計算1+1等於幾?

  select 1+1 from dual;(1+1信息會顯示在dual表中)

  dual其實也是一張表,這一表是虛擬的,沒有列和數據,當查詢的時候會進行賦予列和數據,用於方便用戶測試使用.

(10)、查詢當前Oracle登錄用戶

  select user from dual;(用戶信息會顯示在dual表中)

 7、利用where關鍵字進行查詢(這裡都以teacher表為例,該表有id,name,age,description hire_date等列,其中id列是主鍵)

  (1)、= 關鍵符號

    select * from teacher where id=2;  //查找id等於2的那行

  (2)、大於>、小於<、大於等於>=、小於等於<=和!=不等於;

    select * from teacher where id>2;  //查找id大於2的數據;

    select * from teacher where id<5;  //查找id小於5的數據;

    select * from teacher where id>=2;  //查找id大於等於2的數據;

    select * from teacher where id<=2;  //查找id小於等於2的數據;

    select * from teacher where id!=2;  //查找id不等於2的數據;

  (3)、between and是包含兩邊的極限數據(閉區間)

    select * from teacher where id between 2 and 10;  //查找id在2和10之間的數據(包括2和10);

  (4)、or關鍵字(或者)

    select * from teacher where id=2 or id=5;  //查找id等於2或者id等於5的。

  (5)、and關鍵字(和)

    select * from teacher where name='zhangsan' and age=32;  //查找名字等於張三並且年齡32的數據(人);

  (6)、in、not in關鍵字(主要的作用:批量操作)

    select * from teacher where id in(1,5,10);  //查找id是1、5、10的數據

    select * from teacher where id not in(1,5,10);  //查找除了id是1、5、10的數據 

  (7)、is null(過濾出來所有為null的數據)

    select * from teacher where description is null;  //查找所有description屬性是null的數據

  (8)、 is not null (過濾出來所有不為null的數據)

    select * from teacher where description is not null;  //查找所有description屬性不是null的數據

  (9)、模糊查詢(使用關鍵字like和not like)not like 和like剛好相反

    like一般情況下要和%結合起來用,%其實一個占位符(代表多位),如果把%寫在前面,匹配以a結尾的所有名字,反之匹配以a開頭的所有名字
    如果所需要查詢的欄位前後都加上%,只要包含該查詢欄位就全部查找出來

    例:select * from teacher where name like '%a';  //匹配所有以a字元結尾的name屬性。

      select * from teacher where name like 'a%';  //匹配所有以a字元開頭的name屬性。

      select * from teacher where name like '%a%';  //匹配所有包含a字元的name屬性。

      _下劃線也是占位符,不過它只代表1位,就是代表了任意一個字元

      以_a%進行模糊查詢的時候,會匹配以第二位為'a'的字元串

      select * from teacher where like name '_a%';

      另一個關鍵字escape, 

      匹配規則:使用escape的時候會,如果_寫在需要查詢欄位的前面,oracle會自動把_轉移為任意一個字元
      只有把下劃線寫在需要查詢欄位的後面,才能使用escape關鍵字去掉多餘欄位,只保留下劃線。
      如果'%_x%',使用escape關鍵字時,會連同下劃線一起去除。

      例:select * from teacher where name like '%x_d%' escape 'x';  //查詢以_開頭的數據

        select * from teacher where name like '%/_d% escape '/';  //查詢以_開頭的數據

      例:搜索以“QA_”開頭的數據 :

      select * from teacher where name like 'QA_%'

      結果為:QA_OFFICER_1,QA_OFFICER_2,QA112

      不符合,必須把下劃線轉義

      select * from teacher where name like 'QA/_%' escape '/';

      結果為:QA_OFFICER_1,QA_OFFICER_2    

      補充:

      SQL中escape的用法

      使用 ESCAPE 關鍵字定義轉義符。 在模式中,當轉義符置於通配符之前時,該通配符就解釋為普通字元。

      例如,要搜索在任意位置包含字元串 5% 的字元串: WHERE ColumnA LIKE '%5/%%' ESCAPE '/' 

      前後兩個%作為通配符使用,中間的%經過ESCAPE 轉義,作為普通字元使用

8、Oracle中的函數

  (1)、lower(轉換為小寫)

    select lower(name) from teacher;  //把name數據轉換成小寫

   (2)、upper(轉換為大寫)

 

    select upper(name) from teacher;  //把name數據轉換成大寫

   (3)、initcap(首字母開頭大寫)

    select initcap(name) from teacher;  //把name屬性數據首字母轉換成大寫

    select initcap('oracle') from dual;  //把字元串oracle首字母轉換成大寫

   (4)、length:獲取字元串的長度
    select length(name) from teacher where id =1;

   (5)、replace:有三個參數第一個參數:列名(欄位);第二個參數:需要替換欄位中的某一個字元;第三參數:替換的字元

    select replace(name,'z','Q') from teacher where id =1;

   (6)、substr:和Java的subString差不多

    substr有兩個參數:第一個參數:列名,第二個參數:從哪一位開始截取(包含最後一位截取的數):name,要截取:subtr('name',2);--->得到的是ame

    select substr(name,3) from teacher where id=2;

    如果第二個參數為負數的話,就倒著從最後一位開始往前截取

    select substr('zhangsan',-3) from dual;  //運行結果為san;    

    subtr:有三個參數:第一個參數:列名,第二個參數:從哪一位開始截取(閉區間),第三個參數:截取到多少位,截多少長度(會從第二個參數的截取位置往後開始進行截取)
    oracle中,截取的位置會從0或者1起始(0和1的位置是一樣的;   

    select substr('zhangsan',0,5) from teacher where id = 1;
    select substr('zhangsan',1,5) from teacher where id = 1;

   (7)、ceil(向上取整)

    select ceil(12345.1) from dual;

   (8)、floor(向下取整)

    select floor(12345.1) from dual;

   (9)、round(四捨五入)   

    select round('12345.1') from dual;
    select round('12345.7') from dual;
    select round('12845.6', -3) from dual;

    select round('12845.6', 3) from dual;

   (10)、trunc:截斷:會取整數,第二個參數:保留的小數位

    如果沒有小數,並且第二個參數為正數:就原樣顯示,不會加上.00

    select trunc(123456.235243) from dual;

    select trunc(123456.235243,2) from dual;

    如果沒有小數,並且第二個參數為負數:會把整數位從後往前寫為0

    select trunc('123456', -3) from dual;

   (11)、concat:拼接字元串----->可代替||

    select concat('zhang','san') from dual;

    select concat('姓名是:',name) from teacher;

9、Oracle中的時間函數

  (1)、獲取當前的時間:sysdate

    select sysdate from dual;

  (2)、時間-時間,查詢的是指定日期距離某個日期的天數

    select sysdate-hire_date from teacher;  //查詢某天距離當前日期的天數

  (3)、add_months:對指定日期月份進行加減計算

    select add_months(sysdate,3) from dual;

     select add_months(sysdate,-3) from dual;

   (4)、months_between:指定日期距離當前日期的月份    

     select hire_date, sysdate, months_between(sysdate, hire_date) from teacher;

   (5)、next_day:查詢出指定日期和指定星期幾的日期:只能往後不能往前

      select next_day(sysdate, '星期一') from dual;

   (6)、last_day:查詢出當月的最後一天,查詢當月有多少天

      select last_day(sysdate) from dual;
      select t.hire_date, last_day(hire_date) from teacher t;

   (7)、日期字元串轉換函數,可在在日期型,字元串型和number型之間互轉

    to_date('2017-12-4 16:12:34','yyyy-MM-dd hh24:mi:ss');  可以把日期字元串轉換成日期型 

    to_date()函數可以將字元串轉換為日期類型

    to_date(char) //按預設格式進行解析

    to_date(char,‘format_model’) //按模式串指定的格式進行解析

    to_char()函數可以將日期型數值轉換為字元串形式

    to_char(date) //預設轉換為'dd-mon-yy'格式

    to_char(date,‘format_model’) //轉換為模式串指定的格式

    to_char(date,'yyyy');  //取到某個日期的年份

    to_char(date,'MM');  //取到某個日期的月份

    to_number(日期字元串);  //可以把日期字元串轉換成number型。

    註意:預設的日期格式是DD-MON-YY

    

 


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

-Advertisement-
Play Games
更多相關文章
  • 1. 效果圖預覽 2.基本功能 3.基本實現 1. 自定義屬性 2.基本方法 更多用法 詳見代碼,這裡就不全部粘貼了。 3.使用示例: 項目源碼下載 導入自己項目 How to How to How to To get a Git project into your build: To get a ...
  • 備註的大段文本,無法在圖片中體現, 思維導圖源文件放在附件中。使用 Xmind 8 製作。 附件:AndroidAnimation-xmind.zip ...
  • 1. Oracle是大型資料庫而Mysql是中小型資料庫,Oracle市場占有率達40%,Mysql只有20%左右,同時Mysql是開源的而Oracle價格非常高。 2. Oracle支持大併發,大訪問量,是OLTP最好的工具。 3. 安裝所用的空間差別也是很大的,Mysql安裝完後才152M而Or ...
  • 資料庫占用的存儲空間,從高層次來看,可以查看資料庫文件(數據文件,日誌文件)占用的存儲空間,從較細的粒度上來看,分為數據表,索引,分區占用的存儲空間。監控資料庫對象占用的硬碟空間,包括已分配,未分配,和未使用的空間占比,能夠有效地管控存儲空間,合理利用,避免部分文件空間不足,而其他文件浪費空間的問題 ...
  • [20170628]11g修改用戶名.txt--//昨天看了鏈接,提到修改用戶名:http://www.oratea.com/2017/06/26/oracle-11g%e4%bf%ae%e6%94%b9%e7%94%a8%e6%88%b7%e5%90%8d/--//自己也測試看看.1.環境:SCO ...
  • 本文翻譯自http://hadoop.apache.org/docs/r2.8.0/hadoop-yarn/hadoop-yarn-site/YARN.html 譯註:原文說得有些過於簡單的,並且有些混亂。 yarn由兩個部分的守護程式構成:資源管理、調度/監控。 這樣就要求有個全局資源管理器(re ...
  • Redis服務搭建及操作Redis 是一個高性能的key-value資料庫。 redis的出現,很大程度補償了memcached這類keyvalue存儲的不足,在部分場合可以對關係資料庫起到很好的補充作用。它提供了Python,Ruby,Erlang,PHP客戶端,使用很方便。 以下是安裝測試步驟: ...
  • MongoDB基本命令用法成功啟動MongoDB後,再打開一個命令行視窗輸入mongo,就可以進行資料庫的一些操作。輸入help可以看到基本操作命令:show dbs:顯示資料庫列表 show collections:顯示當前資料庫中的集合(類似關係資料庫中的表) show users:顯示用戶us ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...