oracle简洁版怎么用 oracle入门很简单

oracle理论学习详解及各种简单操作例子怎么解决

1. 数据库的发展过程

让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:域名与空间、雅安服务器托管、营销软件、网站建设、温宿网站维护、网站推广。

层次模型 --网状模型 --关系模型 --对象关系模型

2. 关于数据库的概念

DB:数据库(存储信息的仓库)

DBMS:数据库管理系统(用于管理数据库的工具)

RDBMS:关系型数据库管理系统

ORDBMS:对象关系型的数据库管理系统

3. Oracle数据库的主要特点

1)支持多用户、大事务量的处理

2)数据库安全性和完整性控制

3)支持分布式数据处理

4)可移植性

4.Oracle一些常见问题?

1)如果我只有一张表,为什么我还要创建数据库?

SQL语言要求所有表都需放在数据库里。这项设计当然有它好的理由。SQL能控制多为用户同时访问表的行为。能够授予或撤销对整个数据库的访问权。这有时比控制每张表的权限要简单很多

2)创建库的命令的字母全是大写,一定要这样吗?

有些系统确实要求某些关键字采用大写形式。但SQL本身不区分大小写。也就是说,命令不大写也可以,但命令大写是良好的SQL编程惯例。

3)给数据库、表和列命名时有什么主意事项吗?

创建具有描述性的名称通常有不错的效果。有时候要多用几个单词来命名。所有名称都不能包含空格,所以使用下划线能够让你创建更具描述性的名称。命名时最好避免首字母大写,因为SQL不区分大小写。极有可能会搞错数据库。

4)为什么不能直接把BLOB当成所有文本值的类型?

因为这样很浪费空间。VARCHAR或CHAR只会占用特定空间。不会多于256字符。但BLOB需要很大的存储空间。随着数据库的增长,占用存储空间就是冒着耗尽硬盘空间的风险。另外,有些重要的字符串运算无法操作BLOB类型的数据。只能用于VARCHAR或CHAR。

5)为什么需要INT和DEC这类数值类型?

节省数据库存储空间和效率有关。为表的没列选择最合适的数据类型可以为表瘦身,还可以使数据操作更为快速。

5.Oracle关系数据库基础

1)主键:表中其中一列或几列的组合,其值能唯一标识表中每一行。

表中任何列都可以作为主键,但要满足如下条件:

任何两行都不具有相同的主键值

每个行都必须具有一个主键值(主键列不允许为null值)

主键列中的值不允许修改或更新

主键值不能重用(如果某行从表中删除,它的主键不能赋给以后的新行)

一般以id或uuid作为主键的名字

2)外键是什么:

在一个关系(参照表)中是主键,而另一个关系引用这个键。那么这个键在另一个关系中就是外键。

3)外建能干什么:

使两个关系(表)形成关联,外键只能引用参照表中的主键。保持数据一致性,完整性。

如图:

4)如何在数据库内表示一对一

5)如何在数据库内表示一对多

6)关系模型的完整性约束是什么?

是通过关系的某种约束条件对关系进行约束。也就是说关系的值随时间变化时应该满足一些约束条件。如年龄不能超过1000,性别必须是男或者女

7)关系模型的完整性约束能有什么?

实体完整性、参照完整性、用户自定义完整性。

实体完整性:针对基本关系而言,也就是一个二维表,主键不能为NULL

参照完整性:表之间存在关系,自然就存在关系的引用(外键),表和表之间的关系通过外键实现,外键可以为NULL或引用表的主键

用户自定义完整性:针对不同的需求定义自己的完整性约束,如不允许学生编号中出现非数字字符,性别必须是男或者女

6. Oracle自学笔记

1)数据库和表的名称不一定要大写。

2)列是存储在表中的一块数据,行是一组能够描述某个事物的列的集合。列和行构成了表。

3)创建oracle数据库。使用oracle自带的Database Configuration Assistant 来创建库

4)使用DBA身份 创建表空间。具体sql如下:

create tablespace pzw datafile 'C:/oracle/pzw.dbf' SIZE 1024M REUSE AUTOEXTEND OFF extent management local segment space

management auto;

5)删除用户命令

drop user pzw cascade;

6)删除表空间命令

DROP TABLESPACE pzw INCLUDING CONTENTS AND DATAFILES;

7 )查看表空间命令。

链接地址:查看oracle表空间的两种方式

8)创建用户。

create user pzw identified by pzw;

9)将包空间分配给用户

alter user pzw default tablespace pzw;

10)给用户授权

grant create session, create table, unlimited tablespace to pzw;

11)创建表

CREATE TABLE doughnut_list

(

doughnut_name VARCHAR(10),

doughnut_type VARCHAR(6),

doughnut_birthday DATE

);

12)删除表

DROP TABLE

doughnut_list;

13)给表中增加一列

Alter table EMP add sale number;

14)数据库插入一条数据

insert into DEPT_EMP_TABLE (DEPT_EMP_NO,emp_no,Dept_No,Joined_Date) values (009,'00002',1,to_date('2011-2-28 15:42:56','yyyy-mm-dd hh24:mi:ss'));

commit;

15)数据库修改一条数据

update emp set emp_name='张惠妹',age=20,sex='女',profession='流行歌手' where emp_no = '00002';

commit;

16)数据库删除一条数据

delete emp where emp_no = '000013';

commit;

17)查询全部数据

select * from emp;

18)创建视图

create view adress_view as select * from pzw.adress;

以下为oracle演示数据操作及练习题(对菜鸟及有用。使用scott 登陆。默认密码tiger)

1.查看演示数据的表。

select*fromtab

或者selecttable_namefromuser_tables;

2.查看表结构(plsql操作无效。使用命名提示符 可以操作)

desc dept;

3.查看员工姓名

select ENAMEfrom emp;

4.查询员工的编号和明星(sql语句不区分大小写)

select empno, enamefrom emp;

5.查询所有的字段

select*fromemp;

一般建议不使用*号,使用*号不明确,建议将相关的字段写到select语句的后面,使用*号的效率比较低

6.列出员工的编号,姓名和年薪。

select empno, ename,sal*12from emp;

select语句中可以使用运算符,以上存在一些问题,年薪的字段名称不太明确

7.将查询出来的字段显示为中文

select empnoas 员工编号, ename as 员工姓名, sal*12 as 年薪 from emp;

可以采用as命名别名,as可以省略

如:可以采用as命名别名,as可以省略

8.查询薪水等于5000的员工

select empno, ename, sal from emp where sal=5000;

如果是字符类型的数据进行比较的时候,是区分大小写的。

9.查询薪水不等于5000的员工

select empno, ename, sal from emp where sal5000;

10.查询工作岗位不等于manager的员工

select empno,ename,sal,job from emp where job

'manager';

在sql语句中如果是字符串采用单引号,引起来,不同于Java中采用双引号,如果是数值型也可以引起来,只不过是数值类型数据当成字符串来处理

11.查询薪水为1600到3000的员工(第一种方式,采用=和=)

select empno, ename, sal from emp where sal=1600 and sal=3000;

查询薪水为1600到3000的员工(第一种方式,采用between ...and...)

select empno,ename,sal,job from emp where salbetween

1600and 3000;

between ….and …,包含最大值和最小值

between ….and …,不仅仅可以应用在数值类型的数据上,还可以应用在字符数据类型上

between ….and …,对于两个参数的设定是有限制的,小的数在前,大的数在后

12.查询津贴为空的员工

select * from emp where commis null;

13.查询津贴不为空的员工

select * from emp where commis not null;

14.工作岗位为MANAGER,薪水大于2500的员工。

select empno, ename, sal from emp where job='MANAGER'and sal2500;

and表示并且的含义,表示所有的条件必须满足

15.查询出job为manager和job为salesman的员工。

select * from emp where job='MANAGER'or job='SALESMAN';

or,只要满足条件即可,相当于或者

16.查询薪水大于1800,并且部门编号为20 或者 30的

select * from emp where sal1800and (deptno=20or deptno=30);

17.查询出job为manager和job为salesman的员工

select * from emp where jobin('MANAGER','SALESMAN');

18.查询job不等于MANAGER并且不能与SALESMAN的员工(第一种写法)

select * from emp where job 'MANAGER' and job 'SALESMAN';

19 .查询job不等于MANAGER并且不能与SALESMAN的员工(第二种写法)

select * from emp where jobnot in('MANAGER','SALESMAN');

20.查询以M开头的所有员工

select * from emp where ename like 'M %';

21.查询以T结尾的所有员工

select * from emp where ename like '%T';

22.查询以O结尾的所有员工

select * from emp where ename like '%O%';

23.查询姓名中第一个字符为A的所有员工

select * from emp where ename like '_A%';

Like可以实现模糊查询,like支持%和下划线匹配

Like中%和下划线的差别?

%匹配任意字符出现任意次数

下划线只匹配一个任意字符出现一次

Like语句是可以应用在数值类型的数据上的,但是如果没有使用引号括起来的话,那么不能使用%和下划线。类似于等号的操作,如果使用引号括起来的话,那么可以使用%和下划线,将数值类型的数据转换为字符类型后进行处理。

24.按照薪水由小到大排序

s elect * from emporder by sal;

如果存在where子句那么order by必须放到where语句的后面

25.手动指定按照薪水由小到大排序

select * from emp order by saldesc;

26. 按照薪水和姓名排序

select * from emp order by sal desc ,ename desc;

如果采用多个字段排序,如果根据第一个字段排序重复了,会根据第二个字段排序

select * from emp order by sal asc;

26.手动指定按照薪水由大到小排序

select * from emporder by sal desc;

27.按照薪水升序(使用字段的位置来排序)

select * from emp order by 6;

不建议使用此种方式,采用数字含义不明确,程序不健壮

28.查询员工.将员工姓名全部转换成小写。

select lower(ename)from emp;

29.查询job为manager的员工

select * from emp where job=upper('manager');

30.查询姓名以M开头所有的员工

select * from emp wheresubstr(ename, 1,1)='M';

方法的第二个参数表示的是查询字符的位置,0,1都表示第一个字符,负数表示从结尾开始的位置,第三个参数表示截取字符串的长度。

31.取得员工姓名的长度

select length(ename) from emp;

32.取得工作岗位为MANAGER的所有员工

select * from emp where job=trim('MANAGER ');

trim会去首尾空格,不会去除中间的空格

33.查询1986-02-20入职的员工(第一种方法,与数据库的格式匹配上)

select * from emp where HIREDATE='20-2月 -81';

查询1982-02-20入职的员工(第二种方法,将字符串转换成date类型)

select * from emp where hiredate=to_date('1981-02-20 00:00:00', 'YYYY-MM-DD HH24:MI:SS');

to_date可以将字符串转换成日期,具体格式to_date(字符串,匹配格式)

34.查询1981- 02-30以后入职的员工,将入职日期格式为yyyy-mm-dd hh:mm:ss

select empno, ename,to_char(hiredate,'yyyy-mm-dd hh24:mi:ss')from emp where hiredateto_date('1981-02-2000:00:00', 'YYYY-MM-DD HH24:MI:SS');

35.查询员工薪水加入前分位

select empno, ename, to_char(sal, '$999,999') from emp;

36.查询薪水加入千分位和保留两位小数

select empno, ename, to_char(sal, '$999,999.00') fromemp;

将数字转换成字符串,格式

控制符

说明

9

表示一位数字

位数不够可以补零

$

美元符

L

本地货币符号

.

显示小数

,

显示千分位

37.将字符串转换成数值

select * from emp where salto_number('1,500','999,999');

38.取得员工的全部薪水,薪水+津贴

select empno, ename, sal, comm, sal+nvl(comm,0) fromemp;

39.如果job为MANAGER薪水上涨10%,如果job为SALESMAN工资上涨50%(case … when … then …end)

select empno, ename, job, sal, (casejobwhen 'MANAGER' thensal*1.1when 'SALESMAN' thensal*1.5end)as newsal from emp;

40.如果job为MANAGER薪水上涨10%,如果job为SALESMAN工资上涨50%(decode)

select empno, ename, job, sal, decode(job,'MANAGER', SAL*1.1, 'SALESMAN',sal*1.5) as newsal from emp;

41.四舍五入

select round(1234567.4567, 2) from dual;

Dual是oracle提供的,主要为了方便使用,因为select的时候需要用from

42.聚合函数

count

取得记录数

sum

求和

Avg

取平均

Max

取最大的数

min

取最小的数

43.取得所有员工人数

select count(*) from emp;

Count(*)表示取得所有记录,忽略null,为null值也会取得

44.取得津贴不为null的员工数

select count(comm) from emp;

采用count(字段名称),不会取得为null的纪录

45.取得工作岗位的个数

select count(distinctjob) from emp;

Distinct可以去除重复的纪录

46.取得薪水的合计

select sum(sal) from emp;

47取得薪水的合计(sal+comm)

select sum(sal+nvl(comm, 0)) from emp;

48.取得平均薪水

select avg(sal) from emp;

49.取得最高薪水

select max(to_char(hiredate, 'yyyy-mm-dd')) from emp;

50.取得最小薪水

select min(sal) from emp;

51.取得最早入职的员工

select min(hiredate) from emp;

52.可以将这些聚合函数都放到select中一起使用

select count(*), sum(sal), avg(sal), max(sal),min(sal) from emp;

53.取得每个岗位的工资合计,要求显示岗位名称和工资合计。

select job, sum(sal) from empgroupby job;

采用group by,非聚合函数所使用的字段必须参与分组,

Group by中不能使用聚合函数

如果使用了order by,order by必须放到group by后面

54。取得每个岗位的平均工资大于2000

select job, avg(sal) from emp group by job having avg(sal) 2000;

分组函数的执行顺序:

1、 根据条件查询数据

2、 分组

3、 采用having过滤,取得正确的数据

55. 显示每个员工信息,并显示所属的部门名称

select ename ,dname from emp a ,dept b where a.deptno = b.deptno;

以上查询也称为“内连接”,指查询相等的数据

56.取得员工和所属的经理的姓名

select a.ename, b.ename from emp a, emp b wherea.mgr=b.empno;

以上称为“自连接”,只有一张表连接,具体的查询方法

57.(内连接)显示薪水大于2000的员工信息,并显示所属的部门名称

SQL99语法:

select ename,sal,dname from emp a join dept b on a.deptno = b.deptno where sal2000;

SQL92语法

select ename,sal,dname from emp a, dept b where a.deptno=b.deptno and sal 2000;

Sql92语法和sql99语法的区别:99语法可以做到表的连接和查询条件分离,特别是多个表进行连接的时候,会比sql92更清晰

58.(外连接)显示薪水大于2000的员工信息,并显示所属的部门名称,如果某一个部门没有员工。那么该部门也必须显示出来

select dname,ename from emp a right join dept b on a.deptno = b.deptno;

59.查询员工名称和所属经历的名称,如果没有上级经理,也要查询出来

Select e.ename, m.ename mname from emp e, emp mwhere m.empno(+) = e.mgr;

60.查询员工信息,查询哪些人是管理者,要求显示出其员工编号和员工姓名

select ename,ename from emp where empno in (select distinct mgr from emp where mgr is not null);

61.查询那些人的薪水高于员工的平均薪水,需要显示员工编号,员工姓名,薪水。

select empno, ename, sal from emp where sal(selectavg(sal) from emp);

分析思路:首先根据文字描述找出被依赖的条件,逐次分析

62.查询各个部门的平均薪水所属的等级,需要显示部门编号,平均薪水,等级编号

select a.deptno, a.avg_sal, b.grade from (select deptno, avg(sal) avg_sal fromemp group by deptno) a, salgrade b where a.avg_sal between b.losal and b.hisal;

关键点:将子查询看作一张表

63.查询员工信息以及部门名称

Select e.empno, e.ename, e.deptno, (select dname from dept where deptno = e.deptno) as dname from emp e

64.union可以合并集合(相加)

select * from emp where job='MANAGER'

union

select* from emp where job='SALESMAN'

65.minus可以移出集合(相减)

查询部门编号为10和20的,取出薪水大于2000的。

select * from emp where deptno in(10, 20)

minus

select* from emp where sal2000

66.rownum隐含字段

select rownum, a.* from emp a;

67.取得前5条数据

select * from emp where rownum =5;

68.取得薪水最好的前5名

select empno, ename, sal from (select empno,ename, sal from emp order by sal desc)whererownum =5

安装好了oracle11g数据库然后怎么使用

你好:

检查系统:打开下载后的数据库安装文件夹,运行“setup.exe”开始安装数据库,此程序运行后,会检查系统。

配置安全更新:检查完系统进入正式安装,此时会检查更新,这步可以不需要配置,检查更新没有什么必要。

安装选项:

此步骤就是选择本次安装的类型,有三种:

1、创建和配置数据库;

2、仅安装数据库软件;

3、升级现有的数据库;

一般情况下,如果电脑上没有数据库,选择第一项就可以了。

系统类:此步骤有两个选项,桌面类和服务器类,就是安装机器的系统类型。一般的电脑、笔记本等,选择桌面类就可以,如果是作为服务器使用的,选择服务器类。

典型安装:

此处配置的是数据库的安装目录、全局数据库、管理员的密码等。其中:

1、安装程序会自动选择系统中盘空间大的作为数据库的安装目录。

2、如果密码太简单,安装程序会提示,如果是自己用的话,简单一些也没问题,选是就可以了。

配置完成后,点击下一步。

先决条件检查:

此步骤会检查系统的配置,如果电脑的配置低的话,就会提示检查结果为失败,不过也是可以安装的,就是可能安装上去后,会有点卡。在检查结果的界面,右上角有一个“忽略全部”的选择框,选上此框,就可以继续安装了,点击下一步。

概要:

此步骤就是把数据库的一些信息显示出来,界面右边有一个“保存响应文件”的功能,如果需要此信息的话,保存即可,也可以不保存。完成操作后,点击完成,这样配置信息过程就完成了,下面就要开始安装程序了。

安装产品:

这步就是正式开始安装数据库程序了,需要一些时间,安装时间根据电脑配置而定,等待安装完成。安装完成后,会弹出一个数据库解锁的对话框,因为在安装时,数据库的账户都是默认锁着的,要使用的话,需要解锁。点击对话框的“密码管理”,在这里选择需要解锁的账户,设置上密码就可以了。

完成:

此步骤为信息显示,即显示如数据库安装到那个目录等,关闭就可以了。到此,oracle11g数据库就安装完成了。好了,以上是oracle11g数据库如安装的分享。

oracle简单操作

SELECT 部门编号,部门名称,部门所在地,count(员工表.*),avg(员工表.sal),max(员工表.sal),min(员工表.sal) from  dept LEFT JOIN 员工表 on dept.deptid=员工表.deptid group by deptid

SELECT  部门表.部门编号,部门表.部门名称,部门表.部门所在地 FROM  部门表 INNER JOIN 员工表 ON 部门表.部门编号=员工表.部门编号 GROUP BY 部门表.部门编号 HAVING (COUNT(员工表.*)3) AND (AVG(员工表.工资)1500)

SELECT 工资等级,COUNT(*),AVG(工资) FROM 员工表 GROUP BY 工资等级

好累,不写了!!!!

oracle11g客户端精简版怎么安装

下载oracle客户端软件运行setup.exe

出现选择安装类型的界面,一般选择‘管理员’,根据自己的需要具体选择,选好后,点击下一步

出现产品语言选择界面,这个就不用讲了,下一步

出现指定安装位置界面,根据自己的需要选择,建议选择D盘,下一步

执行先决条件检查

检查完后显示安装概要信息

点击完成后,开始安装产品!

oracle 11g 怎么安装和使用?

Oracle11g是目前Oracle较新版本,除了传统的数据库服务外,也提供了界面友好的链接工具。考虑到Oracle数据的稳定和性能方面的优势,在需要处理大量数据的系统中,可以考虑使用Oracle作为数据库。\x0d\x0a一:Oracle11g的安装过程(Windows版本)很简单,步骤为:\x0d\x0a 1. 首先从Oracle官方网站上下载Oracle11g数据库,大约为1.7G。解压后,setup.ext就可以开始安装\x0d\x0a 2. 在安装开始的时候,会要求填写一些信息。需要注意两项:\x0d\x0a 1)SID。这应该是安装的数据库的ServiceID,在数据库安装成功后,在Window的服务中会多一项OracleServiceSID的服务,这里的SID就是在安装时填写的字符串。因此在连接数据库的时候都需要有SID信息,比如使用JDBC连接的时候。\x0d\x0a 2)密码。这里的密码是系统管理员的密码(sys,sysdba)。\x0d\x0a 3. 接下来就可以按照界面提示安装了,安装过程中会检查电脑配置,如果符合要求就可以继续安装。\x0d\x0a 4. 安装结束后,会生成一个database config的界面,上面有安装的数据库的sid, port等信息。(可以把这个界面保存起来,防止以后忘记相关信息)\x0d\x0a二:Oracle的连接\x0d\x0a 安装完成后,就可以连接数据库了,连接Oracle可以通过SQLPlus,SQLDeveloper,建议可以使用SQLDeveloper,因为它界面不错。在程序-Oracle11g-应用开发程序 下面有SQLDeveloper,第一次启动时,需要设置java.exe的路径(SQLDeveloper应该是JAVA开发的),之后就可以看到连接界面了。接下来需要填写连接信息,第一次连接时,必须先通过sysdba进行连接,所以要使用安装时设置的密码,其它信息如下:\x0d\x0a 1)需要选择登录身份为系统管理员 2)sid安装时设置的sid值 3)端口号一般默认是1521\x0d\x0a 注意在连接的时候,需要确保在服务中的OracleServiceSID和OracleOraDb11g_home1TNSListener是打开的\x0d\x0a 填好上面的信息就可以登录了。如果要创建自己的数据库,需要下面几个过程:\x0d\x0a 1.创建表空间,语句如下:\x0d\x0a CREATE TABLESPACE SampleTableSpace \x0d\x0a DATAFILE 'D:/app/Administrator/oradata/orcl/tableFile.dbfsize 8192M reuse\x0d\x0a AUTOEXTEND ON NEXT 8192M MAXSIZE unlimited\x0d\x0a EXTENT MANAGEMENT local;\x0d\x0a 2.创建一个用户,并默认为SampleTableSpace表空间\x0d\x0a CREATE USER SampleUser IDENTIFIED BY Password\x0d\x0a DEFAULT TABLESPACE SampleTableSpace;\x0d\x0a 3.为用户授权:\x0d\x0a GRANT connect, resource TO SampleUser ;\x0d\x0a 注意,接下来的操作必须在SampleUser的连接中进行,步骤如下:\x0d\x0a 1.在SQLDeveloper中新建一个连接,并使用刚才创建的SampleUser信息进行登录\x0d\x0a 2.接下来在SampleUser的连接中就可以使用sql进行各种操作,这些操作都会在SampleTableSpace中进行。\x0d\x0a三: 数据导入导出\x0d\x0a Oracle提供数据导入和导出功能.命令为imp/exp,可以在cmd下运行,它们可以将数据库中的表或其它对象导出为.dmp文件,或者将dmp文件导入,具体使用方法可以google一下,应该比较好用。\x0d\x0a \x0d\x0a上面是之前使用Oracle11g时的一些经验,如果有不正确的地方,也请大家补充。

oracle怎么用啊

在应用程序开发下面,有个SQL PLUS,可以在那里进行数据库的各种操作,比如对系统的管理、用户管理、数据的增删查改、各种对象的建立(表、视图、序列、同义词、存储过程等等),不过这个是纯文本的操作环境,对用户要求较高,也比较繁琐。

最好安装一个第三方的PL SQL工具,比如PLSQL DEVELOPER、TOAD都比较好用。这些都是图形界面,易于操作,对新手来说,绝对比ORACLE自带的SQL PLUS好用百倍,容易上手。

有问题请追问,如满意请采纳。


当前题目:oracle简洁版怎么用 oracle入门很简单
转载源于:http://ybzwz.com/article/hepsge.html