day02: SQL_DML, oracle中sql的各种查询
1、oraclesql的特性
pLsql顯示: 修改顯示的格式 SQL> set pagesize 300; SQL> set linesize 300; SQL> select ename,sal,job,hiredate from emp; //查詢結構字母左對齊,數字有對齊SQL> select ename,sal,job,sal+100 from emp; //查詢支持運算符 SQL> select ename,sal,job,(sal+100)*12 from emp; //運算優先級 SQL> select ename,sal,job,comm from emp; //查看空值 SQL> select ename,sal,sal+100 as newsal from emp; //列別名,可加雙引號保持原樣 SQL> select ename||sal from emp; //連接運算符SQL> select ename||'''s sal is'||sal from emp; //使用字面字符串 SQL> select ename||q'['s sal is ]' || sal from emp;SQL> select DISTINCT job from emp; //去重重復的行//在sqlplus 中執行操作系統命令 SQL> !clear //清屏 SQL> host clear2、簡單查詢
語法: SELECT [DISTINCT]*| 字段 [別名][,字段 [別名]] FROM 表名稱 [表別名] eg: SQL> select * from dept; //查詢部門表的全部記錄 SQL> select empno,ename,sal from emp; //拆卸每個員工的編號、姓名、基本工資SQL> select job from emp; //查詢每個員工的職位 SQL> select distinct job from emp; //用distinct去重職位SQL> select distinct ename,job from emp; //查詢每個員工的姓名、職位四則運算: SQL> select ename,job,sal*12 from emp; //查詢員工姓名、職位、基本年薪 SQL> select ename,job,sal*12 income from emp; //用別名顯示 SQL> select ename,job,(sal+300)*12 income from emp; //每個員工每月200飯補、100車補計算年薪 SQL> select ename,job,(sal+300)*12+sal income from emp; //年底多發一個月基本工資 SQL> select empno||','||ename from emp; //使用||連接符3、限定查詢
語法: SELECT [DISTINCT]*| 字段 [別名][字段 [別名]] FROM 表名稱 [表別名] [WHERE 條件(s)]條件: >,>=,<,<=,!=(<>), BETWEEN...AND...,LIKE,IN,IS NULL,AND,OR,NOT ***:在oracle中,數據區分大小寫1)關系運算SQL> select * from emp where sal>1500; //查詢基本工資高于1500的員工 SQL> select * from emp where job='CLERK'; //查詢所有職位是辦事員的員工#查詢工資在1500——3000之間的全部員工 SQL> select * from emp where sal>=1500 and sal<=3000; SQL> select * from emp where sal between 1500 and 3000; SQL> select * from emp where sal>1500 and sal<3000;SQL> select * from emp where job='CLERK' or job='SALESMAN'; //查詢員工職位是辦事員或銷售#查詢員工職位是辦事員或銷售的信息,并這些員工工資大于1200; SQL> select * from emp where (job='CLERK' or job='SALESMAN') and sal>1200; SQL> select * from emp where job='CLERK' or job='SALESMAN' and sal >1200;#查詢所有不是辦事員的員工 SQL> select * from emp where job<>'CLESRK'; SQL> select * from emp where job != 'CLERK'; SQL> select * from emp where not job='CLERK'; 2)范圍判定 BETWEEN 最小值 AND 最大值 SQL> select * from emp where sal between 1500 and 3000; //查詢工資在1500-3000之間的員工 SQL> select * from emp where not sal between 1500 and 3000; //工資不在1500-3000之間的員工3)判斷范圍 IS(NOT) NULL,空值不是數字0或者空子字符#查詢所有領獎金的員工信息 SQL> select * from emp where comm is not null; SQL> select * from emp where not comm is null;SQL> select * from emp where comm is null; //查詢所有不領獎金的員工4)指定范圍的判斷 IN 操作符表示指定一個范圍//查詢員工編號為7369,7566,7799的信息 SQL> select * from emp where empno=7369 or empno=7566 or empno=7799; 使用IN SQL> select * from emp where empno in (7369,7566,7799); 使用NOT IN:表示不再指定范圍 select * from emp where empno not in (7369,7566,7799,null); 5)模糊查詢 LIKE子句 _ : 匹配單個字符 % :匹配任意多個字符 %% :標識查全部信息SQL> select * from emp where ename like 'A%'; //查詢員工名字以字母A開頭的信息 SQL> select * from emp where ename like '_A%'; //查詢員工名字中第二個字母是A的信息 SQL> select * from emp where ename not like '%A%'; //查詢員工明早不包含A的信息?
4、數據排序
語法: SELECT [DISTINCT]*| 字段 [別名][字段 [別名]] FROM 表名稱 [別名] [WHERE 條件(S)] [ORDER BY 字段 [ASC|DESC][字段 [ASC|DESC],...]]說明:該子句在所有的SQL語句最后可以指定多個排序的字段默認升序降序需要手工指定有需要的時候才進行排序查詢所有雇員的信息,按工資排序 select * from emp order by sal; select * from emp order by sal asc; 降序排列: SQL> select * from emp order by sal desc;查詢所有雇員信息,按照工資降序排列,工資相同,則按雇傭日期從早到晚排列 select * from emp order by sal desc,hiredate asc;?
5、單行函數
分類:
?? ?字符函數
?? ?數字函數
?? ?日期函數
?? ?轉換函數
?? ?通用函數??
字符函數:主要是進行字符串數據的操作
?? ?UPPER(字符串|列)?? ??? ?將輸入的字符串變為大寫返回
?? ?LOWER(字符串|列)?? ??? ?將輸入的字符串變為小寫返回
?? ?INITCAP(字符串|列)?? ??? ?開頭首字母大寫
?? ?LENGTH(字符串|列)?? ??? ?求出字符串長度
?? ?REPLACE(字符串|列)?? ??? ?進行替換
?? ?SUBSTR(字符串|列)?? ??? ?開始點[結束點],字符串截取
oracle提供一個虛擬表dual
#查詢轉大寫 SQL> select upper('hello') from dual; SQL> select * from emp where ename = upper('&str');#將查詢轉小寫 SQL> select lower(ename) from emp; //員工名字小寫顯示 SQL> select initcap(ename) from emp; //員工名字首寫字母大寫 SQL> select ename ,length(ename) from emp; //查詢每個員工名字長度 SQL> select ename,length(ename) from emp where length(ename)=5; //員工名字長度=5SQL> select replace(ename,'A','_') from emp; //字符'_' 替換員工名字有A的字符串截取有兩種方法:①SUBSTR (字符串|列,開始點),表示從開始點一直截取到結尾 SQL> select ename ,substr(ename,3) from emp;②SUBSTR(字符串|列,開始點,截取多少位),表示從開始點截取多少位 SQL> select ename,substr(ename,0,3) from emp; SQL> select ename,substr(ename,1,3) from emp;#要求截取員工名字的后三個字母( 通過長度-2 確定開始點): SQL> select ename,substr(ename,length(ename)-2) from emp;#設置負數,表示從后指定截取位置 SQL> select ename,substr(ename,-3) from emp;?
6? 數字函數
? ? ROUND(數字|列[,保留小數的范圍]):四舍五入的操作
?? ?TRUNC(數字|列[,保留小數的范圍]): 舍棄指定位置的內容
?? ?MOD(數字1,數字2):取模,取余數
7 日期函數
#取得今天的日期,可以使用“SYSDATE”
SQL> select sysdate from dual;日期的計算有以下幾種計算:
?? ?日期+數字=日期,表示若干天之后的日期
?? ?日期-數字=日期,表示若干天之前的日期
?? ?日期-日期=數字,表示兩個日期之間的天數,但是必須大日期減小日期
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
總結
以上是生活随笔為你收集整理的day02: SQL_DML, oracle中sql的各种查询的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: day01: oracle12C在Lin
- 下一篇: Windoes普通用户使用管理员下安装的