SQL查詢

ORACLE...


SQL登錄

conn scott/tiger ;


SQL簡單查詢

SELECT[DISTINCT] * | 列名稱[別名],列名稱[別名],... FROM 表名稱[別名];  
SELECT * FROM emp;    查詢全部
SELECT empno,ename,job,sal FROM emp;     查詢部分
SELECT DISTINCT job FROM emp;    消除重複內容,如是多個列,則多個列全相同才能消除
SELECT empno,ename,sal*12 income FROM emp;    查詢可以進行四則運算,定義別名
SELECT '僱員',empno,ename FROM emp;    查詢可以設置常量'字符串',20,日期:日-月-年
SELECT empno||ename FROM emp;       ||表示合併

SQL限定查詢

SELECT[DISTINCT] * | 列名稱[別名],列名稱[別名],... FROM 表名稱[別名] [WHERE 過濾條件(s)];  

關係運算符:>、<、>=、<=、<>(!=);

邏輯運算符:AND、OR、NOT;

範圍運算符:BETWEEN...AND;

謂詞範圍:IN、NOT IN;

空判斷:IS NULL、IS NOT NULL;

模糊查詢:LIKE。

SELECT * FROM emp WHERE sal>1500;
SELECT * FROM emp WHERE ename='SMITH';  數據區分大小寫
SELECT * FROM emp WHERE sal>=1500 AND sal<=3000; 匹配兩個條件
SELECT * FROM emp WHERE sal>2000 OR job='CLERK';
SELECT * FROM emp WHERE NOT sal>=2000;
BETWEEN 最小值(數字、日期) AND 最大值;(均爲包含最小與最大)
SELECT * FROM emp WHERE sal BETWEEN 1500 AND 2000; 匹配一個條件
SELECT * FROM emp WHERE hiredate BETWEEN '01-1月-81' AND '31-12月-81';
空不能用關係運算符完成
SELECT * FROM emp WHERE comm IS NOT NULL;
SELECT * FROM emp WHERE NOT comm IS NULL;
IN操作符是給出一個指定的可選範圍
SELECT * FROM emp WHERE empno IN (7369,7566,7788,9999,NULL);    範圍內有NULL沒有影響
SELECT * FROM emp WHERE empno NOT IN (7369,7566,7788,9999,NULL);    範圍內有NULL不能查詢    
SELECT * FROM emp WHERE NOT empno IN (7369,7566,7788,9999);
SELECT * FROM emp WHERE sal>2000 OR job='CLERK';
SELECT * FROM emp WHERE NOT sal>=2000;
LIKE通配符

”_“:匹配任意的一位字符;

”%“:匹配任意的零位、一位或多位字符。

SELECT * FROM emp WHERE ename LIKE 'A%'; 以字母A開頭的僱員信息
SELECT * FROM emp WHERE ename LIKE '_A%'; 姓名第二個字母爲A的僱員信息
SELECT * FROM emp WHERE ename LIKE '%A%'; 姓名包含字母爲A的僱員信息

·LIKE 不僅僅可以查詢字符串,也可查詢各種數據類型;

·使用LIKE如不設置關鍵字,則表示查詢全部。


查詢排序

SELECT[DISTINCT] * | 列名稱[別名],列名稱[別名],... FROM 表名稱[別名] [WHERE 過濾條件(s)][ORDER BY 字段[ASC|DESC],字段[ASC|DESC],...];  

ASC:(默認),按照升序的方式排列;

DESC:按照降序的方式排列。

SELECT * FROM emp ORDER BY sal DESC;
SELECT * FROM emp WHERE job='SALESMAN' ORDER BY sal DESC; 一個字段排序
SELECT * FROM emp ORDER BY sal DESC,hiredate ASC; 多個字段排序
SELECT empno,ename,sal*12 income FROM emp ORDER BY income; 可以按照SELECT別名排序

練習

select ename,empno,deptno from emp where job='CLERK';
select * from emp where comm>sal*0.6;
select * from emp where (deptno=10 AND job='MANAGER') OR (deptno=20 AND job='CLERK');
select * from emp where (deptno=10 AND job='MANAGER') OR (deptno=20 AND job='CLERK') OR (job NOT IN ('MANAGER','CLERK') AND sal>=2000);
SELECT DISTINCT job FROM emp WHERE comm IS NOT NULL;
select * from emp where comm is null or comm <100;
select ename from emp where ename not like '%R%';
select * from emp where ename like '%A%' order by sal desc,hiredate asc,job asc;


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章