公司目前项目使用到了Oracle数据库 本人之前接触不多 计划4天 将Oracle数据库 快速入门 并结合开发使用,Oracle与MySql语法相似度很高,要一起学的小伙伴压力不要太大
Oracle数据库简介
Oracle Database,又名Oracle RDBMS,或简称Oracle。
是甲骨文公司的一款关系数据库管理系统。
它是在数据库领域一直处于领先地位的产品。
可以说Oracle数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小、微机环境。
它是一种高效率、可靠性好的、适应高吞吐量的数据库方案。
时间原因我就不多介绍:百度自行了解 Oracle优点以及使用场景
Oracle进阶
下面开始干货,直奔主题
务必知道: oracle是关系型数据库
-
特点
1、支持多用户、大事务量的事务处理 2、数据安全性和完整性控制 3、支持分布式数据处理 分布式:一个业务分拆多个子业务,部署在不同的服务器上 4、可移植性 可移植性指与软件从某一环境转移到另一环境下的难易程度。
-
oracle体系结构
1、数据库 1、Oracle 数据库是数据的物理存储。 2、Oracle 数据库的概念和其它数据库不一 样,这里的数据库是一个操作系统只有一个库。可以看作是 Oracle 就只有一个大数据库。 2、实例 1、一个Oracle实例(Oracle Instance)有一系列的后台进程(Backguound Processes)和内存结构(Memory Structures)组成。 2、一个数据库可以有 n 个实例。 3、数据文件(dbf) 1、数据文件是数据库的物理存储单位。 2、数据库的数据是存储在表空间中的,而一个表空间可以由一个或多个数据文件组成,所以数据真正是存储在一个或多个数据文件中。 3、一个数据文件只能属于一个表空间。一旦数据文件被加入到某个表空间后,就不能删除这个文件,如果要删除某个数据文件,只能删除其所属于的表空间才行。 4、表空间 1、表空间是 Oracle 对物理数据库上相关数据文件(ORA 或者 DBF 文件)的逻辑映射。一个数据库在逻辑上被划分成一到若干个表空间,每个表空间包含了在逻辑上相关联的一组结构。 2、每个数据库至少有一个表空间(称之为 system 表空间)。 3、每个表空间由同一磁盘上的一个或多个文件组成,这些文件叫数据文件(datafile)。一个数据文件只能属于一个表空间。 5、用户 1、用户是在表空间下建立的。 用户登陆后只能看到和操作自己的表,。 2、ORACLE的用户与 MYSQL 的数据库类似,每建立一个应用需要创建一个用户。 注意事项: 1、表的数据,是由用户放入某一个表空间的,而这个表空间会随机把这些表数据放到一个或者多个数据文件中。 2、oracle 是有用户和表空间对数据进行管理和存放的。 3、表不是由表空间去查询的,而是由用户去的。因为不同用户可以在同一个表空间建立同一个名字的表!这里区分就是用户了!
-
安装配置
-
安装oracle 默认端口号:1521 sqlplus system/itcast sqlplus system/itcast[@127.0.0.1](https://my.oschina.net/u/567043):1521/orcl
-
安装instantclient_12_1 是什么?oracle官方提供的用于连接oracle数据库的客户端工具。 怎么用? 1、win+r 打开运行窗口,输入cmd进入命令提示符界面 2、进入instantclient_12_1的安装目录 3、sqlplus system/itcast[@127.0.0.1](https://my.oschina.net/u/567043):1521/orcl
-
安装PLSQL Developer 是什么? PL/SQL Developer是一个集成开发境,由Allround Automations公司开发,专门面向Oracle数据库存储的程序单元的开发。 怎么用? PLSQL Developer的使用依赖instantclient,所以要先配置Oracle Home和OCI library Oracle Home D:developinstantclient_12_1 OCI library D:developinstantclient_12_1oci.dll 注意事项 : 安装目录不能有中文和空格,否则连接不上
-
设置环境变量 TNS_ADMIN 1、在 ORACLE 安装目录中找到tnsnames.ora 文件,拷贝到本地电脑的D盘根目录 2、修改tnsnames.ora文件 3、将TNS_ADMIN环境变量指向tnsnames.ora所在的路径
-
设置环境变量NLS_LANG 作用:解决中文乱码问题 1、查询服务器的编码 select userenv("language") from dual 我实际查到的结果为:AMERICAN_AMERICA.ZHS16GBK 2、设置变量名:NLS_LANG,变量值:第 1 步查到的值
-
数据库操作
创建表空间 create tablespace waterboss datafile "c:waterboss.dbf" size 100m autoextend on next 10m 解释: waterboss 为表空间名称 datafile 用于设置物理文件名称 size 用于设置表空间的初始大小 autoextend on 用于设置自动增长,如果存储量超过初始大小,则开始自动扩容 next 用于设置扩容的空间大小 创建用户 create user wateruser identified by itcast default tablespace waterboss wateruser 为创建的用户名 identified by 用于设置用户的密码 default tablesapce 用于指定默认表空间名称 用户赋权 grant dba to wateruser dba:角色名称 wateruser :用户名称
-
表操作
-
创建表
CREATE TABLE 表名称( 字段名 类型(长度) primary key, 字段名 类型(长度), ....... ); 例:创建业主表 create table t_owners ( id number primary key, name varchar2(30), addressid number, housenumber varchar2(30), watermeter varchar2(30), adddate date, ownertypeid number ); 注意事项:最后一行,不要有逗号
-
修改表
增加字段 ALTER TABLE 表名称 ADD ( 列名1 类型 [DEFAULT 默认值], 列名2 类型 [DEFAULT 默认值], ... ) 默认值可选 例:为业主表增加两个字段 ALTER TABLE T_OWNERS ADD ( REMARK VARCHAR2(20), OUTDATE DATE ) 修改字段类型 ALTER TABLE 表名称 MODIFY ( 列名1 类型 [DEFAULT 默认值], 列名2 类型 [DEFAULT 默认值], ... ) ALTER TABLE T_OWNERS MODIFY ( REMARK CHAR(20), OUTDATE TIMESTAMP ) -------------------------------------------------------- mysql中 修改表的列的类型长度及约束: alter table 表名 modify 列名 类型(长度) 约束; 例: alter table employee modify image varchar(80) not null; 修改字段名 ALTER TABLE 表名称 RENAME COLUMN 原列名 TO 新列名 例: ALTER TABLE T_OWNERS RENAME COLUMN OUTDATE TO EXITDATE ------------------------------------------------------- MySQL中 修改表的列名 alter table 表名 change 旧列名 新列名 类型(长度) 约束; 例: alter table employee change image eimage varchar(60); 删除字段 --删除一个字段 ALTER TABLE 表名称 DROP COLUMN 列名 --删除多个字段 ALTER TABLE 表名称 DROP (列名 1,列名 2...) 例: alter table t_test drop column age alter table t_test drop (hobby,age)
-
删除表
DROP TABLE 表名称
- 数据记录操作
-
插入数据
INSERT INTO 表名[(列名 1,列名2,...)] VALUES(值 1,值 2,...) 如果插入表中的所有列,那么列名可以省略,但值的顺序必须与列的顺序保持一致 例1: insert into T_OWNERS VALUES (1," 张 三 丰",1,"2-2","5678",sysdate,1); commit; 执行 INSERT 后一定要再执行 commit 提交事务 --------------------------------------------------------注意事项: * 列名的个数与值的个数对应. * 列的类型与值的类型对应.位置也要对应. * 列的类型如果是字符串或者日期,写值的时候使用单引号将值引起来. * 插入的值的最大长度不能超过列的最大长度. 复制表的数据(两个表的数据结构是一样的) INSERT INTO exam1 SELECT * FROM exam 复制表的数据(结构不一样) INSERT INTO exam1 (chinese,math) SELECT chinese,math FROM exam
-
修改数据
UPDATE 表名 SET 列名 1=值 1,列名 2=值 2,.... WHERE 修改条件; 注意事项: 执行 UPDATE 后一定要再执行 commit 提交事务 例: update T_OWNERS set adddate=adddate-3 where id=1; commit;
-
删除数据
delete DELETE FROM 表名 WHERE 删除条件; 执行 DELETE 后一定要再执行 commit 提交事务 例: delete from T_OWNERS where id=2; commit; truncate TRUNCATE TABLE 表名称 delete和truncate比较 比较 truncat 与 delete 实现数据删除? 1. delete 删除的数据可以 rollback 2. delete 删除可能产生碎片,并且不释放空间 3. truncate 是先摧毁表结构,再重构表结构
-
数据类型
字符型 1、CHAR : 固定长度的字符类型,最多存储 2000 个字节 2、VARCHAR2 :可变长度的字符类型,最多存储 4000 个字节 3、LONG : 大文本类型, 最大可以存储 2 个 G 数值型 NUMBER : 数值类型 例: NUMBER(5) 最大可以存的数为 99999 NUMBER(5,2) 最大可以存的数为 999.99 日期型 1、DATE:日期时间型,精确到秒 2、TIMESTAMP:精确到秒的小数点后 9 位 二进制型(大数据类型) 1、CLOB : 存储字符,最大可以存 4 个 G 2、BLOB:存储图像、声音、 视频等二进制数据,最多可以存 4 个 G
-
jdbc连接
oracle驱动名称:oracle.jdbc.driver.OracleDriver 瘦连接方式:jdbc:oracle:thin:@192.168.56.102:1521:orcl 注意事项: oracle10g版本使用 ojdbc14.jar的驱动程序 oracle11g版本使用 ojdbc6.jar的驱动程序
-
数据库备份
整库导出/导入 1、整库导出,不指定文件名 exp system/itcast full=y 添加参数 full=y 就是整库导出 执行命令后会在当前目录下生成一个叫 EXPDAT.DMP,此文件为备份文件。 2、整库导出,指定文件名 exp system/itcast file=文件名 full=y ------------------------------------------------------ 1、整库导入,不指定文件名 imp system/itcast full=y 如果不指定 file 参数,则默认用备份文件 EXPDAT.DMP 进行导入 2、整库导入,指定文件名 imp system/itcast full=y file=water.dmp 按用户导出/导入 1、按用户导出,指定文件名 exp system/itcast owner=wateruser file=wateruser.dmp ----------------------------------------------------- 2、按用户导入,指定文件名 imp system/itcast file=wateruser.dmp fromuser=wateruser 按表导出/导入 1、按表导出 exp wateruser/itcast file=a.dmp tables=t_account,a_area -------------------------------------------------------- 2、按表导入 imp wateruser/itcast file=a.dmp tables=t_account,a_area 注意事项: 用 tables 参数指定需要导出的表,如果有多个表用逗号分割即可
-
约束(扩展)
Primarykey:主键,不为空且唯一 Notnull:不能为空 Unique:唯一 Check:检查约束 foreign key:外键,关联另一个表中的主键 ALTER TABLE `orders` ADD CONSTRAINT `f_key_01` FOREIGN KEY (`cid`) REFERENCES `customer` (`cid`) ON DELETE RESTRICT ON UPDATE RESTRICT; restrict:如果子表中有匹配的记录,则不允许对父表对应候选键进行update/delete操作 cascade:在父表上update/delete记录时,同步update/delete掉子表的匹配记录 set null:在父表上update/delete记录时,将子表上匹配记录的列设为null no action:如果子表中有匹配的记录,则不允许对父表对应候选键进行update/delete操作
以上是day01 内容 如果急速入门,请抓重点 针对性学习 环境方面不必深究
分享给需要的伙伴~ 一起进步