oracle笔记 2

发布 2021-05-11 22:38:28 阅读 9141

1.口令历史。

createprofilepassword_historylimitpassword_life_time10password_grace_time2password_reuse_time10;--password_reuse_time为指令口令可重用时间即10天后就可以重用。

删除profile

1)drop profile password_history [cascade]表名和列的命名规则(1)必须以字母开头。

2)长度不能超过30字符(3)不能使用oracle的保留字。

4)只能使用如下字符a-z,a-z,0-9,$,#等oracle支持的数据类型字符型。

1)char定长最大符。

2)varchar2(20)变长最大符。

3)clob(character large objiect)字符型大对象最大4g

数字型。1)number范围-10的38次方~10的38次方例:number(5,2)表示一个小数有5

位有效数,2位小数;number(5)表示一个五位整数日期类型(1)date

**类型。1)blob二进制数据可存放声音等。

建表。1)create table表名(列名数据类型(长度),列名数据类型(长度));例:create table student(xh number(4),xm varchar2(20));添加字段。

1)alter table表名add (字段类型(长度));修改字段。

1)alter table表名modify (字段类型(长度));删除字段。

1)alter table表名drop column字段;修改表的名字。

1)rename表名to新表名删除表。

drop table表名向表中添加数据。

1)insert into表名values(值‘,‘值‘);

oracle中默认的日期格式‘dd-mon-yy‘修改日期的默认格式。

alter session set nls_date_format =yyyy-mm-dd‘;(2)插入部分字段。

insert into表名(列,列) values (值‘,‘值‘);3)插入空值。

insert into表名(列,列) values (值‘,null);

查询为空的数据:select * from表名where字段is null;

查询为不空的数据:select * from表名where字段is not null;

修改数据。1)改一个字段: update表名set字段=‘值‘where字段=‘值‘;

2)改多个字段: update表名set字段=‘值‘,字段=‘值‘where字段=‘值‘;(3)修改含有null值的数据:update表名set字段is null where字段=‘值‘;删除数据。

1)delete from表名—表结构还在,写日志,可以恢复,速度慢(2)drop table表名–-删除表结构he‘ve数据。

3)truncate table表名—删除表中所有记录,表结构还在,不写日志,无法找回删除的记。

录,速度快查询。

1)查看表结构:desc表名;

2)查询所有列:select * from表名;--速度慢,少用(3)查询指定列:select列,列from表名;

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

5)疯狂复制:insert into表名(列,列) select * from表名;(6)算数表达式:select sal*12 from emp;

7)列的别名:select ename―姓名‖,sal*12 as―年收入‖from表名;

8)处理null值:使用nvl函数处理:select sal*13+nvl(comm.

,0)*13―年工资‖from emp;(9)连接字符串(||select ename ||is a‘||job from emp;(10)使用where子句:select ename,sal from emp where sal>3000;(11)使用like操作符:%:

表示任意0到多个字符。

:表示任意单个字符。

例:select ename,sal from emp where ename likes%‘;select ename,sal from emp where ename like__o%‘

12)在where中使用in:select * from emp where empno in(123,124);

13)使用逻辑操作符:select * from emp where (sal>500 or job=‘manager‘) and ename likej%‘;

14)order by字句:select * from emp order by sal;--默认升序(asc)降序是desc先升后降:select * from emp order by deptno asc,sal desc;使用列的别名排序:

select ename,sal*12―年薪‖from emp order by―年薪‖asc;--别名需要用“”圈中复杂查询。

1)数据分组:max,min,**g,sum,count : select max(sal),min(sal) from emp;--查询列中必须都是。

分组函数,且分组函数不能出现在where字句中。

2)groupby字句:用于对查询的结果分组统计(分组字段必须出现在查询列中):select

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

select **g(sal),min(sal) deptno,job from emp group by deptno,job;--显示每个部门的每种岗位的平均工资和最低工资h**ing字句。

1)显示平均工资低于2000的部门号和它的平均工资:selectdeptno,**g(sal)fromempgroup

by deptno h**ing **g(sal)>2000;

对数据分组的总结。

1)分组函数只能出现在选择列表,h**ing,order by字句中。

2)如果select语句中同时包含有groupby,h**ing,orderby那么他们的顺序是group

by ,h**ing,order by

3)在选择列中如果有列,表达式,和分组函数,那么这些列和表达式必须有一个出现在。

group by字句中,否则就会出错多表查询。

1)显示雇员名,雇员工资及所在部门的名字[笛卡尔积]:

from emp a1,dept a2 where 多表查询的条件是:至少不能少于“表的个数-1”

2)显示各个员工的姓名,工资,及工资的级别:

a1,salgrade a2 where between and

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

worker,emp boss where and 子查询。

1)单行子查询:如何显示与smith同一部门的所有员工?select*fromempwhere

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

2)多行子查询:如何查询和部门10的工作相同的雇员的名字,岗位,工资,部门号?

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

3)在多行子查询中使用all操作符:如何显示工资比部门30的所有员工的工资高的员。

工的姓名,工资和部门号?selectename,sal,deptfromempwheresal>all(selectsalfrom emp where deptno=30);或select * from emp where sal>(select max(sal) from empwhere dempno=30);

4)在多行子查询中使用any操作符:如何显示工资比部门30的任意一个员工的工资高。

的员工的姓名,工资和部门号:select ename,sal,dept from emp where sal > any (selectsalfromempwheredeptno=30);或select*fromempwheresal>(selectmin(sal)fromemp where dempno=30);

5)多列子查询:如何查询与smith的部门和岗位完全相同的所有雇员?select * from emp

where (deptno,job)=(select deptno,job from dept where ename=‘smith‘);

6)在from子句中使用子查询(内嵌视图):如何显示高于自己部门平均工资的员工的信。

息? from emp group by deptno) a1 where and >在from子句中使用子查询时,必须给子查询指定别名,别名中不能使用as(7)分页查询(3种)rowid,分析函数,rownum

1)rownum分页:(select * from emp)

2)显示rownum[oracle分配的]: select a1.*,rownum rn from (select * from emp) a1;(3)select*from(selecta1.

*,rownumrnfrom(select*fromemp)a1where

rownum<=10) where rn>=6;

4)几个查询变化:(1)指定查询列,只需修改最里层的子查询(2)如何排序,只需修改。

最里层的子查询。

5)用查询结果创建新表:createtablemytable(id,name,sal,job,deptno)asselect

empno,ename,sal,job,deptno from emp;(6)合并查询。

1)union:取并集,去掉结果集中重复行:selectename,sal,jobfromempwhere

sal>2500 union select ename ,sal,job from emp where job=‘manager‘;(2)union all不取消重复行,不会排序(3)intersect取交集(4)minus取差集。

创建数据库。

1)通过oracle提供的向导工具(2)用手工步骤直接创建。

使用to_date函数:转换成想要的日期格式。

oracle学习笔记 2

学习笔记 2 终于搞清楚那个是企业管理器 oem oracle enterprise manager sqlplus 可以在命令行,也可以在ie浏览器中。sys只能以sysdba的身份登陆。数据库的启动 startup的过程 启动实例,打开控制文件,打开数据文件。关闭数据库。shutdown 正常关...

oracle第3讲笔记 2

j a如何连接和操作oracle数据库。原理图。实现 我们在eclipse中,编写一个j a程序,完成对emp表的crud操作。j a连接oracle有两种方式。直连。jdbc原理。做jdbc开发有两个前提。1.import 有时 2.把导入到你的j a项目里。特别说明 如果使用jdbc直连,需要启...

oracle笔记

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