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