Oracle从头开始 (2)

不喜勿撩 分享 2020-05-04 下载文档

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()

如执行四舍五入操作:


Oracle从头开始 (2).doc 将本文的Word文档下载到电脑

下一篇:云南省弥勒一中2016-2017学年高一上学期月考(三)数学试题Word版含答案

相关推荐
相关阅读
本类排行
× 游客快捷下载通道(下载后可以自由复制和排版)

下载本文档需要支付 7 元

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:xxxxxx QQ:xxxxxx