实例、用户、表空间、具体表、他们之间的关系??
解释:一个用户只能属于一个数据库,但是一个数据库中可以有多个用户。
扩展:实际上这里面还有表空间的概念,一个数据库可以有多个表空间,一个用户可以默认一个表空间,但是可以操作多个表空间,多个用户可以同时用一个表空间。
表设计完成之后开始创建表了,但是Oracle按照步骤是是这样的:
1.创建表空间
create tablespace waterboss datafile 'c:waterboss.dbf' size 100m autoextend on next 10m
解释:
waterboss 为表空间名称
datafile 用于设置物理文件名称
size 用于设置表空间的初始大小
autoextend on 用于设置自动增长,如果存储量超过初始大小,则开始自动扩容
next 用于设置扩容的空间大小
2.创建用户
create user wateruser identified by itcast default tablespace waterboss
解释:
wateruser 为创建的用户名
identified by 用于设置用户的密码
default tablesapce 用于指定默认表空间名称
3.用户赋权
grant dba to wateruser
解释:
给用户 wateruser 赋予 DBA 权限后即可登陆
4.表的创建、修改与删除,(从这开始步入正题咯,要注意啦, 我所要知道的就是,sql语句,MySQL与Oracle的区别!!!!)
sql语句的区别
实例与创建数据库
mysql可以创建数据库,而oracle没有这个操作,oracle只能创建实例;
1.其实实例也就是数据总库
2.MySQL创建数据库是sql语句,但是Oracle是安装的时候的操作,跟建立用户一样,
/** create database 数据库名 character set 字符集;*/
什么是实例?
实例就是内存结构和一组后台进程.
实际上,正常的数据库读入内存的过程是,由实例中一组后台进程从磁盘上将数据文件读入到实例的内存中,然后经过在内存中对数据的操作再从实例的内存中经过一组后台进程写到数据库中.
那实例相对与数据库而言,应该就是数据库的运行环境(随不准确但也很贴切).
创建表异常
/* mysql: 1、mysql没有number、varchar2()类型; 2、mysql可以声明自增长:auto_increment; 3、mysql有double类型; oracle: 1、oracle没有double类型、有int类型但多数会用number来代替int; 2、oracle不可以声明自增长:auto_increment,主键自带自增长; 3、oracle小数只有float类型; */
--MySQL:
create TABLE emp(
eno INT PRIMARY KEY AUTO_INCREMENT,
ename VARCHAR(20) NOT NULL UNIQUE,
job VARCHAR(10) DEFAULT '员工',
mgr INT(10),
hiredate DATE,
comm DOUBLE
);
--Oracle:
create table emp(
empno number(10) primary key ,--主键
ename varchar2(20) not null unique,--不能为空,唯一
job varchar2(10) default '匿名',--默认值,用单引号
mgr number(10),
hiredate date,--默认格式DD-MM-YY
sal number(10,2),
comm float,
deptno number(10)
);