DQL(查询)
常用Select
-
查询所有列(不敢随便用)
select * from emp ;
-
查询指定列
select Ename,job from emp ;
-
算数运算
select ename ,sal ,comm , sal + comm , sal / 20 ,sal*12 from emp ;
-
连接符
-- 列与列连接 select empno ,ename ,empno || ename from emp ; -- 列与字符串的连接 select empno , ename , '职位:' || job from emp ;
-
Distinct 消除重复行
select distinct deptno from emp ; -- 查出所有当领导的职员编号 select distinct mgr from emp ;
-
列别名
-- 用途 ----重命名一个列; ----便于计算。 ----在列名和别名之间加入关键字 ‘as’ ,以防别名中有空格,并区分大小写。 -- 注意 ---- "别名" 英文双引号 select ename "员工列表" , sal "工资" , sal*12 "年薪" from emp ; select ename as "员工列表" , sal as "工资" , sal*12 as "年薪" from emp ;
特殊查询(此处了解即可)
-
查询表中行数(有多少条数据?)
select Count(*) from UserInfo ;
-
查询行编号和ID
select rowID , UserInfo , NickName, sex from UserInfo ; select rowNum , UserInfo , NickName, sex from UserInfo ;
-
查询分页数据(子查询)
-- 子查询 select * from (select rowNum , UserInfo , NickName, sex from UserInfo ) tmpUserInfo ;
-
Top N 查询
-- 查询第一页,每页2条 select * from (select rowNum , UserInfo , NickName, sex from UserInfo) tmpUserInfo where rowNum > 5 ;
Where 条件查询
字符和日期要包含在单引号中。
字符大小写敏感 , 日期格式敏感。
------------------------------------------------------------------- select * from emp ; -- eg1: 查询部门编号为30的所有员工信息 select * from emp where deptno = 30 ; -- eg1: 查询员工姓名为james的员工信息 select * from emp where ename = 'james'; select * from emp where ename = 'JAMES'; -- eg1: 查询入职日期为 1980-12-17 的员工信息 select * from emp where hiredate = '17-12月-80'; order by sal ; -- 按薪水排序 -- eg1:多条件 or select * from emp where deptno = 30 or sal > 2000 ; order by sal ;
子查询
分组查询 Group by
Order by 排序
Order by
------------------------------------------------------------------------ -- 排序 order by 默认为升序asc ; select * from emp order by sal ; -- 降序 select * from emp order by sal desc; -- 升序 select * from emp order by sal asc; -- 多列排序 select * from emp order by deptno desc , sal desc; -- 按照别名来排序 select empno , ename , sal*12 as annlsal from emp order by annlsal;
Dual表
dual表是一个虚拟表,用来构成select的语法规则,oeacle保证dual里面永远只有一条记录!
Describe 显示表结构
-
-- 显示表结构 describe UserInfo ; -- 简写 desc UserInfo ; desc emp ;