OracleDay01
引言:这篇文章和知识脑图整理了很多,补了一段时间没有发文章了,知识点很多,一般是熟悉和安装服务器数据库,另外一般是SQL中简单查询,“骨头”硬的话可以慢慢“啃”,尽可能“搅碎”,数据库还是比较简单和基础的!
整理了很久的,用的话帮博主点个赞呗
Oracle 的概念
什么是Oracle
Oracle是一个关系型(表)数据库,Oracle(甲⻣文公司)也是一个公司的名称Oracle数据库的
市场份额是最多的,Mysql数据库也是
甲骨文公司的Oracle数据库价格昂贵,主要在电信、银行、
证券、国企领域使用,Mysql主要是小公司、互联网行业应用比较多Oracle版本:Oracle 9i--Internet、Oracle 10g--grid、Oracle 11g、Oracle 12c--cloudOracle默认端口是1521
数据和数据库
数据(data):数字、文字、图形、视频等数据库(database):管理数据的仓库,其的创建和存在是满足一定的规则,这些规则称为范式
学号姓名课程成绩系名系主任99张三java90计算机李四99张三C语言80计算机李四第一范式(1NF):每一了都是不可再分的(所有字段值都是不饿分解的)第二范式(2NF):不存在部分依赖,所有主键完全要依赖于主键,不能依赖于主键的一部分
依赖:主键的值可以决定费主键的值,费主键依赖于主键
例如
学号+课程 |成绩 :成绩是完全依赖于主键(主键+课程名)
学号+课程|姓名 :姓名部分依赖于主键(学号)
拆分:
学号|姓名|系名|系主任 (学生表) :主键--学号
学号|课程|成绩 (成绩表) :主键--学号+课程名
第三范式(3NF):不存在传递依赖
例如
学号---姓名
学号---系名---系主任
拆分:
学号|姓名|系名 (学生表):主键--学号
系名|系主任 (系名):主键--系名
学号|课程名|成绩 (成绩表):主键--系名
数据库管理系统(DBMS):Oracle、Mysql
表
属性--字段--列元组--记录--行域-值域:属性的取值范围主键:能够唯⼀的标识⼀条记录的属性(列)或属性组(
联合主键)外键:在A表中不是主键,但是在B表中是主键,这一列就叫做A表的
外键
Oracle数据库安装
安装服务器完成后测试
数据库服务器sqlplus工具,Oracle自带,可以连接到数据库进行操作
--服务器登录
--sys用户:
sqlplus sys/test123 as sysdba ----
数据库鉴权
--普通用户:sqlplus scott/tiger
--sys用户:
sqlplus / as sysdba ----
操作系统
鉴权
--客户端登录
--sys用户:
sqlplus sys/test123@orcl_100
as sysdba
---数据库鉴权
--普通用户:
sqlplus scott/tiger@orcl_100
安装完成后,scott用户是锁定的,可以在口令管理中解锁,也可以使用命令解锁使用命令解锁scott用户
使用sys用户登录到数据库
sqlplus / as sysdba在sql提示符下输入
alter user scott account unlock;
修改密码
alter user scott identified by tiger;
3. 手机市场
sys 超级管理system 管理员scott 普通用户
4. 数据监听
运行在数据库服务器上一个进程,负责处理
数据库连接请求查看监听 lsnrctl status=lsnrctl=listener+control停止监听 lsnrctl stop启动监听 lsnrctl start
5. 客户端工具
对数据库操作一般不使用自带的sqlpus工具,使用PLSQL Developer,是第三方的工具,将工具放到客户端上,打开使用,目录不要有中文 两个窗口
SQL窗口--执行sql语句的窗口命令窗口---相当sqlplus登录后的窗口,可以执行sql语句和sqlplus命令 sqlplus命令:查看表结构--看一个表有哪些列,类型、长度 desc 表名;
SQL语句分类
语言分类详细描述1、
数据查询语句select2、数据操纵语句(DML)Insert;Update;Delete;3、
数据定义语句(DDL)Create;Alter;Drop;Rename;Truncate;4、事务控制语句(TC)Commit;Rollback;Savepiont;5、数据控制语言(DCL)Grant;Revoke;其应用频率(重要程度)是从上到下递减的
SQL查询
了解表及表结构
emp
Name Type Nullable Default Comments
-------- ------------ -------- ------- --------
EMPNO NUMBER(4) 工号
ENAME VARCHAR2(10) Y 姓名
JOB VARCHAR2(9) Y 职位
MGR NUMBER(4) Y 经理的工号
HIREDATE DATE Y 入职时间
SAL NUMBER(7,2) Y 月薪
COMM NUMBER(7,2) Y 奖金
DEPTNO NUMBER(2) Y 部门号
dept
Name Type Nullable Default Comments
------ ------------ -------- ------- --------
DEPTNO NUMBER(2) 部门号
DNAME VARCHAR2(14) Y 部门名
LOC VARCHAR2(13) Y 地址
salgrade
Name Type Nullable Default Comments
----- ------ -------- ------- --------
GRADE NUMBER(4) Y 级别
LOSAL NUMBER(8)Y 最低工资
HISAL NUMBER(8) Y 最高工资
SQL查询注意事项
关键字以及列名、表名不区分大小写语句可以换行,但是关键字不能换行语句以分号结尾
--查询用户下有哪些表
select * from user_tables;
--重记录
--可以使用distinct关键字去重
--查询员工表中的部门号
select distinct deptno from emp;
--定义列的别名
--使用as关键字 格式:列名(表达式) as 别名
--查询员工的年薪
select ename,sal*12 年薪 from emp;
select:识别什么列
from:识别那个表
where子句
比较运算符
等于和不等于:=,<>/!=
--查询不是部门10的员工
select ename from emp where deptno<>10;
大于和小于:>,<
--查询工资位于8000以下和10000以上的员工信息
select * from emp where sal<8000 and sal>10000;
select * from emp where sal not between 8000 and 10000;
大于等于和小于等于:>=,<=
--查询工资7000以下(包含3000)的员工名字
select ename from emp where sal<=7000;
其他比较运算符
between...and... 两者之间
--查询工资位于8k-10k的员工信息
select * from emp where sal between 8000 and 10000;
in 匹配列出的值
--查询部门是10和20的员工信息
select * from emp where deptno in(10,20);
select * from emp where deptno=10 or deptno=20;
null 空值
--查询奖金不为空的员工信息
select * from emp where comm is not null;
like 模糊查询
% 表示n个字符
--查询以熊开头的所有同学信息
select * from student where sname like熊%;
_ 表示1个字符
--查询第二个名字是思的所有同学信息
select * from student where sname like_思%;
and
--查询部门10里面工资大于8000的员工名字
select ename from emp where deptno=10 and sal>8000;
or
--查询部门10或者工资小于6000的员工信息
select * from emp where deptno=10 or sal<6000;
not
--查询奖金不为空的员工名字
select ename from emp where comm is not null;
优先级顺序
--NOT>AND>OR
--查询部门10和20中工资大于6000的员工
select * from emp where (deptno=10 or deptno=20) and sal>6000;
order by 子句
排序
asc :升序desc:降序位置位于select语句的最后
--查询员工年薪从高到低
select ename,sal*12 年薪 from emp order by 年薪 desc;
以上子句在SQL执行顺序
from whereselectorder by
总结:简单查询还有一点没有讲到,在下面一章里会提,知识架构图用的话,帮博主点点关注,后期不定时更新,觉得帮到你的话可以留个赞~