第一范文网 - 专业文章范例文档资料分享平台

Oracle从头开始 (2)

来源:用户分享 时间:2020-05-04 本文由不喜勿撩 分享 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

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下载服务。

Oracle从头开始 (2).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/wenku/995755.html(转载请注明文章来源)
热门推荐
Copyright © 2018-2022 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top