Oracle数据库概述
Oracle数据库系统是美国ORACLE公司(甲骨文)提供的以分布式数据库为核心的一组软件产品,是目前最流行的客户端/服务器(CLINT/SERVER)或B/S体系结构的数据库之一。
一、Oracle和mySql的对比
dog | mysql | Oracle |
---|---|---|
开源(免费) | 免费 | 不免费 |
并发数量 | 并发量少 | 并发量大 |
数据类型 | int 、varchar、date | number、varchar2 |
主键自增 | 自增(建表时勾选) | 创建序列 |
备份 | 没有自动备份 | 自动备份 |
操作 | 一个用户可以操作多个数据库 | 一个用户只可以操作一个数据库 |
大小写 | 不区分大小写 | 严格区分大小写 |
二、Oracle基本操作语句
操作中利用到的表
1、创建表空间
create tablespace llll(表空间名称) datafile 'C:/hello.ora' size 1000m;
2、创建用户
create users system(用户名) indentified by system default tablesapce llll(表空间名称) quota 500m on users
3、给用户设置权限
grant all privileges to system
4、基本操作语句
4.1创建表
create table emp(
id number(4),
name varchar2(30),
age number(3),
gender char(1),
salary number(8,2)
);
4.2设置主键(序列)
create sequence emp_seq start with 1002 increment by 1;
4.3插入语句
insert into emp values(emp_seq.nextval,'张无忌',8,0,5615.51);
4.4添加列,时间列
alter table emp add(hiredate date);
4.5插入有日期函数的数据
insert into emp values(emp_seq.nextval,'赵敏',8,0,5615.51,to_date('2017-10-21','yyyy-MM-dd'));
4.6更新数据
update emp set salary=9500 where name='张三丰';
4.7删除一条数据
delete from emp where name='张三丰';
4.8批量删除(有序between ....and)
delete from emp where u_id between 1002 and 1005;
4.9批量删除(无序,伪列----行号)
delete from users where rownum<6;
4.10条件查询
4.10.1(1)需求:查询员工工资小于5000
(2)分析几张表:一张表
(3)分析查询字段:表中所有字段
(4)条件字段:工资sal
select * from emp where sal<5000;
4.10.2(1)需求:查询员工薪水低于5000,姓名为‘韩梅梅’
(2)分析几张表:一张表
(3)分析查询字段:表中所有字段
(4)条件字段:sal 、name
select * from users where sal<5000 and u_name='韩梅梅';
4.10.3模糊查询like
(1)需求:查询用户薪水低于5000,姓韩
select * from users where sal<6000 and u_name like '%韩%';
4.11过滤distinct(去重)
select distinct u_name from emp;
4.12排序,对工资进行排序正序asc(默认项)、倒序desc
select * from users order by sal desc;
4.13两表联合查询
分析:
(1)需求:查询10号部门下所有的员工
(2)涉及两张表
(3)涉及字段 emp * dept ,dname
(4)关联字段e.deptno=d.deptno
select e.*,d.dname from emp e join dept d on e.deptno=d.deptno where d.deptno=10;
4.14左连接
(1)概念:满足左表条件的显示,不满足为null
select e.*,d.dname from emp e left join dept d on e.deptno=d.deptno where d.deptno=10;
注意:(1)left...join两边两张表
(2)on 后面跟条件
4.15分页查询(伪列)
select * from (
select c.*,rownum r from(
select * from emp)
c)where r<6 and r>0;
4.16根据部门分组
select * from emp group by deptno;
4.17删除表
drop table users
4.18给表起别名
select e.* from emp e
4.19删除列
alert table emp drop(salary)