Oracle(1)

Oracle入门

Oracle的发展史
1977年6月,Larry Ellison和他的朋友在硅谷创建了一家软件开发实验室,这是oracle的前身。
1979年夏季发布了正式的正式的,比较完善的数据库。
1983年,正式更名为oracle公司。
2002年4月26日正式启用“甲骨文”作为公司的中文注册商标
主要的系统版本有oracle 8i、oracle 9i、oracle 10g、oracle 11g 一直到现在最新的oracle 18c

Oracle的功能特点

支持多用户,高并发事务处理
数据安全性和完整性方面性能优越
网格计算,Oracle能够把许多低成本的设备集成起来,为用户提供高性能的共享计算能力
具有较高的可移植性,能够在主流的操作系统和平台上运行

Oracle的结构体系:
Oracle只有一个数据库,他和mysql是不一样的。那你们会问我写项目怎么办,那么在Oracle中使用的是表空间也就是tablespace来区分。

启动Oracle数据库
Oracle服务以后台服务进程来进行管理。服务是数据库创建过程创建的,并且与数据库关联,启动或关闭Oracle数据库相关的服务,就是完成数据库的启动和关闭。
一个数据库有一项或者多项服务与之关联。
win+r 打开黑窗口,输入services.msc打开服务
OracleOraDb11g_home1TNSListener Oracle服务器的坚挺程序。运用远程或者工具控制Oracle时,必须开启监听服务
OracleServiceSID 是为SID(系统标识符)数据库实力创建的。其中SID是在安装Oracle 11g时输入的数据库名称。是Oracle的核心服务,启动Oracle实例必须启动服务。
OracleJobSchedulerSID 任务调度服务,负责按预先设定的时间周期性的执行某项用户自定义的功能,从而实现Oracle服务器的自动管理功能
OracleDBConsoleSID 负责在Windows平台下启动Oracle企业管理器

登陆Oracle数据库
使用SQLplus和plsql登陆数据库
使用sqlplus是连接本地服务器不需要打开监听
win+r,打开黑窗口
输入sqlplus+回车
在这里插入图片描述Scott用户刚开始使用时候是锁定的:需要解锁
在这里插入图片描述alter user scott account unlock;
这是固定格式

退出:
exit;
quit;
在这里插入图片描述查看当前用户:
show user;
在这里插入图片描述查看表结构:
desc 表名;
在这里插入图片描述

Sys用户 超级管理员主要用于维护系统和管理实例
System用户 默认管理员通常用来管理数据库用户、权限和储存等
Scott用户 是Oracle的示例用户,包含四张范表,默认口令是tiger
注意:建议日常的管理任务使用system用户登录Oracle数据库服务器。如果执行备份、恢复、更改数据库的任务,必须以sys用户登录Oracle数据库服务器。

使用plsql视图工具打开登录Oracle:
在这里插入图片描述我们发现,这时候时需要打开监听的。打开监听服务后登录scott用户
在这里插入图片描述在这里插入图片描述忘记密码,修改密码:
1.无密码登录:sqlplus /nolog
在这里插入图片描述2.以管理员身份做连接:conn / as sysdba;
在这里插入图片描述3.修改用户密码:alter user 用户名 identified by ‘密码’;
在这里插入图片描述SQL语言分类
数据定义语言,简称DDL。用于创建、修改和删除数据库对象。如:create table、
Alter table、drop table等
数据操纵语言,简称DML。用于操纵数据库数据。如select、update、delete、insert等
数据控制语言,简称DCL。用于授予权限和撤销权限的操作。包括grant(授予权限)revoke(撤销权限)。DCL语言可以自动提交事物
事物控制语言,简称TCL。用于维护数据的一致性。包括commit(提交事物)、rollback(回滚事物)、savepoint(设置保存点)
在这里插入图片描述Oracle常用数据类型
1、字符类型
Char 固定长度字符串,长度不足时以空格补充,最多储存2000个字节
Vachar2 可变长度字符串,最多储存4000个字符。
2、数值类型
Number(m)/Number(m,n) 可以储存正数、负数、零、定点数和精度为38位的浮点数。M表示精度,也就是总位数,n表示小数点后面的位数
在这里插入图片描述
3、日期类型
Date类型,长度是7个字节,年月日时分秒、精确到时分秒
Timestamp 精确到毫秒、纳秒,又称时间戳。
在这里插入图片描述
4、大数据类型
CLOB大字符串对象类型
BLOB大二进制类型
注意:Oracle支持integer、float、double等数值类型,建议采用自身的number类型。Oracle也支持varchar建议采用varchar2类型

在这里插入图片描述

alter table 命令:

1、向已经创建的表中添加一列
格式:alter table 表名 add 列名 数据类型;

2、修改表中指定列的数据类型和类型长度
格式:alter table 表名 modify 列名 数据类型;

3、删除表中指定的列
格式: alter table 表名 drop column 列名;

4、给表中添加约束
添加唯一约束:
unique 或主键约束 primary key,格式一致

格式:alter table 表名 add constraint 约束名 约束的类型(列名)

添加外键约束:
alter table 表名 add constraint 约束名 foreign key (列名)references 表名(主键列)

添加检查约束check:
格式: alter table 表名 add constraint 约束名 check(条件)
在这里插入图片描述在Oracle中是没有自增的,这是Oracle和MySQL的区别;
那么,如果我们想要添加数据怎么办,这和我们的添加语句是一样的
insert into 表名(列名1,列名2.。。)values(列值1,列值2.。。)
在这里插入图片描述

sql序列实现自增

序列(sequence)是一个命名的序列生成器,它能以串行的方式生成一系列顺序整数,序列生成最大38为的整数。
Start with 用于指定序列的起始值
Increment by 用于指定序列的增量,如果去负数,则为递减序列
Minvalue | nominvalue 指定序列是否又最小数
Maxvalue | nomaxvalue 指定序列是否有最大数
Cycle | nocycle 指定序列达到最大之后,是否从新从最小值开始产生
Cache | nocache 指定是否在缓存中保存预先分配的序列值,如果选择cache,可以提高获取序列的速度
Order | noorder 是否保存序列值是否唯一和有序
语法: create sequence 序列名 序列相关语句
在这里插入图片描述创建好的序列怎么取出来?
使用序列时,需要用到序列的两个伪列nextval和currval,其中nextval返回的序列下一个值。Currval返回序列当前值
在这里插入图片描述不能向虚表dual插入数据,但是可以使用该表来选择系统变量,或求一个表达式

sql命令实现增改改查

添加数据:
Insert into 表名(列名1,列名2,。。。)values(列值1,列值2,。。。);
在这里插入图片描述在这里插入图片描述在这里插入图片描述修改语句:
语法:update 表名 set 列名=列值 where 条件
在这里插入图片描述删除语句
语法:delete from 表名 where 条件
Truncate table 表名 (这是清除表的意思,不可以加条件)
在这里插入图片描述查询:
语法:select 列名1,列名2,。。。from 表名
Join 表名2 on。。。
Lift join 表名3。。。
Right join 表名4。。。
Where 条件
Group by
Having
Order by
查询语句:
单行子查询
子查询是指嵌套在其他SQL语句中的查询,它可以出现在SELECT、WHERE、FROM等语句中,使用子查询,可以用一系列简单的查询构成复杂的查询,从而增强SQL语句的功能,而单行子查询指的是不向外层查询返回记录或者只返回一条记录
例:要求查询工资最高的雇员信息。
SELECT EMPNO, ENAME, SAL, HIREDATE FROM EMP WHERE SAL= (SELECT MAX (SAL) FROM EMP);
在这里插入图片描述
多行子查询
多行子查询可以向父查询返回多行记录。但在where语句中使用多行子查询时,必须使用多行运算符(IN、NOT IN、EXISTS、NOT EXISTS、ALL和ANY等)。
例:要求查询工资高于部门20中所有员工的雇员信息。
SELECT ENAME, JOB, SAL, DEPTNO FROM EMP WHERE SAL >= ALL (SELECT SAL FROM EMP WHERE DEPTNO=20);
在这里插入图片描述
相关子查询
相关子查询是指引用了父查询中某些列的子查询,一般可以在SELECT或WHERE语句中使用相关子查询。
例:查询负责管理其他雇员的管理员信息。
SELECT ENAME, JOB, SAL, DEPTNO FROM EMP A
WHERE EXISTS (SELECT * FROM EMP B WHERE B.MGR = A.EMPNO);
在这里插入图片描述在这里插入图片描述
多列子查询(in :表示相应字段在子集合字段中对应的值。)
例:查询各部门中工资最低的雇员信息 。
select * from emp where (sal,deptno) in (select min(sal),deptno from emp
group by deptno)order by deptno;
在这里插入图片描述
分页查询
1、Rownum
是一个伪列,它会根据返回的记录生成一个序列化的数字。可以使用Rownum列返回查询结果集中前N条记录
select rownum,deptno,ename,job,mgr,hiredate from emp where rownum<10
2、分页实现(注意此处rownum必须取别名。)
例:每5行为一页,现在要显示第2页,就是要显示第6行到第10行
select e.* from ( select rownum r,deptno,ename,job,mgr,hiredate from emp ) e Where r>5 and r<11;
select * from ( select rownum r,empno,
deptno,ename,job,mgr,hiredate from emp where rownum<11) e Where r>5;
在这里插入图片描述

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值