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;