一、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. EhLib 的 DbgridEh 影响 其他数据集的Open方法

    DbgridEh 对应数据集ADOTable1,其中有个字段 部门编码,另外增加查找字段比如 部门名称 ADOTable2对应查找数据集,包含 部门编码和 部门名称字段. ADOTable1 打开后, ...

  2. WordCount:C语言实现

    项目地址:https://github.com/m8705/WordCount 项目要求 wc.exe 是一个常见的工具,它能统计文本文件的字符数.单词数和行数. 这个项目要求写一个命令行程序,模仿已 ...

  3. Swift语法笔记

    Guard guard是一种条件判断语句,可以类比if.assert.如果条件不符合,guard的else语句就运行,从而退出这个函数. 具体写法如下: func fooGuard(x: Int?) ...

  4. <NET CLR via c# 第4版>笔记 第11章 事件

    11.1 设计要公开事件的类型 11.1.1 第一步: 定义类型来容纳所有需要发送给事件通知接收者的附加信息 //第一步:定义一个类型来容纳所有应该发送给事件通知接收者的附加信息 internal c ...

  5. 根据redis的pub/sub机制,写一个即时在线聊天应用

    在Redis中,有个Pub/Sub,他的主要的工作流程如: redis订阅一个模式频道如:chat_*,然后由小a想找人聊天了,就发送一个消息“现在有人聊天吗?chat_a”,末尾的chat_a为标识 ...

  6. 关于epoll的IO模型是同步异步的一次纠结过程

    这篇文章的结论就是epoll属于同步非阻塞模型,这个东西貌似目前还是有争议,在新的2.6内核之后,epoll应该属于异步io的范围了,golang的高并发特性就是底层封装了epoll模型的函数,但也有 ...

  7. 玩转TypeScript(引言&文章目录) --初看TypeScript.

    JavaScript过去一直被当作一种玩具语言存在,直到2005年以后,这门语言又开始活跃并可以说是火爆,而且随着浏览器版本的不断升级和完善,各种DOM之间的兼容性已经渐渐的被各种技术解决了,比如经典 ...

  8. Unity3D安卓程序中提示窗与常用静态方法封装

    Unity3D/安卓封装SDK常用方法 本文提供全流程,中文翻译.Chinar坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) 1 IO -- - ...

  9. each遍历 的原理

    <!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title>& ...

  10. 线程池、及使用场景、线程安全封装、ConcurrentHashMap应用场景

    https://blog.csdn.net/sinbadfreedom/article/details/80467253  :1.HashMap与ConcurrentHashMap的区别与应用场景 h ...