数据库
目录
1.数据库简介
Oracle Database,又名Oracle RDBMS,或简称Oracle,是著名的Oracle(甲骨文)公司的数据库产品。Oracle是世界上第一个商品化的关系型数据库管理系统。Oracle采用标准SQL(结构化查询语言),支持多种数据类型,提供面向对象的数据支持,具有第四代语言开发工具,支持UNIX、WINDOWS、OS/2等多种平台。Oracle公司的产品丰富,包括Oracle服务器、Oracle开发工具和Oracle应用软件。其中最著名的就是Oracle数据库,目前最新版本是Oracle 19C。
- 数据库操作
2.1表空间
一个数据库可以有一个或者多个表空间,一个表空间对应着一个或者多个物理的数据库文件。
表空间是数据库最小的恢复单位。是物理磁盘上的一个文件。
2.2创建表空间
create tablespace 表空间的名字 datafile ‘表空间的存储位置’ size 表空间的大小,单位是M
2.3创建用户
create user 用户名
identified by 密码
default tablespace 表空间的名 -----分配表空间
temporary tablespace temp ------临时变空间
alter user 用户名 identified by 密码 ----修改密码
drop user 用户名 ----删除用户
2.4用户授权
grant connect,resource,dba to 用户名
connect -----使用简单权限,只有增(insert)删(delete)改(updata)查(select)以及创建表、视图、序列(sequence)、簇(cluster)、同义词会话和其他数据的链(link)。
resource ----可以创建自己的表、序列、过程(procedure)、触发器(trigger)、索引(index)和簇。
dba ----拥有所有权限。
2.5库的备份、还原
备份:exp username/password@bdname file=e:\hrp.dmp full=y
还原:imp username/password@bdname file=e:\hrp.dmp full=y
3表
insert into md_division select * from ehis.md_division; -----将一个表中的数据导入另一张表
3.1创建表
create table 表名称(
id varchar2(50) primary key ,----主键
name char(200) not null,----非空
phone number(11) unique,----唯一约束
class carchar(10),
foreign key (name)----外键
)
3.2删除表、数据
drop table 表名(直接删除表)
delete from 表名 (后面不加where语句会直接删除表中所有数据,删除之后需要show一下)
truncate table 表名 (删除表所有数据,会释放空间,效率高)
修改表名字:ALTER TABLE 原表名 RENAME TO 新表名;
3.3表字段语句
添加字段:alter table 表名字add 字段名 字段属性 default 缺省值------缺省值又叫默认值
修改字段类型:alter table 表名字 modify 字段名 新字段属性
删除字段:alter table 表名字 drop column 字段名
3.4表查询
in ----在里面
on in ----不在里面
exist ----与in的用法相似
注:若是子查询结果集比较小使用in ,反之用exist
模糊查询:%代表就是与任意字符匹配,_表示的是匹配一个字符
排序:order by 默认是升序排布(asc),降序是desc
distinct ----去除重复值
3.5表连接查询
自连接(join):查询zaocan表中价格高于甜沫的所有数据
select * from zaocan a
join zaocan b
on b.canname="甜沫" and a.canprice>b.canprice
左连接(left join):
select 属性,属性 from 表一 别名 left join 表二 别名 on 条件
右连接(right join)、全连接(full join-列出两表全部,不符合的以空值代替)、合并结果集(union--无重复行、union all--有重复行)使用方法同上。
3.6限制返回条数
Oracle:使用rownum 配合order by使用,SELECT * FROM EMP WHERE ROWNUM <= 10 ORDER BY sal DESC;
SqlServer:使用top,select top10 from emp;
mysql:使用limit, select * from emp limit 10;
3.7数据类型
Oracle中使用的是varchar2;
varchar2是一个变长字符串,不会用空格进行填充;
char会用空格进行填充。
number(p,s) ----p是指精度(总长度),s是指小数位数并且四舍五入。
大文本:
BLOB ----最多存储4GB的数据,可以存储电子表格、字处理文档、图像等;
CLOB ----最对存储4GB的数据,适合存储纯文本信息。
3.8查询
select * from 表名 where 条件
3.9删除
delete from 表名 where 条件 ----需要提交事务,也就是show一下
truncate table 表名 ----删除表,不可回退
3.10修改
update 表名 set 列1=值1,列2=值2,列3=值3... where 条件
3.11添加
insert into 表名 (列1,列2,列3...) values(值1,值2,值3...) ----除添加个别数据之外需写列名其他可以省略,括号不可以省略。
4.视图
试图就是一个虚拟表。就是将一个查询语句封装起来,后期直接查找视图即可。
优点:为了集中数据,简化用户的数据查询和处理;屏蔽数据库的复杂性;简化用户权限的管理;便于数据共享;可以重新组织数据。
创建:
create or replace view 视图名 as 查询语句...
or replace----是指旧视图已经存在,替换为新视图。
- 触发器
是一种在事件发生时隐式的自动执行的PL/SQL块,不能接受参数,不能被显示调用。
DML触发器、替代触发器、系统事件触发器。
创建:
create no replace trigger 触发器名
instand of 触发器事件
on 视图名称
for each row ----对于每行数据都会触发
where 触发条件
触发体(PL/SQL块)
6慢sql
优化:需要什么就查什么,不要用*;合理使用索引,保证索引没有失效;分解关联查询;优化分页。