oracle基础

oracle默认的端口号是1521
plsql登录方式:
1.plsql登录的时候database 里填写 远程数据库服务器ip:1521(oracle默认端口)/数据库的名称(一个服务器上可能有多个数据库) 账号默认用system 密码自己安装时设置的 数据库名称也是自己设置的
2.在tnsnames.ora文件中配置数据库信息,将配置文件所在目录加入到环境变量TNS_ADMIN中,以便plsql识别,这样登录时选择数据库的id(ROOT就是一个id)列表
tnsnames.ora内配置信息如下,可以配置多个 :

ROOT =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = root)
    )
  )

instantclient是oracle官方客户端软件,但是图形化界面难用. 我们一般使用plsql这个客户端软件来操作oracle,但是plsql的使用必须基于instantclient
plsql整合instantclient的步骤,tools->Preferences->Connection选项页面中 Oraclehome 选择这个文件的安装目录如: F:\instantclient_12_1 OCI library选择 F:\instantclient_12_1\oci.dll

一个oracle数据库可以有多个实例,一般是1个. 用户是在实例下创建的,不同的实例下可以创建相同名字的用户. 一个实例下也可以有多个表空间,表是在表空间中创建的.
一个数据库下可以建立多个表空间,一个表空间可以建立多个用户、一个用户下可以建立多个表。
oracle 数据库与其它数据库产品的区别在于,表和其它的数据库对象都是存储在用户下的。
数据类型 存字符串用 varchar2(长度) 整数 number(数字长度) 小数 number(m,n) m是总长度,n是小数长度,m-n是整数长度 date 带时分秒的日期 blob(大对象,二进制数据,最大4G) clob(大对象,文本数据,最大4G)
delete from aaa; 只删除表数据,不删除索引及自增id等
truncate table aaa; 先删除表,再创建表. 整表删除但是表还要继续使用选择这个
create sequence s_person; select s_person.nextval from dual; 每次查询都会自增,默认从1开始,每次自增1 select s_person.currval from dual;查询当前序列号,必须先执行过一次nextval的查询才能查询当前值
序列不属于任何一张表,但是可以和表进行逻辑关联 dual虚表,查询它只是为了补全语法
单行函数 作用于一行返回一个值
字符函数 变大写,变小写
select upper(‘yes’) from dual; 返回 YES
select lower(‘YES’) from dual; 返回 yes
数值函数
select round(56.16,1) from dual; 返回56.2 四舍五入 后面的数字代表小数点后保留几位数,可以为负数,那就是小数点前保留几位了
select trunc(56.16,1) from dual; 返回56.1 截取 后面的数字代表小数点后保留几位数,可以为负数,那就是小数点前保留几位了

字符串与日期的转换
to_date(‘2022-03-01 18:00:00’,‘yyyy-mm-dd hh24:mi:ss’)
to_char(sysdate,‘yyyy-mm-dd hh24:mi:ss’)

nvl(null,0) 如果第一个值是null,那么取第二个值
条件表达式1

case t.name
when 'zhangsan' then '张三'
when 'lisi' then '李四'
else '无名'
end

条件表达式2

case 
when t.amount>3000 then '高收入'
when t.amount>1500 then '中等收入'
else '低收入'
end

group by 语句后没有出现的原始列不能出现在select后面,除非是聚合函数
所有条件都不能使用别名来判断 因为条件语句是优先于select语句解析的

分页查询
rownum 序号,order by 会打乱rownum,可以做一个嵌套查询,这样外层的rownum就还是有序的,rownum必须从1开始不能跳着走,那么下面的sql就有问题 rownum >25, rownum > 不能是个整数否则一条查不到
查到零条:select rownum,
from (select * from table1 t order by t.age desc) where rownum >25 and rownum <=35; 每页5条,查询第三页内容
解决办法再套一层,并且给中间的rownum起个别名,这样我们用别名>25就没问题了 rownum属于oracle系统的东西,就这个特性,所以巧妙的去解决
正确写法: select * from (select rownum rn,
from (select * from table1 t order by t.age desc) where rownum <=35) where rn >25; 每页5条,查询第三页内容

视图就是提供一个查询的窗口,所有的数据来自于原表.视图主要用途是查询,所以可以定义为只读.并且可以屏蔽一些敏感字段

索引就是在表的列上构建一个二叉树,索引可以提高查询的速度,但是影响增删改的速度,因为索引就相当于一个目录,增删改的话都要重新构建索引
单列索引的触发,条件必须是索引列的原始值 单行函数,模糊查询都会影响索引的触发
复合索引第一列为优先索引列 索引的触发条件,查询条件中必须包含优先索引列的原始值 优先触发单列索引 or语句不会触发索引

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值