玩转oracle实战教程(韩顺平)——学习word笔记(共88页).doc
《玩转oracle实战教程(韩顺平)——学习word笔记(共88页).doc》由会员分享,可在线阅读,更多相关《玩转oracle实战教程(韩顺平)——学习word笔记(共88页).doc(88页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上韩顺平玩转oracle视频教程笔记一:Oracle认证,与其它数据库比较,安装Oracle安装会自动的生成sys用户和system用户: (1) sys用户是超级用户,具有最高权限,具有sysdba角色,有create database的权限,该用户默认的密码是change_on_install (2) system用户是管理操作员,权限也很大。具有sysoper角色,没有create database的权限,默认的密码是manager (3) 一般讲,对数据库维护,使用system用户登录就可以拉 也就是说sys和system这两个用户最大的区别是在于有没有crea
2、te database的权限。二: Oracle的基本使用-基本命令sql*plus的常用命令 连接命令 1.connect 用法:conn 用户名/密码网络服务名as sysdba/sysoper当用特权用户身份连接时,必须带上as sysdba或是as sysoper 2.disconnect 说明: 该命令用来断开与当前数据库的连接 3.psssword 说明: 该命令用于修改用户的密码,如果要想修改其它用户的密码,需要用sys/system登录。 4.show user 说明: 显示当前用户名 5.exit 说明: 该命令会断开与数据库的连接,同时会退出sql*plus 文件操作命令
3、1.start和 说明: 运行sql脚本 案例: sql d:a.sql或是sqlstart d:a.sql 2.edit 说明: 该命令可以编辑指定的sql脚本 案例: sqledit d:a.sql,这样会把d:a.sql这个文件打开 3.spool 说明: 该命令可以将sql*plus屏幕上的内容输出到指定文件中去。 案例: sqlspool d:b.sql 并输入 sqlspool off 交互式命令 1.& 说明:可以替代变量,而该变量在执行时,需要用户输入。 select * from emp where job=&job; 2.edit 说明:该命令可以编辑指定的sql脚本 案例
4、:SQLedit d:a.sql 3.spool 说明:该命令可以将sql*plus屏幕上的内容输出到指定文件中去。 spool d:b.sql 并输入 spool off 显示和设置环境变量 概述:可以用来控制输出的各种格式,set show如果希望永久的保存相关的设置,可以去修改glogin.sql脚本 1.linesize 说明:设置显示行的宽度,默认是80个字符 show linesize set linesize 90 2.pagesize说明:设置每页显示的行数目,默认是14 用法和linesize一样 至于其它环境参数的使用也是大同小异 三:oracle用户管理oracle用户的
5、管理 创建用户 概述:在oracle中要创建一个新的用户使用create user语句,一般是具有dba(数据库管理员)的权限才能使用。 create user 用户名 identified by 密码; (oracle有个毛病,密码必须以字母开头,如果以字母开头,它不会创建用户) 给用户修改密码 概述:如果给自己修改密码可以直接使用 password 用户名 如果给别人修改密码则需要具有dba的权限,或是拥有alter user的系统权限 SQL alter user 用户名 identified by 新密码 删除用户 概述:一般以dba的身份去删除某个用户,如果用其它用户去删除用户则需要
6、具有drop user的权限。 比如 drop user 用户名 【cascade】 在删除用户时,注意: 如果要删除的用户,已经创建了表,那么就需要在删除的时候带一个参数cascade; 用户管理的综合案例 概述:创建的新用户是没有任何权限的,甚至连登陆的数据库的权限都没有,需要为其指定相应的权限。给一个用户赋权限使用命令grant,回收权限使用命令revoke。 为了给讲清楚用户的管理,这里我给大家举一个案例。 SQL conn xiaoming/m12; ERROR: ORA-01045: user XIAOMING lacks CREATE SESSION privilege; log
7、on denied 警告: 您不再连接到 ORACLE。 SQL show user; USER 为 SQL conn system/p; 已连接。 SQL grant connect to xiaoming; 授权成功。 SQL conn xiaoming/m12; 已连接。 SQL 注意:grant connect to xiaoming;在这里,准确的讲,connect不是权限,而是角色。 看图: 现在说下对象权限,现在要做这么件事情: * 希望xiaoming用户可以去查询emp表 * 希望xiaoming用户可以去查询scott的emp表 grant select on emp to
8、 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 /对权限的维护。 * 希望xiaoming用户可以去查询scott的emp表/还希望xiaoming可以把这个权限继续给别人。 -如果是对象权限,就加入 with grant option
9、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 gra
10、nt 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 * fro
11、m scott.emp; select * from scott.emp 第 1 行出现错误: ORA-00942: 表或视图不存在 结果显示:小红受到诛连了。使用profile管理用户口令 概述:profile是口令限制,资源限制的命令集合,当建立数据库的,oracle会自动建立名称为default的profile。当建立用户没有指定profile选项,那么oracle就会将default分配给用户。 1.账户锁定 概述:指定该账户(用户)登陆时最多可以输入密码的次数,也可以指定用户锁定的时间(天)一般用dba的身份去执行该命令。 例子:指定scott这个用户最多只能尝试3次登陆,锁定时间为
12、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天要修改自己的登陆密
13、码,宽限期为2天。看看怎么做。 SQL create profile myprofile limit password_life_time 10 password_grace_time 2; SQL alter user tea profile myprofile; 口令历史 概述:如果希望用户在修改密码时,不能使用以前使用过的密码,可使用口令历史,这样oracle就会将口令修改的信息存放到数据字典中,这样当用户修改密码时,oracle就会对新旧密码进行比较,当发现新旧密码一样时,就提示用户重新输入密码。 例子: 1)建立profile SQLcreate profile password_h
14、istory 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 【casade】 注意:文件删除后,用这个文件去约束的那些用户通通也都被释放了。加了casade,就会把级联的相关东西也给删除掉四:oracle表的管理(数据类型,表创建删除,数据CRUD操作
15、)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 查询的速度极快浪费空间,查询比较多的数据用。 varch
16、ar 节省空间 数字型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 一般来讲,在真实项目中是不会把图片和声音真的往数据库里存放,一般存放图片、视频的路径,如果安全需要比较高的话,
17、则放入数据库。 怎样创建表 建表-学生表 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); 修改表 添加一个字段SQLALTER TABLE student add (classId NUMBER(2); 修改一个字段的长度 SQLALTER TABLE stude
18、nt MODIFY (xm VARCHAR2(30); 修改字段的类型/或是名字(不能有数据) 不建议做 SQLALTER TABLE student modify (xm CHAR(30); 删除一个字段 不建议做(删了之后,顺序就变了。加就没问题,应为是加在后面)SQLALTER TABLE student DROP COLUMN sal; 修改表的名字 很少有这种需求 SQLRENAME student TO stu; 删除表 SQLDROP TABLE student; 添加数据 所有字段都插入数据 INSERT INTO student VALUES (A001, 张三, 男, 01
19、-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,
20、 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,则应该这样写: select * from student where birthd
21、ay is not null; 修改数据 修改一个字段UPDATE student SET sex = 女 WHERE xh = A001; 修改多个字段UPDATE student SET sex = 男, birthday = 1984-04-01 WHERE xh = A001; 修改含有null值的数据 不要用 = null 而是用 is null; SELECT * FROM student WHERE birthday IS null; 删除数据DELETE FROM student; 删除所有记录,表结构还在,写日志,可以恢复的,速度慢。 Delete 的数据可以恢复。 save
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- oracle 实战 教程 顺平 学习 word 笔记 88
限制150内