数据库是数据集合。Oracle是一种数据库管理系统,是一种关系型的数据库管理系统。包含物理数据、数据库管理系统。也即物理数据、内存、操作系统进程的组合体。
一个Oracle实例(Oracle Instance)有一系列的后台进程(Backguound Processes)和内存结构(Memory Structures)组成。一个数据库可以有 N 个实例。
我们访问Oracle都是访问一个实例,但这个实例如果关联了数据库文件,就是可以访问的,同时也叫SID。
查询当前数据库实例名:
select instance_name from v$instance;
oracle数据库被实例化之后,会有很多的默认的用户sys、system(本地管理员)、scott(普通用户),我们可以通过这些管理员进入oracle数据库操作中。同时我们也是在实例中创建Oracle的用户。
Oracle数据库是通过表空间来存储物理表的,一个表空间只能属于一个数据库。一个数据库实例可以有 N 个表空间,一个表空间下可以有 N 张表。
查看我们常规将用户表空间放置的位置:
select name from v$datafile;
创建表空间语法:
Create TableSpace --表空间名称
DataFile --表空间数据文件路径
Size --表空间初始大小
Autoextend on
--例如
CREATE TABLESPACE test
datafile '/usr/local/oracle/product/11.2.0/userdata/test01.dbf'
size 600M
autoextend on next 50m
maxsize unlimited;
CREATE TABLESPACE test
datafile '/usr/local/oracle/product/11.2.0/userdata/test01.dbf'
size 600M
autoextend off
maxsize 1000M;
Oracle数据库建好后,要想在数据库里建表,必须先为数据库建立用户,并为用户指定表空间。不同实例可以建相同名字的用户。
Oracle是由用户和表空间对数据进行管理和存放的,表不是由表空间去查询的,而是由用户去查的。因为不同用户可以在同一个表空间建立同一个名字的表! 这里区分就是用户了!
创建新用户:
CREATE USER 用户名
IDENTIFIED BY 密码
DEFAULT TABLESPACE 指定授权访问表空间(默认USERS)
TEMPORARY TABLESPACE 临时表空间(默认TEMP)
# 建立用户testuser
CREATE USER testuser
IDENTIFIED BY testuser
DEFAULT TABLESPACE test;
# 给用户赋予权限:
GRANT CONNECT TO utest;
GRANT RESOURCE TO utest;
grant connect,resource,dba to testuser;
查看用户:
# 查看所有用户
SELECT * FROM dba_users;
# 查看当前用户
select user from dual;
有了数据库、表空间、用户,就可以用自定义的用户在表空间创建表了。
⚠️ 注1:
一个数据库服务器可以包含 N 个数据库,每个数据库包含 N 张数据表。
# 展示所有数据库
show databases;
# 创建一个新的数据库
create database 数据库名 ;
# 使用某一个数据库
use 数据库名 ;
# 查询当前在哪一个数据库下
select database();
# 删除某一个数据库
drop database 数据库名 ;
一个数据库服务器可以包含 N 个用户。
创建用户时,可以为用户分配对数据库的管理权限,所以用户可以共享所有数据库,只要具有对数据库的使用权限。
1.用户管理
# 创建新用户
create user '用户名'@'主机名' identified by '密码';
# 修改用户密码
alter user '用户名'@'主机名' identified with mysql_password by '密码';
# 删除用户
drop user '用户名'@'主机名';
2.权限控制
# 赋予用户权限
grant 权限列表 ON 数据库名.表名 TO '用户名'@'主机名';
# 撤销用户权限
revoke 权限列表 ON 数据库名.表名 from '用户名'@'主机名';
一个数据库包含 N 张数据表。
java.sql.Driver 接口是所有 JDBC 驱动程序需要实现的接口。这个接口是提供给数据库厂商使用的,不同数据库厂商提供不同的实现。
JDBC URL的标准由三部分组成,各部分间用冒号分隔。
主机名
(对应服务端的ip地址),端口号
,数据库名
几种常用数据库的 JDBC URL:
jdbc:oracle:thin:@主机名称:oracle服务端口号:数据库名称
,示例:jdbc:oracle:thin:@192.168.2.150:1521/ZNDBjdbc:mysql://主机名称:mysql服务端口号/数据库名称?参数=值&参数=值
,示例:jdbc:mysql://localhost:3306/sg_security?characterEncoding=utf-8&serverTimezone=UTC指定访问的用户名、密码
Oracle:
spring:
datasource:
url: jdbc:oracle:thin:@192.168.2.150:1521/ZNDB
username: tmradmin
password: dbyongyou
driver-class-name: oracle.jdbc.OracleDriver
MySql:
spring:
datasource:
url: jdbc:mysql://localhost:3306/sg_security?characterEncoding=utf-8&serverTimezone=UTC
username: root
password: root
driver-class-name: com.mysql.cj.jdbc.Driver