oracle的安装版本有两种类型:
服务1:OracleServiceXE,只要开启这个服务就可以访问直接数据库
此处的 XE 或者是 ORCL就是oracle的数据库名,要用代码连接时,数据库名称就需要指定为这个名称
注意:如果只开启这一个服务,数据库可以直接通过控制台访问,但是不能用第三方工具,或者java代码访问
服务2:OracleXETNSListener ,这是oracle中的监听服务,开启该服务才可以用java代码或第三方工具连接数据库
角色1:sysdba (数据库管理员),它的权限等级最高,可以执行所有操作
角色2:sysoper (数据库操作员),它的权限等级仅次于sysdba,除了不能载、卸载数据库装,其他操作都可以
角色3: normal (普通用户),它的所有操作,都要经过授权才可以
注意,我们一般使用的是:normal角色的用户,之前的系统账号system的角色类型为: sysoper
在oracle中,所有数据表、数据都是存放在表空间(tablespace)中,oracle中的表空间的概念,就相当于mysql
中database的概念
我们使用oracle都是使用普通用户角色,所以,一般会首先创建一个普通用户:
要创建用户,必须有权限才可以 (sysdba,sysoper),使用system它是操作员权限,可以创建用户、创建表空间
@@@@@@@创建步骤:
先用system登录,登录方式有两种:
注意:表空间的路径中不要包含中文与空格
语法:create user 用户名 identified by 密码 default tablespace 表空间名称;
示例: create user d91 identified by d91 default tablespace d91space;
默认情况下,对数据库执行增删改操作,都需要提交以后,才会真正保存到表空间中
删除步骤:
删除用户
修改用户密码
-----------------------------------------------------------------------------------------------------
如果操作数据库时,在cmd窗口下写语句,非常的不方便。所以,我们一般会使用一个第三方工具操作oracle
oracle第三方工具很多,使用最多的是: pl/sql (不用安装,解压缩即可)
注意:这个工具分为:32位版与64位,不同操作系统要求的版本有所不同:
导出数据,也可以使用plsql导出、导入
---------------------------------------------------------------------------------------------------
mysql:
oracle:
用法如下:
date类型,既可以包含:年月日,也可以包含时分秒
注意
如下添加date类型的数据方式是错误的:insert into test3 values(1,'jack','2010-10-20');
正确添加方式:
特点:存储容量特别大,一个字段最多可存储:4GB的容量
推荐使用: CLOB、BLOB
伪列,本身并不存在,它需要根据查询的结果动态产生
注意:在oracle中,要查询前几条数据,或者是要进行分页显示,必须要使用rownum
注意:在实际应用中,一般很少使用int类型作为主键,开发中,更多时候是使用uuid作为主键在mysql中,uuid是一个32位长度的随机字符串+ 4根横线 = 36位
CREATE TABLE test1
(
id VARCHAR(36) PRIMARY KEY,
NAME VARCHAR(20),
score INT
)
INSERT INTO test1 VALUES(UUID(),'jack',99);
INSERT INTO test1 VALUES(UUID(),'andy',89);
INSERT INTO test1 VALUES(UUID(),'chris',80);
create table test2
(
id number(11) primary key,
name varchar2(20),
photo blob --照片,类型是一个二进制大对象
)
select * from inf;
select * from test2;
select id,name,score,rowid from inf;
create table test3
(
id varchar2(32) primary key,
name varchar2(20),
score number(11)
)
insert into test3 values(sys_guid(),'jack',100);
insert into test3 values(sys_guid(),'andy',60);
insert into test3 values(sys_guid(),'chris',80);
insert into test3 values(sys_guid(),'bruce',93);
目的:保证数据表中的数据是准确的、有效的。每一条数据都可以被唯一的标识出来.
要保证数据的完整性,可以通过约束来实现
数据完整性,包含三个方面的完整性:
实体完整性,可以保证数据表中的每一条记录,可以被唯一的标识出来(当前字段的值,不允许出现重复值)
通过下列约束,可以保证实体完整
特点:
特点:如果当前列,加入唯一约束,它的值必须唯一,不允许出现重复值
域完整性,它是为保证数据表中的值,准确、有效
通过下列约束,可以实现域完整性:
注意:mysql有检查约束,但是执行过程中,系统会忽略
在sqlserver和oracle中,检查约束会起作用
检查约束还可以判断,数据是否满足某一种数据格式(使用正则表达式进行验证)
程序:如果仅仅是前端验证是可以绕过去的,如果仅仅后台验证,也可以绕过去
实际应用: 前端验证+后台验证
在正则表达式中:
数据库中的正则表达式
^1(3|5|7|8|9)[0-9]{9}$ 13123456789
^[0-9]{3}-[0-9]{8}$ 027-12345678
^[0-9]{4}-[0-9]{7,8}$ 0755-12345678 0710-1234567
目的:外键表引用的数据,在主键表中是存在的
通过下列约束,可以实现引用完整性:
mysql建立外键的语法:
CREATE TABLE city
(
cid INT PRIMARY KEY,
cname VARCHAR(20),
pid INT,
FOREIGN KEY (pid) REFERENCES province(pid) #创建外键
)
oracle建立外键的语法:
CREATE TABLE city
(
cid number(11) PRIMARY KEY,
cname VARCHAR2(20),
pid number,
FOREIGN KEY (pid) REFERENCES province(pid) --创建外键
)
或者是下面这种写法:
CREATE TABLE city
(
cid number(11) PRIMARY KEY,
cname VARCHAR2(20),
pid number references province(pid)
)
方式1:创建表的时候,指定约束
create table student
(
sid number(11) primary key,--主键约束
sname varchar2(20) not null,--非空约束
gender char(3) check (gender='男' or gender='女'),--检查约束
idCard char(18) unique,--唯一约束
className varchar(20) default 'D91', --默认值约束
city number(11) references city(cid) --外键约束
)
方式2:先建表,再添加约束
---修改表结构,添加约束
--修改tid,将类型改变number,同时添加主键约束
alter table teacher modify tid number(11) primary key
--将tname修改为varchar2
alter table teacher modify tname varchar2(20)
--添加检查约束
alter table teacher modify gender char(3) check(gender='男' or gender='女');
--添加新字段
alter table teacher add age number(11) check (age between 1 and 120)
--删除字段
alter table teacher drop column other;
--添加电话号码并且设置检查约束
alter table teacher add tel varchar2(20) check (regexp_like(tel,'^1(3|5|7|8|9)[0-9]{9}$|^[0-9]{3}-[0-9]{8}$|^[0-9]{4}-[0-9]{7,8}$'));
---添加外键约束
alter table teacher add city number(11) references province(pid)