2. 简单查询语句
1) 查询全部
SELECT * FROM 表名; 如:SELECT * FROM emp;
2) 查询表中记录数
SELECT COUNT(*) FROM 表名; 如:SELECT COUNT(*) FROM emp;
3) 查询指定列
SELECT 列名FROM 表名;
如:SELECT emono,ename,job FROM emp;
4) 为列起别名
SELECT 列名 别名FROM 表名;(注意,有四则运算时,其别名不要用中文)
如:SELECT emono 编号,ename 姓名,job 工作 FROM emp;
5) 去掉重复项
SELECT {DISTINCT} *|列名 别名
FROM 表名;
如:SELECT DISTINCT job FROM emp;
6) 字符串连接
固定信息要用“’”括起来,字符串间用“||”连接
如:SELECT ‘编号是:’ ||emono|| ‘姓名是:‘ ||ename|| ‘工作是:‘ ||job FROM emp;
7) 四则运算
支持加减乘除,先乘除后加减
如求出每个雇员的姓名和年薪: SELECT ename,sal*12 FROM emp;
Sal*12 的意义不明确,可以为这个运算起一个别名,但是此时一定要回避中文
如: SELECT ename,sal*12 income FROM emp;
3. 限定查询WHERE
1) 最基本的限定查询
SELECT DISTINCT *|列名 别名 FROM 表名
{WHERE 条件(s)}
如:SELECT * FROM emp WHERE sal>1500;
2) IS (NOT) NULL
如查询每月可以得到奖金的雇员信息:SELECT * FROM emp WHERE comm IS NOT NULL;
如查询没有奖金的雇员:SELECT * FROM emp WHERE comm IS NULL;
3) AND和 OR和NOT
同时满足两个条件用AND连接
如查询工资大于1500且每月可以得到奖金的雇员信息: SELECT * FROM emp WHERE sal>1500 AND comm IS NOT NULL; 满足一个条件即可的用OR连接
如查询工资大于1500或者每月可以得到奖金的雇员信息: SELECT * FROM emp WHERE sal>1500 OR comm IS NOT NULL;
用NOT取反
如查询工资不大于1500且每月不可以得到奖金的雇员信息(相当于整体的条件取反): SELECT * FROM emp WHERE NOT(sal>1500 AND comm IS NOT NULL);
4) 指定范围BETWEEN
字段 BETWEEN 最小值 AND 最大值,等价于:字段>=最小值 AND字段<=最大值
如查询工资大于1500且小于3000的员工信息:
SELECT * FROM emp WHERE sal BETWEEN 1500 AND 3000; 如查询在1981年雇佣的员工信息,即在1981年1月1日~1981年12月31日之间雇佣的雇员,注意日期表示的时候要加“’”:
SELECT * FROM emp
WHERE hiredate BETWEEN ’1-1月 -81’ AND ’31-12月 -81’;
5) 范围查询IN
字段 (NOT) IN(值1,值2,……,值n)
如查询雇员编号是7369、7499、7521的员工信息: SELECT * FROM emp WHERE empno IN (7369,7499,7521); 如果在制定的查询范围中指定了额外的内容,不影响程序运行
如SELECT * FROM emp WHERE ename IN (‘SMITH’ , ’ALLEN’ , ’KING’ , ’#$#$#$#$’ );
6) 模糊查询LIKE
两种通配符:
%:可以匹配任意长度的内容 _:可以匹配一个长度的内容
如查询雇员姓名中第二个字母是M的员工信息: SELECT * FROM emp WHERE ename LIKE ‘_M%’;
如查询雇员姓名中包含M的员工信息(即可以在任意的位置上出现M): SELECT * FROM emp WHERE ename LIKE ‘%M%’;
如查询1981年雇佣的员工信息:
SELECT * FROM emp WHERE hiredate LIKE ‘?%’; 如查询工资中包含6的员工信息:
SELECT * FROM emp WHERE sal LIKE ‘%6%’;
7) 比较计算符号
在操作条件中可以使用:>、>=、=、<、<= 不等于符号有两种:<>或者!=
如查询固原编号不是7369的员工信息: SELECT * FROM emp WHERE empno <>7369; SELECT * FROM emp WHERE empno !=7369;
4. 对结果进行排序ORDER BY
SELECT DISTINCT *|列名 别名 FROM 表名
{WHERE 条件(s)}
{ORDER BY 排序的字段1,排序的字段2 ASC|DESC}
ASC升序、DESC降序,默认是升序
如查询按工资降序排列员工信息: SELECT * FROM emp ORDER BY sal DESC;
如查询10部门的所有雇员信息,按照工资高低排序,如果工资相等,按照雇用日期从早到晚排序:
SELECT * FROM emp
WHERE deptno=10 ORDER BY sal DESC,hiredate ASC;
5. 单行函数
function_name(column|expression,[arg1,arg2,…]) 参数说明:function_name:函数名称
column:数据库列名
expression:字符串或计算表达式 arg1,arg2:在函数中使用参数
1) 字符函数
接受字符输入并返回字符或数值 a) 小写变大写UPPER()
如:SELECT UPPER(‘smith’) FROM dual;
如用户查找时不会考虑姓名是大写还是小写,所以在查询语句中为了方便就可以使用upper函数:
SELECT* FROM emp WHERE ename = UPPER(‘Smith’) ;
b) 大写变小写LOWER()
如:SELECT LOWER (‘HELLO WORLD’) FROM dual; c) 首字母大写INITCAP()
如:SELECT INITCAP (‘HELLO WORLD’) FROM dual; 如将雇员表中的雇员姓名变为首字母大写: SELECT INITCAP (ename) FROM emp; d) 字符串连接CONCAT()
但是此种方式不如||好用
如:SELECT CONCAT (‘hello’,’world’) FROM dual; e) 字符串截取SUBSTR() f) 字符串长度LENGTH() g) 字符串替换REPLACE()
如:SELECT SUBSTR(‘hello’,1,3) 截取字符串,
LENGTH(‘hello’) 字符串长度, REPLACE(‘hello’, ’l’, ’x’) 字符串替换
FROM dual;
截取点从0和1都是一样的
如已显示所有雇员的姓名及姓名的后三个字符(因为雇员姓名的字符喜欢长度不一样,只能求出整个的长度再减去2,进行截取):
SELECT ename, SUBSTR(ename,LENGTH(ename)-2) FROM emp; SUBSTR可以倒着截取,只要输入的位置是负数就表示倒着进行
SELECT ename, SUBSTR(ename,-3,3) FROM emp;
2) 数值函数
接受数值输入并返回数值 a) 四舍五入ROUND()
如执行四舍五入操作:
搜索“diyifanwen.net”或“第一范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,第一范文网,提供最新综合文库Oracle从头开始 (2)全文阅读和word下载服务。
相关推荐: