一.Oracle基础入门
数据库管理系统软件
网络数据库管理系统:(RDBMS:关系型数据库管理系统,以表为单位来存储数据)
Mysql,Sql Server,Oracle
DB2,Informix,Sybase....
操作数据库中的数据都是通过SQL来实现的。
Oracle11g:是一个Oracle数据库系统。
1.在Oracle11g的系统下可以创建多个数据库
2.在安装Oracle11g时会自动创建一个数据库(orcl)
如果在Oracle11g中有数据库,需要输入对应的用户名/密码才能进入数据库。
sys,system--->manager
内置用户:
(1)普通用户:scott
(2)管理员:sys,system
3.在使用Oracle数据库客户端工具进入数据库之前,需要启动数据库服务及监听器
(1)启动服务
>service.msc----进入服务面板
>启动对应的oracle服务(在oracle中每创建一个数据库就会生成一个对应的服务;
数据库的服务名称:oracleservice+数据库名称)
net start|stop oracleserviceservice
(2)启动监听器
lsnrctl start|stop
二.Oracle数据库的结构
1.逻辑结构
数据库>表空间>数据段>数据区间>数据块
2.物理结构
数据文件(dbf):存储数据的
日志文件(log):记录数据库操作的日志信息
控制文件(ctl):记录物理文件的信息
三.怎样创建自定义用户(使用管理员来创建)
1.创建用户
create user user_name identified by password
[default tablespace 表空间名称]
分析:
(1)创建用户时,用户使用的表空间应存在,如果不存在则要先创建表空间;
(2)表空间也有内置的,也可以创建表空间
(3)如果创建用户时没有指定表空间,则用户默认使用user表空间。
2.授权给用户
grant connect,resource to 新用户;
撤消权限:revoke connect from 用户;
3.登录新用户
conn 新用户
再输入对应的用户名和口令
4.更改用户的表空间及密码
alter user 用户名 identified by 密码;
[default tablespace 表空间的名称]
5.删除用户
drop user 用户名 [cascade];
注:如果加上cascade表示级联删除;
6.用户锁定与解锁
锁定:alter user 用户名 account lock;
解锁:alter user 用户名 account unlock;
7.创建表空间
creat tablespace 表空间的名称 datafile 数据文件 size 大小(m);
8.删除表空间
drop tablespace 表空间的名称 [including datfiles and contents];
9.修改表空间
alter tablespace 表空间的名称 datafile 数据文件 size 大小(m);
10.新建数据库
dbca | DataBase Configuration Assiant;
11.数据库的删除
universal installer;
四.Oracle表的基本操作
数据库对象:数据库中数据的集合
对象的类型:表,视图,过程,索引,序列,同义词...
数据库中表是基本的对象
1.sql语句的分类
(1)DDL(数据定义语言)
作用:创建,修改,删除数据库中的对象
create/alter/drop/truncate table
(2)DML(数据白操纵语言):对表的数据进行操作
select/update/delete/insert
(3)DCL(数据控制语言):对用户进行授权与权限回收操作
grant..to/revoke...from
数据库的权限:系统权限,对象权限
(4)TCL(事务控制语言)
commit/rollback
commit:提交事务(将缓冲区的数据写入数据文件中)
rollback:撤消事务;
2.创建表时应遵循的三大范(3NF)
(1)1NF
要求表的每个字段都是不可再分的,字段具有原子性。
(2)2NF
要求表中的每一行数据需要提供一个唯一的标识;
表中数据不能重复的字段称为主键。
(3)3NF
消除传递依赖
一个表在引用另一个表的主键字段后,不能将另外一个表的非主键字段设计到该表中
3.Oracle的数据类型:
字符型:char(),varchar2()
数值型:number()
日期型:date(),timestamp
大对象型:cblob(大型文本数据),blob(二进制数据 如图片,视频,音频)
4.表结构的操作
(1)查看表结构:desc 表名;
(2)添加字段:alter table 表名 add 字段名 类型;
(3)修改字段名称:alter table 表名 rename column 原字段名 to 新字段名;
(4)修改字段类型:alter table 表名 modify 字段 新的数据类型;
(5)删除字段:alter table 表名 drop column 字段名;
(6)更改表名称:rename 表名 to 表名;
(7)删除表:drop table 表名;
(8)向表中添加数据:insert into 表名 [(字段名,字段名2)] values (提供各个字段的数据 );
(9)查询表中的数据:select * from 表名 [where|order by|group by]
(10)模糊查询: select ... from 表名 where 字段 like'条件';
(11)修改数据:update 表名 set 字段=值,字段=值,... [where];
(12)删除数据:delete from 表名 [where];
where可以用在select,update,delete语句中,其功能是用于筛选,where后面需要指定筛选的条件,
筛选的条件可以有多个。
(13)删除表中的所有数据:
1))delete from table_name;
2))truncate table table_name;
3))drop table table_name;
五.约束
1.约束
(1)主键:某一个字段的值不能重复。
建表时在主键字段的类型后加:primary key
通过修改表结构来创建主键约束
唯一:不能重复,主键其实就是唯一约束。
check约束:
如:alter table stuinfo add constraint checkage check (age>0 and age<=120);
alter table stuinfo add constarint checksex check(sex='男' or sex='女');
(2)外键:如果一个表中的字段引用另外一个表的主键,该字段称为外键。
外键的数据类型与主键类型一致
外键字段的值在主键中出现过
alter table 表名 add constraint 约束名 约束条件;
2.函数
聚合函数:sum(),max(),min(),avg(),count()
日期:sysdate()
字符:instr(),substr(),lower(),upper(),initcat()
转换:to_char,to_number,to_date,nvl()
3.子查询:一个DML语句又包含查询语句
子查询可以出现在where后,或者是from后面
4.连接查询;多表查询
同时从多个表中查询
select * from dept,emp;
(1)内连接:等值连接
(2)左外连接:左边的表是主表;
会显示主表中的所有记录和从表中符合连接条件的记录
(3)右外连接:右边的表是主表;
会显示主表中的所有记录和从表中符合连接条件的记录
5.rownum,rowid(伪列)
13 4 1: 1-4 2:5-8
rownum:行号,rownum是从1开始的,依次递增
作用:实现数据的分页
select * from (select rownum rn,emp.* from emp where
rownum<=当前页*每页的记录数) e
where e.rn>(当前页-1)*每页的记录数
rowid:表中每行记录的存储地址,rowid不可能重复的
作用: 可以删除重复的数据
delete Test where rowid not in(select min(rowid) from Test group by id)
delete Test ts where rowid not in (select min(rowid)
from Test where ts.id=id and ts.name=name);
六.数据库对象
1.同义词
在oracle数据库中的表以用户为单元组织管理,在默认情况下,一个用户无法访问另外一个
用户创建的表,如果需要访问,需要指定表的所属者,管理员所属的对象默认是不向普通用户开放的。
概念:就是给用户所属的对象起一个别名
语义:create [public] synonym 同义词名称 from 用户名.对象名
drop [public] synonym 同义词名称
2.序列
产生一系列数据
语法:create sequence 序列名称
[start with n]:指定序列的起始值
[increment by n]:指定序列每次增长的值
[minvalue n]:设置序列循环时的起始值
[maxvalue n]:指定序列的最大值
[cycle]:设置序列可以循环
[cache n]:设置缓存的数据大小(默认是20)
创建序列时如果没有指定任何参数,序列是从1开始,
每次增长1,没有最大值的限制
minvalue:用于设置序列循环的初始值,
如没有指定循环从1开始;minvalue的值不能大于
start with的值
1>序列的两个属性
currval:获取序列的当前值
(序列在首次使用时,不能使用currval属性,因为序列还未初始化;因此首次需通过nextval属性让序列初始化)
nextval:获取序列产生的下一个数据
3.索引
建立索引的作用:可以提高查询数据的速度,提升性能。
原理:为什么建立索引可以提高查询速度呢
如果没有建立索引的情况下,会进行全表扫描,假设一张表中1000w条数据,那查询速度就会很慢。
一旦建立索引后,就会生成一个索引页的存储结构,在数据库索引页的结构是树的结构。
使用场景:
(1)表的数据量比较大(1w)
(2)通常对经常用做查询条件的字段建立索引
(3)索引字段不是越多越好
使用注意:
(1)索引字段不是越多真好
(2)如果一个增删改操作多,查询操作少,这样的表最好不要建立索引
(3)索引会减缓表的增删改速度
(4)建立索引后,索引不一定会生效
如何建立索引:
索引字段并非越多越好,对于经常用做查询条件的字段
对于有大量重复数据的字段,创建索引是不合理的
建立索引:
语法:
create index empnameIndex on 表名(字段名)
索引的分类:
普通索引:create index 索引名称 on 表名(字段名)
位图索引:create bitmap index 索引名称 on 表名(字段名)
唯一索引:create unique index 索引名称 on 表名(字段名)
主键就是一个特殊的惟一索引
组合索引:create index 索引名称 on 表名(字段1,字段2)
场景:如果经常使用多个字段同时查询
基于函数的索引:create index 索引名称 on 表名 函数
索引的不足:减缓了数据的增,删,改的效率
4.视图
作用:通过视图可以简化数据查询操作。
语法:create view 视图名 as select ....
注意:视图对象并不存储数据;通过查询视图得到的数据,仍然是从表中查询出来的。
数据库字典表:通过数据字典表可以查询数据库中各种对象的信息
user_:当前用户自己创建的该数据库对象
all_:当前用户自己创建的该数据库对象和有权限使用的数据库对象
dba_:只有管理员才有权限
所有的数据库对象
user_tables,user_synonyms,user_views,
user_sequences,user_indexes
user_tablespaces
user_objects:存储数据中所能的数据库对象信息