韩顺平Oracle笔记

发布 2021-05-11 23:47:28 阅读 5742

*如果scott把xiaoming权限收回,则xiaohong 权限也被撤销收回。

用户管理。使用profile管理用户。

账户锁定。创建profile文件。

sql-->create profile lock_account limit failed_login_attempts 3

password_lock_time 2;

账户解锁。sql-->alter user xiaoming account unlock;

终止口令(略)

表名、列名命名规则。

一:字母开头。

二:长度不超过30

三:不能使用oracle保留字。

四:只能使用以下字符a—z,a-z,0-9,$,#等。

oracle数据类型。

一:字符型。

char 定长字符不够空格补充好处:一个字段经常用且长度固定,则速度非常快,效率高。

varchar2 变长多少字符分配多少空间好处:节省空间。

clob 二:数字型。

number(5,2) 表示一个小数有5位有效数字,其中2位小数。

number(5)表示一个5位整数。

三:日期类型。

date四:**。

blob 存放**、声音

清空:clear

对表的操作。

查看表结构:desc 表名。

查询指定列:select 列名,列名 from 表名;

打开显示操作时间的开关:set timing on;

取消重复行:select distinct 列名,列名 from 表名;

select 语句大小写不区分传的值区分;

使用算术表达式。

算员工年薪。

select sal*12 from emp;

别名跟在列名后面如 ename “姓名” 双引号。

select ename "姓名",sal*13 "年工资" from emp;

处理null值:nvl函数

nvl(列名,0) 解释:如果为空就设置为0。

两个条件之间用 and

使用like操作符。

一:显示员工姓名首字母为s 的所有员工。

select ename,sal from emp where ename like 's%';单引号。

二:显示员工姓名第三个字符为o的所有员工。

select ename,sal from emp where ename like '_o%';注:两根下划线

代表占据前两个字符,后面跟要查找的第三个字符o

在where条件中使用in

select * from emp where empno in(123,234,345) 使用的是批量处理的方式。

使用逻辑操作符号。

如:查询工资高于500或是岗位为manager的员工,同时还要满足他们的姓

名首字母为大写的j

select * from emp where ename like'j%' and (sal>500 or job='manager');

使用order by

一:按工资从低到高顺序。

select * from emp order by sal asc; (默认asc,可不用写)

按工资从高到低顺序。

select * from emp order by sal desc;

二:按部门编号升序,工资降序排列。

select * from emp order by deptno ,sal desc;

oracle表复杂查询。

数据分组:max,min,**g,sum,count

显示员工中最高工资和最低工资。

select max(sal),min(sal) from emp;

显示工资最高的员工名字。

select ename,sal from emp where sal=(select max(sal) from emp);

显示工资高于平均工资的员工。

select * from emp where sal>( select **g(sal) from emp);

group by 和 h**ing 字句。

显示每个部门的平均工资和最高工资。

select **g(sal),max(sal) from emp group by deptno;

显示每个部门每种岗位的平均工资和最低工资。

select **g(sal),max(sal),deptno,job from emp group by deptno,job; 未实现。

显示平均工资低于2000的部门号和他的平均工资。

select **g(sal),max(sal),deptno from emp group by deptno h**ing **g(sal)>2000;

总结:1.分组函数只能出现在选择列表、h**ing、order by 子句中。

2.如果在select语句中同时包含group by 、h**ing、order by 那么他们。

的顺序只能是group by ,h**ing ,order by

3.在选择列表中如果有列、表达式、和分组函数,那么这些列和表达式必。

须有一个出现在group by 字句中,否则就会出错。

案例:select **g(sal),max(sal),deptno from emp group by deptno h**ing **g(sal)>2000 order by deptno;

多表查询。笛卡尔集。

规定:多表查询的条件是至少不能少于表的个数-1

显示员工名,工资,及所在部门名字。

select from emp a1,dept a2 where

显示员工号为10的部门名称,员工名和工资。

select from dept a1,emp a2 where and

显示员工姓名,工资,及工资的级别。

select from emp a1,salgrade a2 where between and

显示员工名,工资及所在部门的名字,并按部门排序。

select from emp a1,dept a2 where order by

自连接。显示某个员工上级领导的姓名。

select from emp worker,emp boss where and 'ford';

数据库执行sql是从左到右

子查询。单行子查询。

显示与smith同一部门的所有员工分步写。

deptno from emp where ename='smith';

* from emp where deptno =(select deptno from emp where ename='smith');

多行子查询。

查询和部门10工作相同的员工的名字、岗位、工资、部门号。

distinct job from emp where deptno = 10;

* from emp where job in (select distinct job from emp where deptno = 10);

all操作符。

显示工资比部门30的所有员工的工资高的员工的姓名,工资,部门号。

方法一:sal from emp where deptno=30;

* from emp where sal > all (select sal from emp where deptno=30);

方法二:(效率高)

select * from emp where sal > select max(sal) from emp where deptno = 30);

any操作符。

显示工资比部门30的任意一个员工的工资高的员工的姓名,工资,部门号。

* from emp where sal > any (select sal from emp where deptno=30);

* from emp where sal > select min(sal) from emp where deptno = 30);

多列子查询。

查询雨smith 的部门和岗位完全相同的所有员工。

deptno,job from emp where ename=’smith’;

* from emp where(deptno,job)=(select deptno,job from emp where ename='smith');

分页查询。oracle分页一共有三种。

分页 select a1.*,rownum rn from (select * from emp) a1;

显示前十行。

select a1.*,rownum rn from (select * from emp) a1 where rn<=10;

显示六到十行。

select* from ( select a1.*,rownum rn from (select * from emp) a1 where rownum<=10) where rownum>=6;

rn:行号。

按员工id号升序取出。

第十一讲20分钟。

韩顺平oracle笔记

disc 退出命令 conn连接命令 passw 用户修改用户密码需要sys system登录。show user 显示当前用户 exit断开与数据库的连接 start和 运行sql脚本如start d edit 编辑指定的文本 edit d spool 可以将sql plus屏幕上的内容输出到指定...

韩顺平Oracle笔记

将登陆的角色给某个用户。grant connect to xiaosi 授予用户在任意表空间建表的权限。grant resource to xiaosi 授予用户对某些用户下某个表操作的权限,分为select,insert,update,delete,all,create index 要在授权用户的...

oracle笔记

1 查看表的结构 desc tabledescription 2 set timing on 打开操作表的时间记录。3 消除重复行 distinct 4 大小写不区分的是列名,而不是里面的数据。1 可以对某一列直接进行加减乘除。两列相加。2 如果有一列为null,所得结果也为空。使用nvl函数处理n...