針對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
  • 前言 在我們開發過程中基本上不可或缺的用到一些敏感機密數據,比如SQL伺服器的連接串或者是OAuth2的Secret等,這些敏感數據在代碼中是不太安全的,我們不應該在源代碼中存儲密碼和其他的敏感數據,一種推薦的方式是通過Asp.Net Core的機密管理器。 機密管理器 在 ASP.NET Core ...
  • 新改進提供的Taurus Rpc 功能,可以簡化微服務間的調用,同時可以不用再手動輸出模塊名稱,或調用路徑,包括負載均衡,這一切,由框架實現並提供了。新的Taurus Rpc 功能,將使得服務間的調用,更加輕鬆、簡約、高效。 ...
  • 順序棧的介面程式 目錄順序棧的介面程式頭文件創建順序棧入棧出棧利用棧將10進位轉16進位數驗證 頭文件 #include <stdio.h> #include <stdbool.h> #include <stdlib.h> 創建順序棧 // 指的是順序棧中的元素的數據類型,用戶可以根據需要進行修改 ...
  • 前言 整理這個官方翻譯的系列,原因是網上大部分的 tomcat 版本比較舊,此版本為 v11 最新的版本。 開源項目 從零手寫實現 tomcat minicat 別稱【嗅虎】心有猛虎,輕嗅薔薇。 系列文章 web server apache tomcat11-01-官方文檔入門介紹 web serv ...
  • C總結與剖析:關鍵字篇 -- <<C語言深度解剖>> 目錄C總結與剖析:關鍵字篇 -- <<C語言深度解剖>>程式的本質:二進位文件變數1.變數:記憶體上的某個位置開闢的空間2.變數的初始化3.為什麼要有變數4.局部變數與全局變數5.變數的大小由類型決定6.任何一個變數,記憶體賦值都是從低地址開始往高地 ...
  • 如果讓你來做一個有狀態流式應用的故障恢復,你會如何來做呢? 單機和多機會遇到什麼不同的問題? Flink Checkpoint 是做什麼用的?原理是什麼? ...
  • C++ 多級繼承 多級繼承是一種面向對象編程(OOP)特性,允許一個類從多個基類繼承屬性和方法。它使代碼更易於組織和維護,並促進代碼重用。 多級繼承的語法 在 C++ 中,使用 : 符號來指定繼承關係。多級繼承的語法如下: class DerivedClass : public BaseClass1 ...
  • 前言 什麼是SpringCloud? Spring Cloud 是一系列框架的有序集合,它利用 Spring Boot 的開發便利性簡化了分散式系統的開發,比如服務註冊、服務發現、網關、路由、鏈路追蹤等。Spring Cloud 並不是重覆造輪子,而是將市面上開發得比較好的模塊集成進去,進行封裝,從 ...
  • class_template 類模板和函數模板的定義和使用類似,我們已經進行了介紹。有時,有兩個或多個類,其功能是相同的,僅僅是數據類型不同。類模板用於實現類所需數據的類型參數化 template<class NameType, class AgeType> class Person { publi ...
  • 目錄system v IPC簡介共用記憶體需要用到的函數介面shmget函數--獲取對象IDshmat函數--獲得映射空間shmctl函數--釋放資源共用記憶體實現思路註意 system v IPC簡介 消息隊列、共用記憶體和信號量統稱為system v IPC(進程間通信機制),V是羅馬數字5,是UNI ...