oracle安装和使用
1.0 安装
2.0 初始化
1.使用 sqlplus 连接oracle数据库
1)在cmd中输入sqlplus /nolog
2)使用管理员账户登录orcl数据库实例
conn sys/gzsxt@orcl as sysdba
3)解锁scott账户
alter user scott account unlock;
4)通过scott账户登录
conn scott/tiger@orcl
修改新的密码:
新密码:tiger(输入是不可见的)
确认新密码:tiger(输入是不可见的)
5)已连接
2.使用 可视化工具 连接oracle数据库
3.0 SQL
3.1 select关键字
select关键字
作用:检索“列”
注意:1.select后面的列可以起别名(查询的显示结果)
1) 列名后面一个空格后添加别名(别名中不许有“空格”)
2) 列名后面一个空格后使用双引号添加别名
3) 列名后面一个空格后使用as关键字,在as后面添加别名
2.distinct用于对显示结果的去重
1) distinct必须放在select后面
2) 如果查询有多列,必须满足多列值都相同时,方可去重。
from关键字
作用:检索“表”
注意:检索的表后可以添加别名(别名不需要被双引号引起)
3.2 where关键字
select ename,job,sal from emp;
--例:查询工资大于2000的员工信息
select * from emp where sal >2000
-- =,!=,<>,<,>,<=,>=,any,some,all
--查询员工信息,条件:薪水要大于1000,薪水还要大于1500,薪水还要大于2000
select * from emp where sal > any(1000,1500,2000);
-- is null,is not null
select * from emp where comm is not null;
--错误:select * from emp where comm = null;
--查询员工薪水在2000-3000的员工信息
-- between x and y
select * from emp where sal between 2000 and 3000
--and,or,not
select * from emp where sal >=2000 and sal <=3000
-- in(list),not in(list)
--查询职务为 MANAGER 和 ANALYST 的员工信息
select * from emp where job = 'MANAGER' or job = 'ANALYST'
select * from emp where job in('MANAGER','ANALYST')
--查询工资为3000到50000的员工信息
select * from emp where sal in (3000,5000);
select * from emp where sal not in (3000,5000);
-- exists(sub-query)、not exists(sub-query)
select * from emp where exists(select * from dept where deptno =10)
select * from emp where not exists(select * from dept where deptno !=10)
-- like _ ,%,escape ‘\‘ _\% escape ‘\’
--模糊查询
--查询:员工姓名中含有“M”的员工信息
select * from emp where ename like '%M%'
select * from emp where ename like '_M%'
select * from emp where ename like '__O%'
select * from emp where ename like '%E_'
select * from emp where ename like '%\%%' escape '\'
“%”:匹配零个或若干个字符
“_”:匹配一个字符
在模糊查询中,如果查询的数据中有“%”,“_”时,可以使用escape自定义转义字符
3.3 order by关键字
order by关键字
作用:用于对查询结果进行排序
用法:
1.利用asc 、desc对排序列进行升序或降序
2.order by后可以添加多个列(逗号分隔),当一个列的值相同时,在按第二列进行排序,依次类推
例子:
显示所有的姓名、工种、工资和奖金,按工种降序排列,若工种相同则按工资升序排列。
select ename,job,sal,comm from emp order by job desc,sal asc
3.4集合操作
- union 并集(相同显示一次)
select * from emp where deptno = 20
union
select * from emp where sal >2000;
- union all 全集( 相同显示多次)
select * from emp where deptno = 20
union all
select * from emp where sal >2000;
- intersect 交集
select * from emp where deptno = 20
intersect
select * from emp where sal >2000;
- minus 差集
select * from emp where deptno = 20
minus
select * from emp where sal >2000;
注意:
1.保证两个sql查询的列数是个数一致的
2.保证两个sql查询的列的数据类型是一致的
3.保证两个sql查询的列是相同的,否则查询的结果是无意义的
3.5函数
3.5.1单行函数
单行函数:对单个数值进行操作,并返回一个值。
分类:
1.字符函数
1)concat(a,b) 拼接a,b两个字符串数据
2)initcap(x) 将每个单词x首字母大写
3)lower() / upper() 将字符串小写/将字符串大写
4)length() 获取字符串的长度
5)lpad(a,b,c) /rpad() 将a字符串左边填充至b长度,用c字符填充,如果c字符不填写,默认用空格填充
6)ltrim(a,b) / rtrim() 去除a字符串左边的b字符,如果b不传参,默认去除空格
7)replace(a,b,c) 将a中的b字符串替换为c
8)substr(a,b,c) 将a的字符串,从b位置开始截取,截c个长度
9)trim( a from b) 将b左右两边的a字符去除掉
2.数字函数
abs() 求取绝对值
ceil() 向上取整
floor() 向下取整
round() 四舍五入
power(x,y) x的y次幂
3.日期函数
sysdate 返回系统当前日期,注意没有括号
add_months(d1,d2) 在d1日期上,增加d2个月份
months_between(d1,d2) 返回d1和d2之间的相隔月份
last_day(d) 返回d日期所在月份最后一天的日期
next_day(d,X) 返回下一个“星期X”的日期
4.转换函数
to_char() 将数字、或日期转化为字符串
to_date() 将字符串转化为日期
to_number() 将字符串转化为数字
5.其他函数
nvl(x,y) 如果x为null,则显示为y,x和y的类型保持一致
sys_guid() 生成一个的32位随机字符串
decode() 条件取值,类同java的switch
case when then else end 条件取值,类同java的if-else if-else
3.5.2组函数
组函数又被称作聚合函数,用于对多行数据进行操作,并返回一个单一的结果
avg()求平均值,只能对数字类型进行处理,不处理空字段
sum()求和,只能对数字类型进行处理
count()计数,对任何类型生效,不处理空字段
max() 求最大值,对任何类型生效
min() 求最小值,对任何类型生效
3.6 group by关键字
作用:对查询结果进行分组处理
用法:
1.分组之后,不能将除分组字段之外的字段放在select后面
2.group by 后面可以跟多个字段,则这多个字段值都相同时,才分为一组
3.分组之后,可以使用组函数对每个组进行数据处理
having 关键字
作用:用于对分组数据进行过滤
用法:
类似于where的用法
3.7 sql语句顺序
sql顺序分为两类:
1.sql的书写顺序
select from where group by having order by [asc/desc]
2.sql的执行顺序
from where group by having select order by [asc/desc]
3.8 连表查询
3.8.1 sql1992
sql分类
1.笛卡尔积 (表乘表)
2.等值连接 表的连接条件使用“=”
3.非等值连接 表的连接条件使用“>、>=、 <、<=、!=、any等”
4.自连接 自己连接自己
5.外连接
1.左外连接,“(+)”在等号右边
2.右外连接,“(+)”在等号左边
3.“(+)”在哪一边的列,该表就补充null
3.8.2 sql1999
sql分类
1.cross join 交叉连接 (笛卡尔积) ,不需要on关键字
2.natural join 自然连接 (找两个表中相同的列,进行等值匹配),不需要on关键字
3.inner join 内连接
1)必须有on关键字,on表示连接条件
2)inner关键字可以省略
4.outer join 外连接,outer关键字可以省略
1) left outer join
2) right outer join
3) full outer join
3.9 DML
insert关键字
作用:往表中插入一条(多条)数据
语法1:元祖值式的插入
语法1:insert into tablename(column1,column2,...,columnN) values(value1,value2,...,valueN);
语法2:查询结果式的插入
语法2:insert into tablename sub-query
delete关键字
作用:从表中删除数据
语法:delete [from] tablename [where condition]
update关键字
作用:更新表中的数据
语法:update tablename set column1=value1,column2=value2,...,columnN=valueN [where condition]
3.10事务
事务(Transaction)是一个操作序列。这些操作要么都做,要么都不做,是一个不可分割的工作单位,是数据库环境中的逻辑工作单位。
目的:保证数据库的完整性
特点:事务不能嵌套
如何开启事务:
一个DML语句(insert、delete、update)的执行
如何关闭事务:
1.显示的调用commit或rollback
2.当执行DDL(Create、Alter、Drop)语句事务自动提交
3.用户正常断开连接时,事务自动提交。
4.系统崩溃或断电时事务自动回滚
3.11序列
一、概念:
序列(sequence):oracle专有的专有对象
二、作用:
产生一个自动递增的数列
三、创建一个序列:
create sequence seq_name
increment by 1
start with 1
四、使用序列:
序列名.nextval
序列名.currval
3.12视图
一、定义:
视图(view):一种不占用物理空间的虚表。
二、作用:
将一些查询复杂的SQL语句变为视图,便于查询
三、语法:
create [or replace] view v$_name
as sub-query
[with read only]
四、需要注意的点:
1.视图也可以从视图中产生
2.我们把用于产生视图的表称之为基表
3.我们对视图进行数据修改就是对基表进行数据修改,反之亦然
4.不能对多张表的数据,通过视图进行修改。
五、使用视图需要注意
1.一般来讲,只有重复出现非常多次的SQL语句,才会创建视图
2.数据库迁移,视图也得随之迁移,否则在新数据中是不能用的
3.创建视图时,尽量不要带or replace
3.13数据类型
数据类型分类:
1.number(x,y) 数字类型,x表示最大长度,y表示精度
2.varchar2(x) 可变字符串,x表示最大长度
3.char(x) 定长字符串,x表示最大长度
4.long 长字符串,最大2G
5.Date,日期(年月日时分秒)
6.TIMESTAMP 时间戳,精确到微秒
要掌握oracle数据类型,在java中的对应数据类型
https://www.cnblogs.com/softidea/p/7101091.html
3.14 DDL
1.create关键字
作用:用于创建数据库对象(表、视图、序列等)
语法: create table tablename(column1 dataType, column2 dataType,...,columnN dataType)
语法2:create table tablename as subquery
2.alert关键字
作用:用于修改数据库对象(表、视图、序列等)
语法:
1)alter table tablename add(columnname dataType)
2)alter table tablename modify( columnname dataType)
3)alter table tablename drop [column] columnname
3.drop关键字
作用:用于删除数据库对象(表、视图、序列等)
语法:
drop table tablename
3.15约束
一、定义
约束(constraint):在建表时,为某些列添加一些特定的规则,保证数据库的数据满足某种用户的要求。添加约束之后,在往表中(插入、更新)数据时,如果数据不满足约束,则该条语句不能执行
二、约束的分类
①非空约束 not null
②唯一约束 unique
③自定义检查约束 check
④主键约束 primary key
⑤外键约束 foreign key
三、如何添加约束
1)在建表的同时,可以为某一列添加约束
①在列后面直接追加约束
②在填写完所有列之后,添加约束
2) 在建表之后,通过修改表结构来添加约束
3.16三范式
第一范式
列不可分
第二范式
不能部分依赖
第三范式
不能存在传递依赖
3.17 索引
索引:类似于“书”的目录,索引可以加快对表的查询速度。
作用:在数据库中用来加速对表的查询,通过使用快速路径访问方法快速定位数据,减少了磁盘的I/O
使用:
CREATE INDEX index ON table (column[, column]...);
条件:
1.当数据量非常大的时候
2.当该列的值不经常重复的情况下
3.当该列的值不容易发生变化的情况下
重点:数据库会为我们的表自动创建索引,为表中的唯一键列自动的添加索引
oracle安装和使用的更多相关文章
- Oracle安装部署,版本升级,应用补丁快速参考
一.Oracle安装部署 1.1 单机环境 1.2 Oracle RAC环境 1.3 Oracle DataGuard环境 1.4 主机双机 1.5 客户端部署 二.Oracle版本升级 2.1 单机 ...
- 一键准备Oracle安装
在Linux下安装Oracle软件之前,有相当工作需要准备,包括建立用户.配置内核参数.配置资源限制参数.配置Oracle用户环境等,十分繁琐.即便十分熟悉,也需要花费一定的精力来准备.说白了,做这些 ...
- Oracle安装错误“程序异常终止
Oracle安装错误"程序异常终止.发生内部错误.请将以下文件提供给oracle技术支持部 "程序异常终止.发生内部错误.请将以下文件提供给oracle技术支持部门:" ...
- Oracle安装时OracleMTSRecoveryService找不到
电脑重做系统之后再安装oracle过程中出现一个问题,说OracleMTSRecoveryService找不到指定的目录文件,卸载重装还是没有改变,挣了半天终于找到怎么更改了,打开注册表编辑器,SYS ...
- oracle安装操作及遇到的错误
一.准备工作 服务器环境: 服务器端:VMWARE下的win7 64位系统 客户端:宿主机 WIN7 64位系统 软件环境: win64_Oracle_11gR2 PLSQL Developer 11 ...
- Oracle 安装及其遇到的问题
Oracle安装过程其实有很多的文档可以参考. 以oracle11g release版本为例: 从官网下载下来的zip ,包含两个部分,win32_11gR2_database_1of2.zip 以及 ...
- Windows下Oracle安装图解----oracle-win-64-11g 详细安装步骤
一. Oracle 下载 官方下地址 http://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.htm ...
- 【Linux】将Oracle安装目录从根目录下迁移到逻辑卷
[Linux]将Oracle安装目录从根目录下迁移到逻辑卷 1.1 BLOG文档结构图 1.2 前言部分 1.2.1 导读和注意事项 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到 ...
- Oracle 安装后关于用户
一.关于用户 Oracle安装会自动的生产sys用户和system用户: 1. sys用户是超级用户,具有最高权限,具有sysdba角色,有create database的权限,该用户的默认密码是ch ...
- 清理Oracle安装目录里的一些日志信息
最近测试环境服务器上磁盘空间紧张,表空间里面的数据也不知道开发哪些需要哪些不需要,而且因为此测试库运行时间比较久远,起码有三年了.于是就从清理Oracle安装目录下的日志下手. 发现在一般这几个日志, ...
随机推荐
- SAP HANA学习笔记
SAP HANA:High-Performance Analytic ApplianceSAP HANA XSC:Extended Application Services Classic(SAP推出 ...
- SpringMVC_执行原理
什么是SpringMVC 概述 Spring MVC是Spring Framework的一部分,是基于Java实现MVC的轻量级Web框架. 查看官方文档:https://docs.spring.io ...
- Vue-router的介绍
1.路由基础介绍 (1)什么是前端路由: 路由是根据不同的URL地址展示不同的内容或页面. 前端路由就是把不同路由对应不同的内容或页面的任务交给前端来做.之前是通过服务端根据URL的不同返回不同的页面 ...
- clion 的 安装 变量配置的 搬运工(有点基础应该能看 大家看不懂 就是我自己看 哈哈哈哈哈哈)
1 自行安装一个 clion 2 https://blog.csdn.net/u013023297/article/details/80723847 mingw 的配置 第二篇好像当时 ...
- Mac电脑如何彻底删除node
之前本来想搭建一个hexo来写博客的,但是最后还是放弃,老老实实就在博客园和CSDN写博文了,这里记录一下怎么在Mac电脑下彻底删除node.js的方法 下面这个方法是我结合了网上好几个方法综合在一起 ...
- 最大连续子序列和,以及开始、结束下标(HDU 1003)
HDU1003 Problem Description Given a sequence a[1],a[2],a[3]......a[n], your job is to calculate the ...
- 模拟jenkins通过shell给ansible传入变量
jenkins.sh #!/bin/bash name1='robin h h li' age1='11' declare -A dic dic=( [name1]="${name1}&qu ...
- JavaScript学习总结(三)
在学习完了基本的内容之后,我们来学习一下JavaScript中的对象部分以及如何自定义对象的问题. String对象 创建字符串的方式共有两种: 方式1:new String("内容&quo ...
- nginx_tcp_proxy代理酸酸乳
一.安装低版本的nginx(高版本不支持tcp代理模块:nginx_tcp_proxy_module)Nginx默认只支持http反向代理,要支持tcp反向代理,需在编译时增加tcp代理模块[ngin ...
- Python说文解字_杂谈01
1. Python在Ubuntu下面下载Python 2. 安装依赖包 sudo apt-get update sudo apt-get install build-essential python- ...