一,Oracle的用户管理
1. 创建用户
在 oracle 中要创建一个新的用户使用 create user 语句,一般是具有 dba(数据库管理员)的权限才能使用。
1) 创建用户
命令:create user 用户名 identified by 密码;
1
2
3
4
5--创建用户:
--语法结构:create user 用户名 identified by 密码 【default tablespace 表空间名】【temporary tablespace temp】
create user hope identified by 123456;
create user hope1 identified by 123456 default tablespace users;
create user hope2 identified by 123456 default tablespace users temporary tablespace temp;2) 给用户修改密码
如果给别人修改密码则需要具有 dba 的权限,或是拥有 alter user 的
系统权限命令:alter user 用户名 identified by 新密码
1 | --修改用户密码: |
3) 修改自己的密码
如果给自己修改密码可以直接使用命令:password 用户名
问题:创建好的用户无法正常登录?oracle 中用户建立后是无法正常登录的,只有在数据库管理员(DBA)对用户分配相应的权限后,用户才可以登录。
2 删除用户
概述:一般以 dba 的身份去删除某个用户,如果用其它用户去删除用户则需要具有 drop user 的权限。
命令:drop user 用户名 [cascade]可选参数 cascade
在删除用户时, 注意: 如果要删除的用户,已经创建了表, 那么就需要在删除的时候
带一个参数 cascade; Cascade 有级联的作用
1 | --删除用户: |
3. oracle 用户分配权限和角色
概述:创建的新用户是没有任何权限的,甚至连登录的数据库的权限都没有,需要为其指定相应的权限。给一个用户赋权限使用使令 grant,回收权限使用命令 revoke
赋权限基本语法:grant 权限/角色 to 用户名;
回收权限基本语法:revoke 权限/角色 from 用户名;
--权限和角色
--权限指执行特定类型SQL命令或访问其他对象的权利
--系统权限:允许用户执行某些数据库操作
--对象权限:允许用户对某一特定对象执行特定的操作
--角色是具有名称的一组权限的组合
--常用系统预定义角色
--CONNECT:临时用户
--RESOURCE:更为可靠和正式的用户
--DBA:数据库管理员角色,拥有管理数据库的最高权限
--一般情况下,普通用户,有connect和resource的角色就够了。
3.1 分配权限
语法:grant create 权限 to 用户名;
例如:给小明赋予会话的权限
sql> grant create session to xiaoming;
–给hope2赋予查询scott的emp表的权限
1 | grant select on scott.emp to hope2; |
3.2 分配角色
也可以按 角色对用户分配权限
语法:grant 角色名 to 用户名;
例如:授予小明 resource 角色
1 | sql> grant resource to xiaoming; |
撤销角色和权限:
1 | --语法结构:revoke 角色1,角色2,。。。from 用户 |
3.3 oracle 中权限的概念
权限分为系统权限与对象权限。
系统权限 :是数据库管理相关的权限:
create session(登录权限)
create table(创建表权限)
create index(创建索引权限)
create view(创建视图权限)
create sequence(创建序列权限)
create trriger(创建触发器权限)
对象权限:
是用户操作数据对象相关的权限。
比如对表的增删改查(insert 增、delete 删、update 改、select 查);
3.4 角色
在 oracle 中角色分为:预定义角色和自定义角色;
预定义角色:把常用的权限集中起来,形成角色。常见的角色有:dba、connect、resource
等;
connnect 角色 :是授予用户的最基本的权利,能够连接到 oralce 数据库中,并在对其
他用户的表有访问权限时,做 SELECT、UPDATE、INSERTT 等操作。Create session–建立
会话;Alter session–修改会话;Create view–建立视图。Create sequence–建立序列等权限
resource 角色 :具有创建表、序列、视图等权限。Create table–建表;Create trigger–
建立促发器;Create procedure–建立过程;Create sequence—建立序列;Create type–建立类
型等权限;
dba 角色 :是授予系统管理员的,拥有该角色的用户就能成为系统管理员了,它拥有
所有的系统权限。
自定义角色:按需定制一定权限形成角色,可以作为预定义角色的补充。来满足用户的
需求。
二,Oracle 数据类型
1 、 char(size)
存放字符串,它最大可以存放 2000 个字符,是定长。可以存储定长的字符串
1 | 例子:create table test1(name char(32)); |
说明:
test1 表中的 name 字段最多存放 32 个字符,
不足 32 个字符 oracle 会用空格补齐,如果超过会报错。
2 、 varchar 可以存储变长的字符串(不太常用)
2—— varchar2(size)
存放字符串,它最大可以存放 4000 个字符,是变长。
举例说明:
1 | create table test2(name varchar2(16)); |
注意:如果我们的数据的长度是固定的,比如编号(8 位),最好使用 char 来存放,因为这样存取的速度
区别:::
什么时候用char 什么时候用varchar(2); ??
当已知字符串的长度的时候用char比较合适,不确定字符串长度时,用varchar2比较合适
-----nchar和nvarchar2可以存储Unicode字符集
3 、 number 型
存放整数,也可存放小数,是变长。number(p,s)//p 代表整个位数,s 代表小数位
说明:
number(5,2): 表示一个小数有 5 位有效数,2 位小数。范围-999.99~999.99
如果数值超出了位数限制就会被截取多余的位数。但在一行数据中的这个字段输入 575.316,则真正保
存到字段中的数值是 575.32。
number(5) : 等价于 number(5,0) 表示一个五位整数,范围-99999~99999。
输入 57523.316,真正保存的数据是 57523
–number 等价于number(38,0)
–number(15)表示可以存储一个15位的整数
–number(22,7)表示可以浮点数,整数部分有15位,小数点后有7位
注意:不建议使用varchar,interger,float,double
4,日期数据类型,date 类型
date类型,用于表示时间,( 年/ 月/ 日/ 时/ 分/ 秒) ,是定长。
sysdate:日期函数;显示当前日期
select systate from dual; //显示当前日期
systimestamp:比Date更精确的一个时间
Date:日期类型,存储日期和时间
TimeStamp:比Date更精确的一种日期类型。
默认的日期格式
---中文的oracle:日-月-年 比如:‘1998年7月1日’ 默认日期格式-> ‘01-7月-1998’
---英文的oracle:day-mon-year 比如1998年7月1日 默认日期格式->'01-JUL-1998'
与日期相关的函数
to_date(字符串,格式) :将一个oracle不认识的日期格式转成oracle认识的日期格式返回的是一个日期类型
select to_date(‘2018-01-05’,yyyy-mm-dd);
1 | 举例说明: |
5 、 clob 型
字符型大对象,它最大可以存放 8TB ,是变长。(nvarchar(4000) 满足不了需求)
与字符型的 char/varchar2/nchar/nvarchar2 的使用方式一样。
6 、 blob 型
二进制数据,可存放图片、声音,它最大可以存放 8TB ,是变长。
与字符型的 char/varchar2/nchar/nvarchar2 的使用方式一样。
说明:一般情况下很少使用数据库来存放媒体类文件,一般只使用数据库来记录媒体类文件的 URL 地址。如果考虑到文件的安全性,可以存放到数据库中来保存。
三、表的操作
1.创建表:
实际上解决的是表结构的问题,表有几个字段,每个字段的长度是多少。
语法:
create table 表的名称(字段名称 1 数据类型, 字段名称 2 数据类型);
1 | 举例:创建学生表,字段和类型如下所示: |
代码
1 | create table students( |
删除表:
1 | drop table student; |
2.6. 案例:( 掌握创建约束 )(商店售货系统 )
举例说明:
商店售货系统表设计案例 :
1 | 现有一个商店的数据库,记录客户及其购物情况,由下面三个表组成: |
- 建表,在定义中要求声明:
(1).每个表的主外键;
(2).客户的姓名不能为空值;
(3).单价必须大于 0,购买数量必须在 1 到 30 之间;
(4).邮箱不能够重复;
(5).客户的性别必须是 男 或者 女,默认是男;
商品表:
1 | 商品 goods 表: |
客户 表:
1 | 客户 customer 表: |
购买表:
1 | 购买 purchase 表: |