加入收藏 | 设为首页 | 会员中心 | 我要投稿 源码网 (https://www.900php.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

orcle_day01

发布时间:2020-12-30 21:49:40 所属栏目:百科 来源:网络整理
导读:副标题#e# Oracle: 数据库, 1,认识数据库 数据库:数据的仓库,保存大量数据的地方,有利于对数据的维护。增删改查很方便。 数据库分类: 层次型数据库:现实世界中很多事物是按层次组织起来的。层次数据模型的提出,首先是为了模拟这种按层次组织起来的事


安装数据库:
1521端口号 oracle的主服务端口号:使用oracle必须开启oracle主服务
8080端口号 oracle监听端口号:使用网页oracle或者使用工具连接oracle需要开启监听服务

localhost:8080/apex--->网页版oracle

oracle基础前导操作:
1.以管理员方式登录oracle
sqlplus system/密码
show user:显示当前登录的用户名字

2.创建新用户briup,密码briup
create user briup identified by briup;
3.给新用户briup授权
grant connect,resource to briup;

使用网页版oracle 创建用户:
不推荐
推荐:sqlplus:sql命令创建oracle数据库

3.激活用户:
alter user briup account unlock;
4.切换至briup用户
conn briup/briup
5.设置当前会话(session)的日期语言格式
alter session set nls_date_language=english;
6.执行sql文件
start e:/table.txt
@路径
7.查询当前用户下有哪些表?
select table_name from user_tables;

查看表有哪些列?
desc 表名

学习阶段主要涉及表:
S_EMP :员工表
id id
last_name 后名字 姓
first_name 前名字 名
userid 员工内部编号,没用
start_date 入职日期
comments 注释:记录员工的特点
manager_id 经理的id
title 职称
dept_id 所在部门id外键
salary 工资
commission_pct 提成

S_DEPT:部门表
id id
name 部门名称
region_id 所在地区id的外键

S_REGION :区域表
id id
name 区域名

三张表 主键 外键 关系需要很清楚

oracle二维表中列的数据类型:

1,NUMBER[(p,s)] 数值类型
p代表有效位数 精度(总长度),
s代表小数点后位数 刻度
eg:
NUMBER(6,2):
123456.00
1234.123
1234.12
123.123

NUMBER(3):
123
12.3
0.123
123.00

2,字符类型:
2.1:CHAR(8) 定长字符类型:占用空间固定
00000tom
0000lisi
hello world 不能保存

2.2:VARCHAR(8) mysql 变长字符类型:占用空间 跟着输入有关
2.3:VARCHAR2(8) oracle 变长字符类型:占用空间 跟着输入有关
tom
lisi
hello world 不能保存
oracle中字符串用 ‘‘表示
oracle关键字不区分大小写,但是字符串区分大小写


3,日期类型:DATE
默认:04-9月-17
3.1:日期类型,世纪年月日时分秒都会保存
3.2:中文语言环境:
系统默认:‘DD-MM-YY‘
eg:‘16-7月-17‘ ---> 2017/7/16
3.3:修改当前语言环境:
alter session set nls_date_language=english;
3.4:英文语言环境
系统默认:‘DD-MM-YY‘
eg:‘16-JULY-17‘ ---> 2017/7/16
3.5:修改日期显示格式
alter session set nls_date_format=‘yyyy-mm-dd‘;
eg:select sysdate from dual;

【写一个长得和日期一样的字符串】

4,CLOB:超级长字符,整本小说的所有字符串 可以保存

5,BLOB:字节数组:可以用于保存文件的二进制字节数组.
字节数组: byte[]

select 语句 :作用:查询数据
1:distinct :消除重复行,有多条重复数据就只会显示一条

语法:
select [distinct] {*|(列名1,列名2...)}
from table;

* : 所有的列

样例:
(1)查询s_dept表中的所有信息
eg:

select * from s_dept;

(2)查询s_emp表中的last_name,salary
eg:

SeleCT LAst_NaME,Salary
from S_emP;

(3)查看s_emp表id,last_name,salary字段信息(列)
eg:

select id,salary
from s_emp;

(5) 查询所有部门名
eg:
select name
from s_dept;
(5.1) 去除重复的行

select distinct name
from s_dept;

2,起别名:给某一个列 起别名
语法:
select 列1 as 新列名字,列2 as 新列名字...
from 表
a.使用as


b.空格后直接跟别名
select 列1 别名1,列2 别名2...
from 表

c.使用双引号区分大小写

3,算术运算符 + - * /

查询出来的列是可以运算的

当月工资 加 100;

eg:查询 s_emp 中last_name 列和年薪


4,nvl(参数一,参数二):空值函数
参数一 : 可能为空的列,
参数二 : 如果参数一的列为空 就使用参数二的值代替

单纯查工资和提成:
egs:
select salary,commission_pct
from s_emp;

eg: 查询当月工资:
使用nvl空值函数 进行操作

select salary*(1+ nvl(commission_pct,0) )
from s_emp


5,连接符||:可以将多个字符串或者多个字符串列的值进行拼接
作用:可以将多个列的值或者字符串进行拼接
注意:oracle中字符串使用的是单引号
oracle中单引号表示字符串.
语法:
select 列||‘你好‘ from s_emp;

eg:1字符串拼接:
hello world

select ‘hello‘||‘world‘ from dual;

?

dual表:哑表-->同义词
任何用户都可以使用,
一般使用做测试.

eg:2字符串拼接列:
姓:last_name

eg:3列拼接列:
名:三 姓 :张

sqlplus 命令特点:

运送sql语句)
把sql语句的结果集展示

: 缓存机制:
1.1:sqlplus会保存最近执行过的一条sql语句(可能是多行)
1.2:每次执行的sql语句都会保存在buffer中,但是会覆盖掉之前的sql语句
:命令 l : 显示刚才执行过的sql语句,并且写到缓存中。
语法: l
:命令 / : 执行缓存中的sql语句
语法: /
4 :命令 n : 直接输入一个数字 就是选中某一行--->下面用到的[定位]。
语法: n
:命令 a[ppend] : 在【定位】的那一行后面追加新的内容
语法: 先定位
a 被追加的字符串

6 :命令 c[hange] : 在【定位】的那一行修改指定的字符串内容
语法: 先定位
c /old/new

:命令 cl[ear] buff[er] : 清除缓存区中的sql语句
语法: cl buff 或 clear buffer

:命令 del : 删除【定位】的那一行
语法: 先定位
del

9 :命令 i[nput] : 在【定位】的那一行的后一行插入新的一行
语法: 先定位
i 把字符串插入下面一行

0 :命令 l[ist] n : 显示第n行内容
语法: l 4 显示第4行内容

11 :命令 n sql语句 : 重写那一行
语法: 2 from s_dept; //重写第二行

总结:
1,需要已经执行过一条sql语句。就是sqlplus缓存中有一条sql语句
2,需要先选中有问题的那一行, 输入n 定位某一行
3,使用下面相应的关键字 操作

2 :命令 SAVE filename : 将缓存中sql语句保存到本地文件
语法: SAVE 文件名
默认位置:C:UsersAdministrator
3 :命令 GET filename : 将文件中sql语句加载到缓存中,但是不执行sql语句
语法: get 文件名

4 :命令 START filename : 将文件中sql语句加载到缓存中,并且执行sql语句
语法: start 文件全路径+文件名

5 :命令 @ filename : 将文件中sql语句加载到缓存中,并且执行sql语句
语法: @ 文件全路径+文件名

6 :命令 edit filename : 以记事本形式打开文件,编辑sql语句,Ctrl+s保存,关闭。
语法: edit 文件全路径+文件名

7 :命令 ed : 将缓存中sql写到文件afiedt.buf并且打开文件
语法: ed

8 :命令 spool filename : 开始保存 sqlplus输入的任何结果,(录控制台)
语法: spool startPlus.text

9 :命令 spool off : 结束
语法: spool off

注意:spool 和spool off必须要一起使用
作用:记录sqlplus中sql操作

20: :命令 col [{column] [option] : 修改列在sqlplus中的显示格式(样式)
option : 取值: cle for hea jus
语法: col name for a15;//修改name列在sqlplus显示的长度为15
20.1:for操作字符串和日期:col 列名 for a12; 把这一列的长度定成12字符

20.2:for操作数字类型: col 列名 for 占位符;
补充: 占位符,用来占数字的位置
1) 9 :不强制补全,就是数字占位符一个9占一个数字位,如果数据数字长度大于9占位符长度就还会显示###,
col salary for 99999 就是这一列变成5个长度,因为用了5个9来占位
2) 0 :强制补全
col salary for 00099 就是这一列变成5个长度,因为用了三个0个两个9来占位,但是0是自动补全的,所有会在前面补0直到满足5个长度
3) $ :西方的货币符号 货币符号在一列数据中只能出现一个
col salary for $9999 就是用四个9占位,但是在显示的时候回在前面加一个$号
col salary for $0000
4) L :本地货币符号
同上,但是加的是本地的货币符号
5) . :小数点
就是小数点的意思
col salary for 9999.9999 就是一个四位数精确到小数点后四位。

6),:分隔符
col salary for 9,999.99 在那个地方输出一个,号
20.3: col cle : 清除某一个列的格式
语法: col name cle

20.3: clear columns : 清除所有列的格式

使用:
L : 查看缓存sql
/ : 执行缓存sql
n sql : 重写缓存第n行的sql语句
c /old/new : 替换当前选中行的值
save 文件名 : 把缓存中是sql保存到某一个文件
get 文件名
@ 文件名
start 文件名
-----------------------------day1------------------------------
排序 Order by
1,语法:order by 列名 排序,列名 排序;
升序:asc 如果不写 默认为asc
降序:desc
eg:

select id,salary,commission_pct
from s_emp
order by commission_pct;

null 最大
2,特点:
2.1 : order by放在select语句最后一行,最后,最后,最后
2.2 : 默认升序(asc),降序(desc)
2.3 : order by后面可以跟列名、别名、select后面字段名的序号

不写排序规则就是默认升序排序
eg:
select id s_id,salary a
from s_emp
order by s_id;


显示升序排序
eg:


显示降序排序
eg:

select id,commission_pct
from s_emp
order by commission_pct desc;
字符串排序是按照ASCII值排序
eg:

按照多个列排序
eg:
select id,salary
from s_emp
order by salary desc,id;

?

注意:如果按照多个列进行排序,多个列之间逗号隔开,先按照第一个列的值进行排序,如果第一个列的值相同,那么会按照第二个列的值进行排序。.......以此类推

按照commission_pct进行排序
select last_name,commission_pct
from s_emp
order by commission_pct asc;
2.4 : null 表示无限大

(编辑:源码网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读