一、oracle表及表空间:                                    

1.查看用户、用户表空间等,需要sysdba登陆:
select username, default_tablespace from dba_users;
 
2.一个数据库可以有多个表空间,一个表空间里可以有多个表。表空间就是存多个表的物理空间;可以指定表空间的大小位置等。
创建表空间:create tablespace ts1 datafile 'C:\tablespace\ts1.dbf' size 50M;

自动扩展大小:create tablespace ts2 datafile 'C:\tablespace\ts2.dbf' size 50M autoextend on next 10M;

设置最大空间:create tablespace ts3 datafile 'C:\tablespace\ts3.dbf' size 50M autoextend on next 10M maxsize 1024M;
 
3.更改默认的表空间:默认的表空间一般是users;需要sysdba
alter database default tablespace ts1;
 
4.更改某个用户默认的表空间,需要sysdba; alter user c##chengyu default tablespace mytablespace
 为用户授予表空间权限:                         alter user c##chengyu quota unlimited on mytablespace;
5.表空间改名:alter tablespace ts1 rename to tss1;
6.删除表空间:drop tablespace ts2 including contents and datafiles;
需要手动删除硬盘上表空间文件;
 
二、oracle虚表dual:                                    
Dual表是sys用户下的一张虚表;提供一些运算和日期操作时候用到;
select sysdate from dual;
 
 
三、oracle序列:                                      
oracle特有的。用来产生一个唯一的,不间断的,数字的一个序列;一般用来做主键
比如文章表,每次往里插入,id自增1;
可以考虑每次取出id的max(id),然后+1;
但是这样有线程同步问题;很可能插入的id值一样等问题;
 
1.创建序列:
 
2.序列属性:
create sequence user_seq start with 1 minvalue 1 increment by 1;
使用序列:t_user表中的id是主键,使用序列自增:
 
insert into t_user values(user_seq.nextval, 'zhangsan', '123456');
insert into t_user values(user_seq.nextval, 'lisi', '123456');
select user_seq.currval from dual;
select user_seq.nextval from dual;
序列产生一个序列的数,而且保证不会重复;即便是两个线程同时来访问这个东西,放心,还是不会重复,说白了自己内部已经做了线程同步了。
 
真正项目中是一个项目用一个序列,还是一个表用一个序列??
优缺点:
一个项目用一个序列,很多表用一个序列: 缺点-每个表的主键就不连续了;
一个表用一个序列:好管理点,生成的主键都是连续的;缺点-麻烦点,每个表都得建序列;
一般是一个表对应一个序列;
 
 
四、Oracle表操作:                                    
1、update:
更新一行的两个字段,之间用逗号隔开:
update t_user set username='zhang_san', password='123' where id = 1;
 
2、select查询:
 联合查询:
例如现在数据库中表记录:
t_user:
t_user2:
 
 1)并集(去重复):
select * from t_user union select * from t_user2;
 
 2) 并集(不去重复):
select * from t_user union all select * from t_user2
 
3)交集:
select * from t_user intersect select * from t_user2   得到结果就是只有一个 zhang_san  123 
 
4) 差集: 属于第一个集合里面,不在第二个集合里面;
 select * from t_user minus select * from t_user2    得到结果  lisi  123456
 
 
五、oracle数据类型及函数:                                    
1.字符串类型及函数:
//解释:
select lpad(username, 10, '0') username, password from t_user;
 
substr(字段名,索引位置,截取长度) :  索引位置从1开始;
instr(字段名,要查找的串,从第几个索引位置开始, 第几次出现),查不到的话,返回0;索引位置值从1开始;
 
2.数值类型及函数:
//代码解释:
select round(123.45, 1) from dual    //123.5 
round第二个参数,是保留几位小数;
 
sign() 整数返回1; 0返回0; 负数返回-1;
 
select trunc(123.456,2) from dual;    //123.45
trunc第二个参数是保留几位小数,单纯的截取,不进行其他操作;
 
select to_char(123.45,'0000.000') from dual;    // 0123.450
select to_char(123.45,'9999.999') from dual    //123.450         9999.999和上面的区别就是:整数位不会自动补0;
select to_char(123123,'99,999,999.99') from dual    //123,123.00 
 
select to_char(123123.3,'FM99,999,999.99') from dual;  //123,123.3  FM会把结果前面的空格去掉;
 
select to_char(123123.3,'$99,999,999.99') from dual    //$123,123.30
 
select to_char(123123.3,'FM$99,999,999.99') from dual  //$123,123.3   FM将返回结果前面空格去掉,FM可以和$连用;
 
select to_char(123123.3,'L99,999,999.99') from dual;  //¥123,123.30
 
select to_char(123123.3,'99,999,999.99C') from dual  //123,123.30CNY 
 
3.日期类型及函数
 
//代码解释:
select * from t_date;
 
select add_months(d1,2) from t_date where id=1;

ADD_MONTHS(D1,2)
----------------
26-5月 -17

select last_day(d1) from t_date where id=1;

LAST_DAY(D1)
------------
31-3月 -17

select months_between(d1,d3) from t_date where id=1;

MONTHS_BETWEEN(D1,D3)
---------------------
3.197800553

select extract(year from sysdate) from dual;

EXTRACT(YEARFROMSYSDATE)
------------------------
2017

select extract(month from sysdate) from dual;

EXTRACT(MONTHFROMSYSDATE)
-------------------------
3

select to_char(d1,'YYYY-MM-DD') from t_date where id=1;

TO_CHAR(D1,'YYYY-MM-DD')
------------------------
2017-03-26

select to_char(d1,'YYYY-MM-DD HH24:MI:SS') from t_date where id=1;

TO_CHAR(D1,'YYYY-MM-DDHH24:MI:SS')
----------------------------------
2017-03-26 21:41:23

4.其他常用处理函数

//代码解释:
select ename,nvl(sal,0) from emp;    //如果sal列的值为null的话,将这个值用0来代替显示;
 
oracle翻页:
求薪水最高的第6到第10位:
两种写法都可以:
select * from (select a.*, rownum rn from (select * from emp order by sal desc) a where rownum <=10) where rn >= 6
select * from (select a.*, rownum rn from (select * from emp order by sal desc) a) where rn >=6 and rn <=10
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

oracle学习操作(1)的更多相关文章

  1. Oracle学习操作(7)用户、权限、角色

    一.oracle用户: 二.权限 1.系统权限: sys登陆创建c##test用户后,给用户c##test授权,并且带有传播性: SQL> create user c##test identif ...

  2. Oracle学习操作(6)函数与存储过程

    一.oracle自定义函数 1.不带参数的函数: 返回t_book表的总条数: SQL> create function getBookCount return number as begin ...

  3. Oracle学习操作(5)触发器

    Oracle触发器 一.触发器简介 具备某些条件,由数据库自动执行的一些DML操作行为: 二.语句触发器 现在数据库创建t_book表:t_booktype表:t_book表的typeid存在外键参考 ...

  4. Oracle学习操作(3)

    一.if条件语句 set serverout on; ; v ):='world'; begin dbms_output.put_line('hello'||n||v); end; / hello1w ...

  5. Oracle OCI操作UDT相关学习(二)

    沿用 Oracle OCI操作UDT相关学习 一文中定义的类型和表. 1.更改数据 在sqldeveloper 中更新数据, update dxl.cust set addr.street='a11' ...

  6. Oracle学习笔记三 SQL命令

    SQL简介 SQL 支持下列类别的命令: 1.数据定义语言(DDL) 2.数据操纵语言(DML) 3.事务控制语言(TCL) 4.数据控制语言(DCL)  

  7. Oracle学习指南

    Oracle学习指南 你走的那天,我决定不落泪,迎着风撑着眼帘用力不眨眼 创建数据库.创建用户.创建表空间.创建表.插入数据..... 1.用系统用户登录,任选系统用户 代码: >>sql ...

  8. Oracle学习系列1-7

    Oracle学习系列1 两个服务必须启动: OracleOraDb10g*TNListener 和 OracleService*** 使用sqlplusw先进行环境的设置 set linesize 3 ...

  9. Oracle学习系列7

    Oracle学习系列7 ************************************************************************************ 关联表 ...

随机推荐

  1. DevExpress v17.2新版亮点—DevExtreme篇(二)

    用户界面套包DevExpress DevExtreme v17.2终于正式发布,本站将以连载的形式为大家介绍各版本新增内容.本文将介绍了DevExtreme v17.2 的New Color Sche ...

  2. L237

    The British parliament on Tuesday rejected overwhelmingly the Brexit deal, further complicating the ...

  3. HTTPS 通俗简介

    为什么需要HTTPS 9个问题搞懂 https 来源 HTTP是明文传输的,也就意味着,介于发送端.接收端中间的任意节点都可以知道你们传输的内容是什么.这些节点可能是路由器.代理 等. 举个最常见的例 ...

  4. AR.Drone 2.0四轴飞机体验:最好的玩具航拍器

    http://digi.tech.qq.com/a/20140513/007458.htm?pgv_ref=aio2012&ptlang=2052 AR.Drone 2.0四轴飞机体验:最好的 ...

  5. Linux IO模式-阻塞io、非阻塞io、多路复用io

    一 概念说明 在进行解释之前,首先要说明几个概念: - 用户空间和内核空间 - 进程切换 - 进程的阻塞 - 文件描述符 - 缓存 I/O 用户空间与内核空间 现在操作系统都是采用虚拟存储器,那么对3 ...

  6. C语言基础:初级指针 分类: iOS学习 c语言基础 2015-06-10 21:50 30人阅读 评论(0) 收藏

    指针:就是地址. &   取地址运算符 %p   打印地址占位符 int a=0; printf("%p ",&a);    指针变量:用来存放地址的变量 定义: ...

  7. Magento如何设置产品的打折或者优惠价格

    促销是商家的必备武器,手段可以说是花样繁多.其中最有效最具吸引力的就是优惠券了.那么在Magento中如何添加优惠券呢? 修改位置:后台--促销--购物车价格规则 1.点击右上角的 添加新规则 按钮. ...

  8. magento优化

    magento -- SEO优化继续往前走一步 magento的SEO做的实在太好了,让其它的电子商务平台与之相比实在是不是一个重级的,这也许就是magento成功的原因.尽管现在结合apache,实 ...

  9. 批量解帧视频文件cpp

    前言 将多个视频文件进行解帧. 实现过程 1.批量获取文件路径: 2.对某个视频文件进行解帧: 代码 /************************************************ ...

  10. DelaunayTriangulation_VoronoiDiagram_using_OpenCV的实现

    前言 最近project中有关于delaunay的实现问题,查找资料,看到learnopencv这个网站,有很多peoject的实现,本文主要是实现Delaunay Triangulation and ...