Oracle数据库学习笔记

Oracle数据库学习笔记

---------

Oracle数据库简介:
Oracle:甲骨文
Oracle 10g
Oracle 11g
---------------------------
Oracle 数据库的安装
Oracle对于个人学习使用的时候是不收费的,用在商业上
www.oracle.com 下载,将下载的两个文件夹复制到一个文件夹中,合并文件
安装的时候,关闭防火墙,关闭360这些的杀毒软件:这些东西阻止了它认为的组阻止的内容,就像它给你电脑清理垃圾的时候有时候会删除很多文件,删除的都是它认为不好的文件,就删除了

Oracle数据库里很多的代码是用java写的所以安装的时候启动会比较慢

安装Oracle 11g 数据库:
卸载oracle 11g 数据库:
1.卸载正常安装完成后的Oracle 11g数据库:
>使用oracle提供的卸载程序
>重新启动电脑,进入到安全模式(重启的时候按F8键即可)
>找到系统上对应的安装oracle的时候的磁盘的路径,并且删除
>运行注册表命令"regedit.exe",Ctrl+F 搜索oracle相关的然后全部删掉
>再次重新启动电脑后就可以重新执行安装了
>
2.卸载安装的时候失败了的oracle 11g 数据库
>重新启动电脑,进入到安全模式(重启的时候按F8键即可)
>找到系统上对应的安装oracle的时候的磁盘的路径,并且删除
>运行注册表命令"regedit.exe",Ctrl+F 搜索oracle相关的然后全部删掉
>再次重新启动电脑后就可以重新执行安装了
>

如果这两种方法都不能正常安装oracle数据库的话,重新刷一个新的windows操作系统,再来安装oracle数据库

 

--------------------------------
安装前的检查环境的时候出现错误的时候,选择忽略

Oracle安装成功后的样子

 

-------------------
Oracle数据库安装完成后 口令管理的设置:
超级管理员:sys / change_on_install
普通管理员:system / manager
普通用户:scott / tiger oracle数据库的创始人中有一个叫scott 养了一只喵叫tiger
大数据用户: sh / sh
--------------------------
作为程序员,能使用命令行完成的就不要用图形化界面点点点
=============
sqlplus 命令行:Win+R 后输入sqlplus命令来登录Oracle
或者用明文的账户和密码登录
cmd 后输入:sqlplus scott/tiger
==============
SQL中的命令是不区分大小写的,不过固定的搭配尽量使用大写,自定义的可变的用小写
数据库的组成是数据表,每一张数据表包含有多条数据记录,
11.格式化指令:
SET LINESIZE 300; 设置每行显示的数据长度
SET PAGESIZE 30; 设置每页显示的数据行数
-------------------------
SELECT * FROM emp;

ed 文件名 默认创建的.sql结尾的sql记事本文档
@文件名称使用创建的sql记事本文档,默认找的是.sql结尾的记事本文档
--------------
11.sqlplus切换用户:
CONN 用户名/密码 AS SYSDBA
CONN system/manager
CONN sys/change_on_install AS SYSDBA

emp表属于scott用户的
show user;

echo 哎靠命令
-------------------
11.调用本机的命令:
在oracle数据库中调用windows自己的命令,HOST命令用来在Oracle数据库中调用本机的命令
HOST echo helloworld
复制一个文件
HOST copy d:\test.mp4 d:\hello.mp4

-----------------------
11.什么是SQL
SQL:SQL是指结构化的数据库查询语言

Oracle数据库是第一个支持SQL语法的数据库,
---------------
11.SQL的语法:
SELECT
FROM
WHERE
GROUP BY
HAVING
ORDER BY
INSERT
UPDATE
DELETE
CREATE
DROP
ALTER
GRANT
REVOKE
---------------------------
11.SQL的类型
DML:数据操作语言,开发中使用的部分:数据库的查询和更新操作,
DDL:数据定义语言,开发前的设计:数据对象的创建(表和用户)
DCL:数据控制语言:权限管理的操作(DBA的内容)

--------------------------
11.SCOTT 用户表的结构
scott用户一共有4张数据表

1.查询一个用户下的所有数据表;
SELECT * FORM 表名
2.查询一个表的结构
DESC 表名称

一个中文等于2个字符
oracle中3个字符表示一个中文
------------------------------------------
11.简单查询:简单查询指的是,查询一张数据表中所有数据行的内容,

[] 中括号中内容表示可选项
SELECT [DISTINCT] * ,列名,列名,,,FROM 表名称

第一个执行的是from,第二个执行的是select
from子句用来确定数据的来源,
SELECT * FROM emp;

查询员工编号,姓名,职位,工资
SELECT empno,ename,job,sal FROM emp;

查询所有的职位信息
SELECT job FROM emp ;

查询所有的职位信息,且查询的内容中没有重复信息
SELECT DISTINCT job FROM emp ;

11.SQL中的四则运算:执行先乘除后加减
查询员工的编号,姓名,基本年薪
SELECT empno,ename,sql*12 FROM emp;

11.定义SQL查询中的别名
查询每个员工的编号,姓名,年薪(每年可领15个月工资,每个月有200元的餐补,100元车费补贴,100元电话补贴,每年有5个月的高温补贴500元)

给年薪取了个别名income
SELECT empno,ename,
(sal*15+(200+100+100)*12+200*5) income FROM emp;

11.SQL中的常量:
>常量是字符串,使用单引号声明,字符串需要写在单引号之间 'helloword'
>常量是数字,直接编写即可
>常量是日期,按日期的格式编写:‘日-月-年’

SELECT '常量字符串',empno,ename FROM emp ;

11.将两个列的数据合并为一个列
SELECT empno||ename FROM emp ;

SQL查询中别名不需要声明,直接编写即可
查询员工编号,姓名,员工的年薪
SELECT '员工编号:'||empno ||', 姓名 :'||ename||',年薪收入:'||sal info FROM emp ;

11.SQL中的单行的简单查询:
>简单查询是将一张 数据表中所有数据行的内容都显示出来;
>在查询语句之中先执行的是FROM子句来确定数据源(控制的是行和列,也就是查询一张数据表的全部内容),SELECT 子句可以控制需要显示的数据列,
>如果出现数据的重复,可以使用DISTINCT来消除重复的数据显示行
>SELECT子句可以进行四则运算
>SELECT子句可以直接输出常量的内容,对于字符串的输出使用英文的单引号来声明,日期按照字符串格式编写
>|| 用来进行把查询的输出内容进行连接
>

---------------------------
=====>>>限定查询:
SELECT [DISTINCT] *,列名,列名[列别名],,,
FROM 表名称 [表别名]
WHERE 过滤条件

执行顺序:先执行FROM子句来确定数据来与,再执行WHERE子句来确定满足条件的数据行,最后再执行SELECT子句来控制要显示的数据列
-------------------
11.SQL中的运算符
关系运算符:>,< ,>=, <= ,<>,!= 进行大小比较操作使用
逻辑运算符:AND,OR,NOT
范围运算符:BETWEEN..AND
谓词范围:IN,NOT IN
空判断:IS NULL,IS NOT NULL
模糊查询:LIKE
------------------------
查询出所有基本工资高于1500的员工的信息
SELECT *
FROM emp
WHERE sal>1500;
----------------------
查询出zhangsan 员工的信息
SELECT *
FROM emp
WHERE ename='zhangsan' ;
------------------------------
Oracle数据库中的数据内容是区分大小写的

查询工资是5000的员工的基本信息
SELECT * FROM emp WHERE sal=5000 ;

Oracle中所有的运算符的运算中不分区数据类型直接使用
----------------
查询职位不是销售人员的,员工编号,姓名,职位
SELECT empno,ename,job FROM emp WHERE job!='salesman' ;
SELECT empno,ename,job FROM emp WHERE job<>'salesman' ;
---------------
11.逻辑运算符
>与连接:所有的判断条件都需要满足
>或连接:很多个条件中只要有一个符合即可
>
>
查询出工资在1500到3000之间的员工的信息
SELECT *
FROM emp
WHERE sal>=1500 AND sal<=3000 ;
-----------------
查询工资大于2000或者是职位是程序员的所有员工的信息
SELECT *
FROM emp
WHERE sal>2000 OR job='programmer' ;
---------------
非:如果条件为真,结果为假的,如果条件是假的,结果则是真的

查询所有工资小于2000的员工的所有信息
SELECT *
FROM emp
WHERE sal<2000 ;

非逻辑:
SELECT *
FROM emp
WHERE NOT sal>2000 ;
------------------------------
11.范围查询:BETWEEN最小值的数字或日期..AND最大值 查询结果中包含了满足条件的最小值也包含了满足条件的最大值

查询工资在1500到2000之间的员工,且包含了1500和2000
SELECT *
FROM emp
WHERE sal>=1500 AND sal<=2000;

SELECT *
FROM emp
WHERE sal BETWEEN 1500 AND 2000;
--------------
查询所有在1981年入职的员工的信息
SELECT *
FROM emp
WHERE hiredate BETWEEN '01-1月-1981' AND '31-12月-81';
----------------
11.空判断:不确定的内容,
查询出工资不为空的员工的所有信息
SELECT * FROM emp WHERE Money IS NOT NULL;

SELECT * FROM emp WHERE NOT Money IS NULL;

不为空的两种写法:
IS NOT NULL 等同于 NOT IS NULL
--------------
11.IN 操作符的范围是指定的可选的范围,

查询出员工编号是7369,7566,7788,9999的员工的信息
SELECT * FROM emp WHERE empno ='7369' OR empno ='7566' OR empno ='7788' OR empno ='9999' ;

SELECT * FROM emp WHERE empno IN(7369,7566,7788,9999);

不再指定的范围中使用NOT IN
查询出员工编号不是7369,7566,7788,9999的员工的信息
SELECT * FROM emp WHERE empno NOT IN(7369,7566,7788,9999);

SELECT * FROM emp WHERE NOT empno IN(7369,7566,7788,9999);
-----------------
SQL在执行数据库查询时,程序是通过把数据抓取到内存中读取的
计算机起源于:冯诺依曼的计算机数学公式
-------------
NOT IN 是为了查询部分数据行,如果有了NUL(因为某些数据永远不可能为空,)就变成了查询全部,
所以NOT IN 不能直接出现,在有空的查询的时候,

数据库的设计理论来源于:数学集合中的交叉并补
--------------------
11.模糊查询:LIKE
下划线 _ 匹配任意的一位字符
百分号 % 匹配任意的位数的字符,零位,一位,多位

查询姓名是以字母A开头的员工的信息
SELECT * FROM emp WHERE ename LIKE 'A%';

查询姓名中的第二位是字母A的员工的信息
SELECT * FROM emp WHERE ename LIKE '_A%';

查询姓名中含有字母A的员工的信息
SELECT * FROM emp WHERE ename LIKE '%A%';
LIKE模糊查询的时候,如果不设置查询的关键字,那么表示查询数据表中的全部内容
SELECT * FROM emp WHERE ename LIKE '%%';

SELECT * 查询效果和速度都比 LIKE的WHERE子句的不设置关键字的查询要好
---------------
>WHERE子句控制着显示数据行的操作,
>SELECT子句控制着显示数据列的操作,
>WHERE子句中不能使用和定义别名
>使用LIKE实现模糊查询的时候,如果不设置关键字('%%')表示的是查询数据表中的全部内容
>使用NOT IN 查询时,查询范围里面不允许出现null(空值),否在执行的SQL查询语句不会返回任何的查询结果
>
========================
====>>>SQL中的排序查询
SELECT [DISTINCT] *,列名,列名[别名],,,
FROM 表名称 [别名]
ORDER BY 字段[ASC][DESC],字段[ASC][DESC] ;

先执行FROM子句,后执行WHERE子句,再执行SELECT子句,再执行ORDER By子句
因为ORDER BY子句是在SELECT子句之后执行的,所以ORDER BY子句可以使用SELECT子句定义的别名

ASC 默认的查询排序,按照升序的方式排列
DESC 按照降序的方式排列

查询所有的员工信息,要求按照工资由高到低排序
SELECT * FROM emp ORDER BY sal DESC ;
查询所有销售员工的信息,要求按照入职日期由早到晚排序 数字的值由小到大排序,也就是升序排序
SELECT * FROM emp WHERE job='salesman' ORDER BY sal DESC ;

按照工资由高到低排序,如果工资相同,则按照雇佣日期由早到晚排序
SELECT * FROM emp ORDER BY sal DESC ,hiredate ASC ;

SELECT * FROM emp ORDER BY sal DESC ,hiredate ;
----------------
ORDER BY 子句在SELECT子句之后执行,所以可以使用SELECT子句定义的别名
查询员工的员工编号,姓名,年薪,并按照年薪由低到高排序,有小到大从左到右,从上到下
SELECT empno,ename ,sal*12 income FROM emp ORDER BY income ASC;
----------------
>在整个SQL查询语句中只有ORDER BY子句可以调用SELECT子句定义的别名
>ORDER BY 是最后一个执行的查询子句
>ORDER BY 子句有两种排序方式:ASC和DESC
>ORDER BY 子句是唯一一个可以使用SELECT子句中定义的别名的子句
>
>
SQL中的子句:
---------------

 

简单的基础查询
查出部门30中的所有员工
SELECT * FROM emp WHERE deptno=30;

查询所有办事员CLERK的姓名,编号和部门编号
SELECT ename,empno,deptno FROM emp WHERE job='CLERK';

找出佣金高于薪资60%的员工
SELECT * FROM emp WHERE comm >sal*0.6;

找出部门中所有的经理MANAGER和部门20中所有的办事员CLERK的信息

SELECT * FROM emp WHERE (deptno=10 AND job='MANAGER') OR (deptno=20 AND job='CLERK');

找出部门中所有的经理MANAGER和部门20中所有的办事员CLERK的信息,既不是经理又不是办事员但薪资大于等于2000的所有员工的详细资料
SELECT * FROM emp WHERE (deptno=10 AND job='MANAGER') OR (deptno=20 AND job='CLERK') OR (job NOT IN ('MANAGER','CLERK') AND sal>=2000);

找出收取佣金的员工的不同工作
SELECT DISTINCT job FROM emp WHERE comm IS NOT NULL ;

找出收取佣金或收取的佣金低于100的员工
SELECT * FROM emp WHERE comm IS NULL OR comm<100;

显示不带有R的员工的姓名
SELECT * FROM emp WHERE ename NOT LIKE '%R%';

显示姓名字段的任何位置包含"A",的所有员工的姓名,显示的结果按照基本工资由高到低排序,如果基本工资相同,则按照雇佣年限由早到晚排序,如果雇佣日期相同,则按照职位排序
SELECT * FROM emp WHERE ename LIKE'%A%' ORDER BY sal DESC ,hiredate ASC ,job;

 

 

 

 

 

 

 

 


一般项目的开发过程:
>获取需求阶段
>需求分析与业务设计
>数据库设计
>程序开发与业务实现
>程序的测试
>程序的运维
>

主键
外键
自动增长

 ------------------------------

游标是一个指向上下文的句柄或叫指针handle
1.定义游标
2.打开游标
3.提取游标数据
4.关闭游标

 


SQL书写中的注释
-- 我是注释

 

 

 

 

 

 

 

表示尊重和理解
很多东西都是积累的过程
powerdesigner 用来实现数据库ER图用的,是sybase开发的数据

优秀的人注定是特别的,普普通通注定是平庸的

DBMS选择哪个数据库管理系统

会创造的,会模仿的,模仿的多了就会了,多写几次结果自然就出来了(肯德基和麦当劳)


 

 

 

学到了什么,收获了什么,有什么感受

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

==============================

附录:学习中想到的一些乱起八糟的

./install


信手拈来的东西都是我多年实践沉淀积累下来的
------------------
学习中心里想到的一些乱七八糟:
MySQL数据库是跟PHP最匹配的

看视频为什么要整理成笔记:因为视频上讲解和解释的废话太多了,看过之后把重要的记录更新到博客里面去

UDP协议发送的消息不可靠,它只管发个消息给你,你接收或是不接收它不管你
TCP/IP 非要建立三次握手后才可以,发送的消息很可靠

电脑上的防火墙尽量关了
交换机堆叠:也就是把两个交换机当做一个交换机来用,看作是一个交换机
交换机冗余:就是用两个交换机实现相同的功能,两个交换机配置完全相同,也就是备份交换机

Nginx :N吉克斯
---------------------
有的时候该有的自信,还是要有的

睡觉是我最大的敌人,我睡觉不是因为无聊而是我真的累了

自己有问题请别人帮忙解决,肯定是想办法跟别人搞好关系,
-------------------------------
让别人讲解技术,记不住就偷偷的录屏或是录音,偷师学艺
只要你对它足够熟悉:你会有自信,所以你要很熟,熟都每个步骤都要记得

我有心想把事情做好,你们自己不配合,不想提高不怪我,因为懒啊,都是些平庸之辈,所以人和人之间是有差距的
----------------------
就像电影被嫌弃的松子的一生一样,生而为人,不管什么时候,自己永远要放在第一位,自己活着永远只为自己活着,活着是自己的,人生是自己的,所有的痛苦和快乐都是自己的,如果你连自己的不爱,你连自己都不依靠你真的不配活着
活着所有的感受都是自己的,难受就是难受,不开心就是不开心,不喜欢就是不喜欢,没有任何人可以给你分担也永远都不可能让别人替你活着,活着永远都是自己一个人的事情
--------------------------------

 

----------------------------------

转载于:https://www.cnblogs.com/GaoNa/p/9848177.html

你可能感兴趣的:(数据库,php,网络)