0 raclellg教案 -.0 racle入门 1.安装0 raclel1g 2.验证0 racle11g是否安装成功 在控制面板中查看2个服务是否已启动 OracleOraDb11g_home1TNSListene 3.登录SQL*PLUS SQL却LUS是最常用的用于连接和使用0 racle数据库的实用程序。 SQL*PLUS包括在Oracle Databasellg服务器软件和客户机软件中。在服务 器或客户机上安装了SQL却LUS软件之后,登录服务器或客户机并启动一个 SQL*PLUS会话是一个非常的过程。由于每个SQL*PLUS会话都涉及与数据库 的连接,只要提供一个合法的用户名/密码组合就可以启动SQL*PLUS会话并 连接数据库。 sqlplus账号/密码 例:sqlplus system/密码(此种方式会泄密) 连接指定数据库 例:sqlplus usernamee@connect_.identifier 使用具有sysdba或sysoper权限的身份登录 例:sqlplus username/,password as sysdba 注意:as子句允许有sysdba或sysoper系统权限的用户连接SQL*PLUS 4.用connect命令进行连接 登录到SQL*PLUS后,SQL*PLUS的connect命令将帮助你以一个不同的用 户身份进行连接。在使用connect命令连接一个数据库后,还可以登录到另一个 不同的数据库。 connect newuser/newpasswd[eorcl1] 5.用/nolog的无连接SQL*PLUS会话 在启动一个新SQl却LUS会话时,使用sqlplus命令以及/nolog选项,可 以不连接数据库而只启动sql和lus会话
Oracle11g 教案 一. Oracle 入门 1. 安装 Oracle11g 2. 验证 Oracle11g 是否安装成功 在控制面板中查看 2 个服务是否已启动 3. 登录 SQL*PLUS SQL*PLUS 是最常用的用于连接和使用 Oracle 数据库的实用程序。 SQL*PLUS 包括在 Oracle Database11g 服务器软件和客户机软件中。在服务 器或客户机上安装了 SQL*PLUS 软件之后,登录服务器或客户机并启动一个 SQL*PLUS 会话是一个非常的过程。由于每个 SQL*PLUS 会话都涉及与数据库 的连接,只要提供一个合法的用户名/密码组合就可以启动 SQL*PLUS 会话并 连接数据库。 sqlplus 账号/密码 例:sqlplus system/密码(此种方式会泄密) 连接指定数据库 例:sqlplus username@connect_identifier 使用具有 sysdba 或 sysoper 权限的身份登录 例:sqlplus username/password as sysdba 注意:as 子句允许有 sysdba 或 sysoper 系统权限的用户连接 SQL*PLUS 4. 用 connect 命令进行连接 登录到 SQL*PLUS 后,SQL*PLUS 的 connect 命令将帮助你以一个不同的用 户身份进行连接。在使用 connect 命令连接一个数据库后,还可以登录到另一个 不同的数据库。 connect newuser/newpasswd[@orcl1] 5.用/nolog 的无连接 SQL*PLUS 会话 在启动一个新 SQL*PLUS 会话时,使用 sqlplus 命令以及/nolog 选项,可 以不连接数据库而只启动 sql*plus 会话
Sqlplus /nolog 6.在SQL*却LUS中进行操作 在登录到SQL+PLUS界面后,可以输入任何SQL+PLUS、SQL或PL/SQL命令。 一条SQL语句由一个:或一个/结束,一个PL/SQL块由一个/结束,SQL*却LUS命 令以一个换行符结束。如果输入的是一个SQL+PLUS命令,SQL+PLUS客户机程序 将处理它,如果是一条SQL或PL/SQL语句,则数据库服务器会进行处理。 7.用于查看当前登录用户 show user; 8.清屏 clear screen; 9.退出SQL却LUS 输入exit或quit可以退出SQL*PLUS。. 注意:如果在SQL*PLUS中输入exit(quit)命令正常地退出会话,则事务 将立即被提交。否则不提交事务。 10.修改SQL提示符 set sqlprompt _user@_content_identifier>'; 1L.DESCRIBE命令 describe命令描述或列出表的列和列的说明, 12.将SQL缓冲区内容保存到文件中 save c:\\abc.sql append[replace] 13.在S0 L*PLUS中执行SQL脚本 run c:\\abe.sql /c:\\abc.sql c:\\abc.sql 14. 在SQL*LUS中进行编辑 当SQL语句出现错误时,通过edit指令调用编辑器修改语句,然后在 SQLPLUS中用“/”执行刚刚修改过的SQL语句。 二.创建Oracle数据库 L.通过Database Configuration Assistant创建数据库
Sqlplus /nolog 6.在 SQL*PLUS 中进行操作 在登录到 SQL*PLUS 界面后,可以输入任何 SQL*PLUS、SQL 或 PL/SQL 命令。 一条 SQL 语句由一个;或一个/结束,一个 PL/SQL 块由一个/结束,SQL*PLUS 命 令以一个换行符结束。如果输入的是一个 SQL*PLUS 命令,SQL*PLUS 客户机程序 将处理它,如果是一条 SQL 或 PL/SQL 语句,则数据库服务器会进行处理。 7. 用于查看当前登录用户 show user; 8. 清屏 clear screen; 9. 退出 SQL*PLUS 输入 exit 或 quit 可以退出 SQL*PLUS。 注意:如果在 SQL*PLUS 中输入 exit(quit)命令正常地退出会话,则事务 将立即被提交。否则不提交事务。 10. 修改 SQL 提示符 set sqlprompt ‘_user@_content_identifier>’; 11. DESCRIBE 命令 describe 命令描述或列出表的列和列的说明。 12. 将 SQL 缓冲区内容保存到文件中 save c:\\abc.sql append[replace] 13. 在 SQL*PLUS 中执行 SQL 脚本 run c:\\abc.sql / c:\\abc.sql @ c:\\abc.sql 14. 在 SQL*PLUS 中进行编辑 当 SQL 语句出现错误时,通过 edit 指令调用编辑器修改语句,然后在 SQLPLUS 中用“/”执行刚刚修改过的 SQL 语句。 二. 创建 Oracle 数据库 1. 通过 Database Configuration Assistant 创建数据库
2.查看当前连接的0 racle实例名 select instance_name from v_Sinstance; 3.修改账号密码 alter user system identified by 123456 4.解锁scott用户 alter user scott account unlock; 5.切换登录用户 conn scott/tigger: 6.创建用户 create user abc identified by 123: 7.授子用户权限 新创建的用户还不能登录到Oracle系统,必须对其授子权限后才能登录。 一般给用户授子2个系统内置的角色权限,分别是connect和resource。. grant connect,resource to: 注意:当开发完毕不需要再建表时,可以将resource角色撒销。 二.创建Oracle表 1.建表时字段常用的数据类型 数据类型英文描述 类型名称 说明 表示固定长度的字符串,最 大长度为2000个字符,1个 汉字按2个字符处理,如 char(10)中存放'He1lo' char 定长 字符 这个字符串是5个字符,存 放到char(10)的字段后,会 后补5个空格使得字符的长 度为10。 varchar:2变长 存放长度不确定的字符串
2. 查看当前连接的 Oracle 实例名 select instance_name from v_$instance; 3. 修改账号密码 alter user system identified by 123456; 4. 解锁 scott 用户 alter user scott account unlock; 5. 切换登录用户 conn scott/tigger; 6. 创建用户 create user abc identified by 123; 7. 授予用户权限 新创建的用户还不能登录到 Oracle 系统,必须对其授予权限后才能登录。 一般给用户授予 2 个系统内置的角色权限,分别是 connect 和 resource。 grant connect,resource to ; 8. 撤销用户权限 revoke resource from ; 注意:当开发完毕不需要再建表时,可以将 resource 角色撤销。 二. 创建 Oracle 表 1. 建表时字段常用的数据类型 数据类型 英文描述 类型名称 说明 字符 char 定长 表示固定长度的字符串,最 大长度为 2000 个字符,1 个 汉字按 2 个字符处理,如 char(10)中存放’Hello’, 这个字符串是 5 个字符,存 放到 char(10)的字段后,会 后补 5 个空格使得字符的长 度为 10。 varchar2 变长 存放长度不确定的字符串
最大长度为4000字符,如 varchar2(10)中存放, Hello',放入字段后实际长 度就是5个字符。 Long 超长字符串 最大长度2G integer 整形 小的整数 number可以表示任意精度的 number 任意精度数字 整数和小数。 只能存放最大长度为n的整 number (n n位长度的整数 数,例如number(⑤)存放的最 数字 大整数是99999。 存放n位有效数字和m位小 number(n 有效数字位数为 数的小数类型,例如 ,m) n,小数位为m number(5,2)存放的最大小 数位999.99。 含有年月日时分系统日期可以用函数 日期 date 秒的完整日期 sysdate来获得。 存放的字符串的最大长度为 clob 文本大对象 4G。 大对象 存放的二进制数据的最大容 blob 二进制大对象 量为4G。 示例表结构 EP(雇员表) 字段编号 字段名称 字段描述 字段类型 1 EMPNO 雇员编号 NUMBER(4) 2 ENAME 座员姓名 VARCHAR2(10) 3 JOB 工作职位 VARCHAR2(9) MGR 雇员的领导编号 NUMBER(4)
最大长度为 4000 字符,如 varchar2(10) 中 存 放 ’ Hello’,放入字段后实际长 度就是 5 个字符。 Long 超长字符串 最大长度 2G 数字 integer 整形 小的整数 number 任意精度数字 number 可以表示任意精度的 整数和小数。 number(n ) n 位长度的整数 只能存放最大长度为 n 的整 数,例如 number(5)存放的最 大整数是 99999。 number(n ,m) 有效数字位数为 n,小数位为 m 存放 n 位有效数字和 m 位小 数 的 小 数 类 型 , 例 如 number(5,2)存放的最大小 数位 999.99。 日期 date 含有年月日时分 秒的完整日期 系 统 日 期 可 以 用 函 数 sysdate 来获得。 大对象 clob 文本大对象 存放的字符串的最大长度为 4G。 blob 二进制大对象 存放的二进制数据的最大容 量为 4G。 示例表结构 EMP(雇员表) 字段编号 字段名称 字段描述 字段类型 1 EMPNO 雇员编号 NUMBER(4) 2 ENAME 雇员姓名 VARCHAR2(10) 3 JOB 工作职位 VARCHAR2(9) 4 MGR 雇员的领导编号 NUMBER(4)
5 HIREDATE 雇佣日期 DATE 6 SAL 工资 NUMBER(7,2) 7 COMM 奖金或佣金 NUMBER(7.2) DEPTNO 部门编号 NUMBER(②) DEPT(部门表) 字段编号 字段名称 字段描述 字段类型 1 DEPTNO 部门编号 NUMBER(2) 2 DENAME 部门姓名 VARCHAR2(14) LOC 部门位置 VARCHAR2(13) 2.语句创建数据库表 create table dept(-创建部门表 deptno number(2)primary key, dname varchar2(14)not null, loc varchar2(13)not null )[tablespace]: create table emp( empno number(4)primary key ename varchar2(10)not null, job varchar2(9), mgr number(4) hiredate date, sal number(7,2), comm number(7,2) deptno number(2)constraint dept_fk references dept(deptno) )[tablespace]: 在指定表空问建表 3.添加表列
5 HIREDATE 雇佣日期 DATE 6 SAL 工资 NUMBER(7,2) 7 COMM 奖金或佣金 NUMBER(7,2) 8 DEPTNO 部门编号 NUMBER(2) DEPT(部门表) 字段编号 字段名称 字段描述 字段类型 1 DEPTNO 部门编号 NUMBER(2) 2 DENAME 部门姓名 VARCHAR2(14) 3 LOC 部门位置 VARCHAR2(13) 2. 语句创建数据库表 create table dept( --创建部门表 deptno number(2) primary key, dname varchar2(14) not null, loc varchar2(13) not null )[tablespace ]; create table emp( empno number(4) primary key, ename varchar2(10) not null, job varchar2(9), mgr number(4), hiredate date, sal number(7,2), comm number(7,2), deptno number(2) constraint dept_fk references dept(deptno) ) [tablespace ]; 在指定表空间建表 3. 添加表列
alter table emp add sal number(7,2); 4.删除表列 alter table emp drop column sal; 5.重命名表列 alter table emp rename column comm to banus: 6.修改字段类型 alter table emp modify〈字段名>〈字段类型> 7.重命名表 alter table emp rename to emmp: 8.清空表中所有数据 truncate table emp: 9.删除表 通过使用drop table table_name命令可以删除一个表。但是在使用此 命令时,表不会立即被删除,Oracle只是筒单地重命名此表并将其存储在回 收站中(回收站实际上是一个简单的数据字典表)。这样,还可以恢复被意外 删除的表。 恢复被删除的表 flashback table tb_name to before drop: 恢复被删除的表的能力称为闪回删除特性。 特别注意:在默认的表空问创建的表将无法被闪回。 彻底删刪除数据表 drop table tb_name purge: 除具有关联性的表 在删除一个表时,该表上的所有索引也将被删除。如果要删除的表中包 含主键或由其他表的外键引用的唯一键,则必须在drop table命令中包括 cascade子句,以便将约束一并附除。 drop table emp cascade constraints; 10.创建表空问(tablespace) create tablespace ora2 datafile 'd:\oraloracle2.ora'size 100m
alter table emp add sal number(7,2); 4. 删除表列 alter table emp drop column sal; 5. 重命名表列 alter table emp rename column comm to banus; 6. 修改字段类型 alter table emp modify 7. 重命名表 alter table emp rename to emmp; 8. 清空表中所有数据 truncate table emp; 9. 删除表 通过使用 drop table table_name 命令可以删除一个表。但是在使用此 命令时,表不会立即被删除,Oracle 只是简单地重命名此表并将其存储在回 收站中(回收站实际上是一个简单的数据字典表)。这样,还可以恢复被意外 删除的表。 恢复被删除的表 flashback table tb_name to before drop; 恢复被删除的表的能力称为闪回删除特性。 特别注意:在默认的表空间创建的表将无法被闪回。 彻底删除数据表 drop table tb_name purge; 删除具有关联性的表 在删除一个表时,该表上的所有索引也将被删除。如果要删除的表中包 含主键或由其他表的外键引用的唯一键,则必须在 drop table 命令中包括 cascade 子句,以便将约束一并删除。 drop table emp cascade constraints; 10. 创建表空间(tablespace) create tablespace ora2 datafile ‘d:\ora\oracle2.ora’size 100m;
在创建表空问时,相对应的目录必领存在。 11.将数据导出 (①)导出单表 exp system/manager@myoracle file=d:\daochu.dmp tables=(tablel): system是用户名,manager是密码,myoracle是数据库名。 (②)导出整个数据库 exp system/managerOmyoracle file=d:\daochu.dmp full=y: 12.利用脚本文件向表中插入数据 脚本文件(create.sql) create sequence seq_banji start with 10 increment by 10:一创建序 列 insert into banji values(seq_banji.nextval,'Ao1'):-粗体字代表获 取序列内容 insert into banji values(seg banji.nextval,'A02'); 执行脚本文件 SQL>e c:\create.sql 13.导入单表数据 ip用户名/密码tables=-(表名>ignore=-y file=文件名 14.导入整个数据库 ip用户名/密码tables=-(表名>ignore=y file=文件名 注意:数据备份时,要脱离当前Oracle的环境,退到DOS文件系统内。 15.相关语句 (1)查询表结构 desc banji; (②)查询已存在的序列 select from user_sequences:
在创建表空间时,相对应的目录必须存在。 11. 将数据导出 (1) 导出单表 exp system/manager@myoracle file=d:\daochu.dmp tables=(table1); system 是用户名,manager 是密码,myoracle 是数据库名。 (2) 导出整个数据库 exp system/manager@myoracle file=d:\daochu.dmp full=y; 12. 利用脚本文件向表中插入数据 脚本文件(create.sql) create sequence seq_banji start with 10 increment by 10;--创建序 列 insert into banji values(seq_banji.nextval,'A01');--粗体字代表获 取序列内容 insert into banji values(seq_banji.nextval,'A02'); 执行脚本文件 SQL>@ c:\create.sql 13. 导入单表数据 imp 用户名/密码 tables= ignore=y file=文件名 14. 导入整个数据库 imp 用户名/密码 tables= ignore=y file=文件名 注意:数据备份时,要脱离当前 Oracle 的环境,退到 DOS 文件系统内。 15. 相关语句 (1) 查询表结构 desc banji; (2) 查询已存在的序列 select * from user_sequences;
(3)删除序列 drop sequence seq_banji; (④)查询当前用户下的表 select from tab: 16.练习 按照以下表结构建表 部门表(dept) deptno dname loc 10 ACCOUNTING NEW YORK 20 RESEARCH DALLAS 0 SALES CHICAGO 40 OPERATIONS BOSTON 员工表(emp) empno ename job mgr hiredate Sal comm deptn 0 7369 SMITH CLERK 79021980-12- 1000 20 17 7499 ALLEN SALESMA 7698 1981-02- 1800 300 30 20 7521 WARD SALESMA 7698 1981-02- 1450 500 30 22 7566 JONES MANAGER 7839 1981-04 3175 20 02 7654 MARTIN SALESMA 7698 1981-09 1350 1400 30 7698 BLAKE MANAGER 7839 1981-05 3050 30 01 7782 CLARK MANAGER 7839 1981-06-2650
(3) 删除序列 drop sequence seq_banji; (4) 查询当前用户下的表 select * from tab; 16. 练习 按照以下表结构建表 部门表(dept) deptno dname loc 10 ACCOUNTING NEW YORK 20 RESEARCH DALLAS 30 SALES CHICAGO 40 OPERATIONS BOSTON 员工表(emp) empno ename job mgr hiredate Sal comm deptn o 7369 SMITH CLERK 7902 1980-12- 17 1000 20 7499 ALLEN SALESMA N 7698 1981-02- 20 1800 300 30 7521 WARD SALESMA N 7698 1981-02- 22 1450 500 30 7566 JONES MANAGER 7839 1981-04- 02 3175 20 7654 MARTIN SALESMA N 7698 1981-09- 28 1350 1400 30 7698 BLAKE MANAGER 7839 1981-05- 01 3050 30 7782 CLARK MANAGER 7839 1981-06- 2650 10
09 7788 SCOTT ANASTLY75661981-12-3200 20 09 7839 KING PRESIDE 1981-11- 5200 10 nt 17 7844 TURNER SALESMA 7698 1981-09 1700 0 30 N 7876 ADAMS CLERK 7788 1983-01- 1300 20 12 7900 JAMES CLERK 7698 1981-12 1150 30 03 7902 FORD ANASTLY 7566 1981-12- 3200 20 03 7934 MILLER CLERK 7782 1982-01- 1500 10 23 三,数据库完整性约束 关系数据库中的完整性约束可以容易地且自动地在数据库表中实施重要的 业务规则。 1.主键约束 主键是表的非常重要的一类约束。如果一个列值要被唯一标识,可以为 该列值创建主键。定义为主键的列必须是唯一且非空的。 一个表只有一个主键,可以在创建表时创建主键。 create table dept(deptno number primary key); alter table dept add primary key(deptno): alter table dept drop primary key; alter table dept drop constraint pk_a 由于上例中的约束没有分配名字,因此0 racle将分配一个系统生成的约 束名。如果想要自定义一个约束名,可以使用以下方式: alter table dept add constraint dept pk primary key(deptno):
09 7788 SCOTT ANASTLY 7566 1981-12- 09 3200 20 7839 KING PRESIDE NT 1981-11- 17 5200 10 7844 TURNER SALESMA N 7698 1981-09- 08 1700 0 30 7876 ADAMS CLERK 7788 1983-01- 12 1300 20 7900 JAMES CLERK 7698 1981-12- 03 1150 30 7902 FORD ANASTLY 7566 1981-12- 03 3200 20 7934 MILLER CLERK 7782 1982-01- 23 1500 10 三. 数据库完整性约束 关系数据库中的完整性约束可以容易地且自动地在数据库表中实施重要的 业务规则。 1. 主键约束 主键是表的非常重要的一类约束。如果一个列值要被唯一标识,可以为 该列值创建主键。定义为主键的列必须是唯一且非空的。 一个表只有一个主键,可以在创建表时创建主键。 create table dept(deptno number primary key); alter table dept add primary key(deptno); alter table dept drop primary key; alter table dept drop constraint pk_a 由于上例中的约束没有分配名字,因此 Oracle 将分配一个系统生成的约 束名。如果想要自定义一个约束名,可以使用以下方式: alter table dept add constraint dept_pk primary key(deptno);
注意:如果主键中有多个列(即是一个组合键),则不能在表创建中对列 名指定主键名称。必须在create table命令的结尾并且在列出所有列之后, 作为一个单独项指定主键列。 2.非空约束 一个表通常有一个或多个列不允许为空,即没有值。可以在表的创建阶 段使用not null选项,强制用户必须为此列输入值。 create table dept(dname varchar2(30)not null) alter table dept modify dname not null; 3.检查约束 可以使用检查约束确保列中的数据在某个指定的参数范围内。 create table dept(comm varchar2(15)check(comm<2)): alter table abc modify ename check(ename in('Tom','Smith')); 4.唯一约束 唯一约束在关系数据库中很常见。此约束确保关系表中的行的唯一性。 一个表中可以有多个唯一约束。 create table dept(loc varchar2(20),constraint loc_ukey unique(loc)); alter table dept add constraint uk_dname unique(dname) 5。引用完整性约束 引用完整性约束确保某些重要列的值有意义。使用引用完整性约束,可 以确保合法对应字段值的存在。如果一个表中的字段是关联表的主健,则称 该字段为外键字段,因此称为外键。包含外键的表通过称为子表,而包含被 引用键的表称为父表。 create table emp( deptno number not null constraint dept_fkey references dept(deptno) ) alter table emp add constraint fk_deptno foreign key(deptno) references dept(deptno)on delete cascade;注意级联的作用
注意:如果主键中有多个列(即是一个组合键),则不能在表创建中对列 名指定主键名称。必须在 create table 命令的结尾并且在列出所有列之后, 作为一个单独项指定主键列。 2. 非空约束 一个表通常有一个或多个列不允许为空,即没有值。可以在表的创建阶 段使用 not null 选项,强制用户必须为此列输入值。 create table dept(dname varchar2(30) not null); alter table dept modify dname not null; 3. 检查约束 可以使用检查约束确保列中的数据在某个指定的参数范围内。 create table dept(comm varchar2(15) check(comm<2)); alter table abc modify ename check(ename in('Tom','Smith')); 4. 唯一约束 唯一约束在关系数据库中很常见。此约束确保关系表中的行的唯一性。 一个表中可以有多个唯一约束。 create table dept(loc varchar2(20),constraint loc_ukey unique(loc)); alter table dept add constraint uk_dname unique(dname); 5. 引用完整性约束 引用完整性约束确保某些重要列的值有意义。使用引用完整性约束,可 以确保合法对应字段值的存在。如果一个表中的字段是关联表的主键,则称 该字段为外键字段,因此称为外键。包含外键的表通过称为子表,而包含被 引用键的表称为父表。 create table emp( deptno number not null constraint dept_fkey references dept(deptno) ); alter table emp add constraint fk_deptno foreign key(deptno) references dept(deptno) on delete cascade;注意级联的作用