玩转oracle视频教程笔记-韩顺平(2)

2019-01-27 17:46

除了自己不能给自己授权外,sys,system 和所要操作的用户均可以给其他的用户授权 现在说下对象权限,现在要做这么件事情: * 希望xiaoming用户可以去查询emp表

* 希望xiaoming用户可以去查询scott的emp表 grant select on emp to xiaoming

* 希望xiaoming用户可以去修改scott的emp表 grant update on emp to xiaoming

* 希望xiaoming用户可以去修改/删除,查询,添加scott的emp表 grant all on emp to xiaoming

* scott希望收回xiaoming对emp表的查询权限 revoke select on emp from xiaoming

---------------------------------------------玩转oracle第五讲-------------------------------------------------- //对权限的维护。

* 希望xiaoming用户可以去查询scott的emp表/还希望xiaoming可以把这个权限继续给别人。

--如果是对象 权限,就加入 with grant option grant select on emp to xiaoming with grant option 我的操作过程:

SQL> conn scott/tiger; 已连接。

SQL> grant select on scott.emp to xiaoming with grant option; 授权成功。

SQL> conn system/p; 已连接。

SQL> create user xiaohong identified by m123; 用户已创建。

SQL> grant connect to xiaohong; 授权成功。

SQL> conn xiaoming/m12; 已连接。

SQL> grant select on scott.emp to xiaohong; 授权成功。

--如果是系统权限。

system给xiaoming权限时:

grant connect to xiaoming with admin option

问题:如果scott把xiaoming对emp表的查询权限回收,那么xiaohong会怎样? 答案:被回收。

下面是我的操作过程: SQL> conn scott/tiger; 已连接。

SQL> revoke select on emp from xiaoming; 撤销成功。

SQL> conn xiaohong/m123; 已连接。

SQL> select * from scott.emp; select * from scott.emp 第 1 行出现错误:

ORA-00942: 表或视图不存在

结果显示:小红受到诛连了。

使用profile管理用户口令

概述:profile是口令限制,资源限制的命令集合,当建立数据库的,oracle会自动建立名称为default的profile。当建立用户没有指定profile选项,那么oracle就会将default分配给用户。

1.账户锁定

概述:指定该账户(用户)登陆时最多可以输入密码的次数,也可以指定用户锁定的时间(天)一般用dba的身份去执行该命令。

例子:指定scott这个用户最多只能尝试3次登陆,锁定时间为2天,让我们看看怎么实现。 创建profile文件

SQL> create profile lock_account limit failed_login_attempts 3 password_lock_time 2; SQL> alter user scott profile lock_account;

2.给账户(用户)解锁

SQL> alter user tea account unlock;

3.终止口令

为了让用户定期修改密码可以使用终止口令的指令来完成,同样这个命令也需要dba的身份来操作。

例子:给前面创建的用户tea创建一个profile文件,要求该用户每隔10天要修改自己的登陆密码,宽限期为2天。看看怎么做。

SQL> create profile myprofile limit password_life_time 10 password_grace_time 2; SQL> alter user tea profile myprofile;

口令历史

概述:如果希望用户在修改密码时,不能使用以前使用过的密码,可使用口令历史,这样oracle就会将口令修改的信息存放到数据字典中,这样当用户修改密码时,oracle就会对新旧密码进行比较,当发现新旧密码一样时,就提示用户重新输入密码。 例子:

1)建立profile

SQL>create profile password_history limit password_life_time 10 password_grace_time 2 password_reuse_time 10

password_reuse_time //指定口令可重用时间即10天后就可以重用 2)分配给某个用户

删除profile

概述:当不需要某个profile文件时,可以删除该文件。 SQL> drop profile password_history 【cascade】

注意:文件删除后,用这个文件去约束的那些用户通通也都被释放了。 加了cascade,就会把级联的相关东西也给删除

---------------------------------------------------------------------------------------------------------------------- -------------------------------------------- 第二天 --------------------------------------------------

四:oracle表的管理(数据类型,表创建删除,数据CRUD操作)

oracle的表的管理 (创建和维护) 表名和列的命名规则

必须以字母开头

? 长度不能超过30个字符 ? 不能使用oracle的保留字

? 只能使用如下字符 A-Z,a-z,0-9,$,#等

?

oracle支持的数据类型

字符类

char 定长 最大2000个字符。

例子:char(10) ?小韩?前四个字符放?小韩?,后添6个空格补全 如?小韩?

varchar2(20) 变长 最大4000个字符。

例子:varchar2(10) ?小韩? oracle分配四个字符。这样可以节省空间。 clob(character large object) 字符型大对象 最大4G

char 查询的速度极快浪费空间,查询比较多的数据用。

varchar 节省空间

数字型

number范围 -10的38次方 到 10的38次方 可以表示整数,也可以表示小数 number(5,2)

表示一位小数有5位有效数,2位小数 范围:-999.99到999.99 number(5)

表示一个5位整数 范围99999到-99999

日期类型

date 包含年月日和时分秒 oracle默认格式 1-1月-1999

timestamp 这是oracle9i对date数据类型的扩展。可以精确到毫秒。 图片

blob 二进制数据 可以存放图片/声音 4G 一般来讲,在真实项目中是不会把图片和声音真的往数据库里存放,一般存放图片、视频的路径,如果安全需要比较高的话,则放入数据库。

怎样创建表 建表

--学生表

create table student ( ---表名

xh number(4), --学号 xm varchar2(20), --姓名

sex char(2), --性别

birthday date, --出生日期 sal number(7,2) --奖学金 );

--班级表

CREATE TABLE class( classId NUMBER(2), cName VARCHAR2(40) );

修改表

添加一个字段

SQL>ALTER TABLE student add (classId NUMBER(2)); 修改一个字段的长度

SQL>ALTER TABLE student MODIFY (xm VARCHAR2(30)); 修改字段的类型/或是名字(不能有数据) 不建议做 SQL>ALTER TABLE student modify (xm CHAR(30));

删除一个字段 不建议做(删了之后,顺序就变了。加就没问题,应为是加在后面)

SQL>ALTER TABLE student DROP COLUMN sal; 修改表的名字 很少有这种需求 SQL>RENAME student TO stu; 删除表

SQL>DROP TABLE student;

添加数据

所有字段都插入数据

INSERT INTO student VALUES ('A001', '张三', '男', '01-5月-05', 10); oracle中默认的日期格式‘dd-mon-yy’ dd日子(天) mon 月份 yy 2位的年 ‘09-6月-99’ 1999年6月9日

修改日期的默认格式(临时修改,数据库重启后仍为默认;如要修改需要修改注册表)

ALTER SESSION SET NLS_DATE_FORMAT ='yyyy-mm-dd'; 修改后,可以用我们熟悉的格式添加日期类型:

INSERT INTO student VALUES ('A002', 'MIKE', '男', '1905-05-06', 10); 插入部分字段

INSERT INTO student(xh, xm, sex) VALUES ('A003', 'JOHN', '女'); 插入空值

INSERT INTO student(xh, xm, sex, birthday) VALUES ('A004', 'MARTIN', '男', null);

问题来了,如果你要查询student表里birthday为null的记录,怎么写sql呢?

错误写法:select * from student where birthday = null; 正确写法:select * from student where birthday is null; 如果要查询birthday不为null,则应该这样写:


玩转oracle视频教程笔记-韩顺平(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:高校语文试说试教心得体会

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: