各个数据库特点:
1,mysql:免费,不支持检查约束,但支持主键自增。
2,oracle: 全球最强大的单体数据库,数据库结构复杂,收费。支持检查约束,不支持主键自增长,但支持序列
。
3,DB2(IBM):易用性好,常用于金融项目的数据库,收费速度一般。既支持主键自增长,又支持检查约束。
4,SQLServer(微软):易用性好,必须在微软平台服务器下运行,收费。
5,一般来说,数据库是不区分大小写的,但是在oracle中的值是区分大小写(创建表的时候,将表名写成小写并加上引号就是小写的表名了),mysql中不区分。
oracle基本知识:
1,services.msc 找到可以启动oracle的监听程序(OracleOraDb10g_home1TNSListener )和启动数据库的服务程序(OracleServiceORCL)。
2,在启动数据库时,数据库中有,数据文件、控制文件和日志文件。
3,oracle的数据库和其它一般数据库不同的最明显的一点就是:
oracle的一个服务对应一个数据库,所以java的一个项目不能像以前一样对应一个oracle数据库了,因此oracle数据库中提出一个新的概念叫表空间。
在oracle数据库中我们可以创建多个表空间,用于java的项目,一个表空间可以由一个或多个数据文件组成(xxx.DBF)。
oracle中的操作性知识
问题一:oracle怎么创建数据库呢?
我们的orcl数据库是安装oracle时顺便创建的。所以我们创建数据库和删除数据库都是操作Database Configuration Assistant 中选项。
问题二:如果oracle由于不明原因不能用了,是不是也要重新安装呢?
1,一般情况下数据不能用,肯定是有服务启不来。
2,如果是serviceOrcl启不来就是数据库出问题了,可以删除重建,参照问题一来解决。但是一般情况下,数据库是不会蹦的,如果蹦了可能是因为杀毒软件删除了数据库的一些文件。
3,如果是lisener启不来,可以重新配置监听。操作这个 :net configuration assistant。
问题三:怎么用我的客户端连接别人的数据呢?
盘符:\oracle\product\10.2.0\db_1\network\ADMIN,有tnsnames.ora文件,在配置中添加新的连接信息即可。
关于oracle的使用
1,oracle的用户和权限非常严格,一般不是用sys、system用户管理数据。
2,应该创建新的用户,管理数据库中指定表空间的数据。
3,使用system在数据库中创建表空间。
4,创建一个用户。
5,让创建好的用户管理新创建的表空间。
创建表空间、用户及其给用户授权
1,创建表空间
create tablespace firstdataspace
datafile 'f:db/firstdataspace.DBF'
size 30m autoextend on next 10m maxsize 300m
解释:1,表空间名:firstdataspace 与datafile 名 ,可以不一样。
2,创建的表空间初始大小为30m,当达到30m时,自动扩展10m,整个表空间最大为300m
3,删除表空间(drop tablespace firstdataspace)
4, 修改表空间大小:alter database datafile 'f:db/firstdataspace.DBF' resize 100m
2,创建用户
create user ouyang
identified by admin
default tablespace firstdataspace
删除用户:drop user ouyang
3 , 授权
grant connect,resource to ouyang
撤销权限:revoke connect from ouyang
--conntect:可以登录
--resource:可以对表空间进行资源管理
--dba:成为系统管理员
scott用户
测试数据库的用户,安装oracle数据库时就创建了,有4张表,部门和员工表有数据,工资等级和bonus红利表没有数据。
system用户
由system用户:建立表空间和删除表空间,建立用户和删除用户,授予权限和撤销权限
最基本的操作
1,修改密码:alter user scott identified by admin
2, 增加一个字段:alter table emp add phone varchar2(100)
3, 删除字段:alter table emp drop column phone
4, 修改字段的数据类型:alter table emp modify hiredate date
5, 增加一个检查约束:alter table emp add constraint CK_salary check(salary>0)
6, 添加一个外键关系:alter table emp add constraint FK_emp_empid foreign key (deptid) references dept(deptid)
7,oracle中的(排序)分页:select rownum,ee.* from (select rownum r,e.* from (select * from emp order by salary desc)e)ee where ee.r>3 and ee.r<=6
8, 层级关系的查询:select * from emp start with empno = 7788 conntect by prior mgr = empno
9,创建序列的模板(下面设置的全是默认值)
create sequence xxx
start with 1
increment by 1
nomaxvalue
nocycle
cache 20
序列有局限,因为序列只能用于数值型的主键列;如果想生成字符串的主键,则序列不满足,只有用GUID,