zoukankan      html  css  js  c++  java
  • oracle基础操作

    1、oracle基本概念
    oracle数据库:是一个文件系统,是个物理概念
    实例:在oracle的数据库中可有多个实例,通常我们只有一个实例
    用户:一个实例有多个表空间,表空间是逻辑概念,一个表空间对应着一个或多个物理存储文件(.dbf .ora)
    用户和表空间的关系:一个用户有一个默认的表空间,一个表空间可以为多个用户做为默认空间,用户与用户之间的数据
    是隔离的,数据不会混。

    2、oracle基本命令
    普通用户进入数据库:sqlpuls 用户名/密码 [as sysdba]
    超级用户进入数据库:sqlpuls Scott/tiger
    退出数据:exti
    查看当前连接用户:show user
    切换用户:conn 用户名/密码 [as sysdba]
    超级用户切换普通用户:conn Scott/tiger
    查看当前用户的表:select * from tab;
    查看表中的数据:select * from 表名;
    查看表的结构:desc dept;

    3、oracle的简单查询
    表的数据类型:
    NUMBER(4,2):4表示程度 ,2表示两位小数点
    varchar()
    date:时间类型
    简单的查询语句:
    select 列名 from 表名;
    select 列名 as 想命名的名字 from 表名;
    select 列名1 想命名的名字1 ,列名2 想命名的名字2 from 表名; --常用
    去除重复的查询语句:
    select distinct 列名1,列名2 from 表名;--只有所有数据相同才能合并
    字符串连接查询:
    select '中文' || 列名1 || '中文' 列名2 from 表名;
    查询四则运算:
    select 数字列名*2 from 表名;

    4、限定查询
    select 列名 from 表名 where 条件;
    非空和空的限制:
    select * from 表名 where 列名 is not null;#查询列表中非空的
    select * from 表名 where 列名>100 and 列名 is not null;#多个条件同时满足用and连接
    select * from 表名 where 列名>100 or 列名 is not null;#多个条件只要满足一个的用or连接
    select * from 表名 where 列名 between 100 and 200;#查询区间用between,会包括边界值
    select * from 表名 where 列名 = ‘查询内容’;#查询内容一定要与数据库中的一致
    select * from 表名 where 列名 in('查询内容','查询内容');#in可多写个查询内容
    select * from 表名 where 列名 like '_m%';#like可以模糊查询,查询第二位为m的内容
    !=和<>表示不等于

    5、oracle排序
    select * from 表名 order by 列名;#从高到低:
    select * from 表名 order by 列名 desc;#从低到高

    6、oracle单行函数
    表名为临时表名
    select upper('小写名字')from 表名;#把小写的字符转换成大写的字符
    select lower('大写名字')from表名;#把大写转换成小写
    select initcap('小写名字')from 表名;#首字母大写
    select concat('字符1','字符2')from 表名;#字符串连接,于select '字符1' || '字符2' from 列名;作用一样
    select substr('字符串',1,3)from 表名;#1为索引,3为三位
    select length('字符串')from 表名;#length表示长度
    select replace('字符串','l','x')from 表名;# replace可以替换字符串,将l字母换成x字母
    select round (1.11) from 表名;#round四舍五入
    select trunc (1.11) from 表名;#trunc去掉小数
    select mod (10,3) from 表名;#取余数

    7、oracle日期函数
    select sysdate for 临时表名;#查询当前日期
    select trunc(sysdate - 时间列名) from 数据表;#查询来了多少周
    select trunc(moths_berween(sysdate ,时间列名)) from 数据表;#查询来了多少个月
    select add_berween(sysdate ,12) fromr 临时表;#加上12个月
    select next_day (sysdate,'星期一') ffrom 临时表;#求下个星期一
    select last_day (sysdate,'星期一') from临时表;#本月最后一天

    8、转换函数
    select 列名 to_char(列名,'yyyy')to_char(列名,'mm')
    to_char(列名,'dd')to_char(列名e,'HH')to_char(列名,'mi')
    to_char(列名,'ss')from 临时表名;#y代表年,m代表月,d代表日,H时,mi分,s秒
    select 列名 to_char(列名,'99,99')from 临时表名;#可以将钱转换成带逗号的

    9、通用函数
    select 列名+nvl(列名,0) from表名;#获得工资加奖金
    select decode()from 表名;可以查询
    select 列名 when job = ' ## ' then ‘ ##’#可以查询

    10、多表查询
    select *from 表名 a,表名 b;#可以将两张表联合a 和b是别名
    select *from 表名 a,表名 b where a.deptno = d.deptno;#就是当a表中的某个值和b表中相同时就会查找出来

    11、外连接
    select *from 表名 a,表名 b where a.deptno = d.deptno(+)#两张表查询时
    一张表做全量查询,不会以为另一张表的而被去掉,在查询后面加上个+就可以外连接

    12、sql1999对sql的支持
    select *from 列名 natural join 临时表;#和select *from 表名 a,表名 b where a.deptno = d.deptno;效果相同
    select *from 表名 a join 表名 b on a.deptno = d.deptno;#与上面的一样
    将join换成left就是左查询,right就是右查询

    13、分组函数
    统计数count(),最小值min(),最大值max(),平均值avg(),求和sum()
    select count(*)from 列名;查看多少行

    14、分组统计
    select count(列名2)from 列名 group by 列名2;根据列名2来分组统计
    select count(列名2)from 列名 group by 列名2 having avg(列名3)>200;根据列名2来分组统计 而且平均值要大于200的

    15、子查询
    select count(列名2)from 表名 a where a.列名>200
    select * from 表名 t where t.列名1 in(select min(列名2)from 列名 group by 列名3)

    16、exists的用
    exists(sql 返回结果集为真)
    not exists(sql 不返回结果集为真)
    select * from 表名 t where exists(select min(列名2)from 列名 where 列名=没有的数据)
    select * from 表名 t where not exists(select min(列名2)from 列名 where 列名=没有的数据)

    17、Uniom 和 Uniom all
    Uniom表示对并集的操作,就是会把重复的删除,不重复的合并
    Uniom all是不去重复的
    select * from 表名 t where 列名 >100
    union
    select * from 表名 t where 列名 >200

    18、oracle增删改
    insert(增加)
    insert into 表名(列名1,列名2)values(‘##’,‘###’)
    update(修改)
    update 表名 set(列名1=值1,列名2=值2)where 修改条件
    delete(删除)
    delete from 表名 where 删除条件

    19、数据库事务
    增删改都要开启事务,事务提交才会在数据库只能真正变更
    commit;(提交)
    事务没提交前都可以回滚,
    rollback;(回滚)
    在update修改时如果没提交,这条数据就会被锁住,其他人访问不了

    20、表管理
    varchar(表示字符串)
    number(表示数字)
    data(表示日期)
    clob(表示大文本数据)
    blob(表示二进制数据)
    建表:
    create table 表名(列名 数据类型,列名2,数据类型2);
    删除表:
    drop table 表名;
    添加列:
    alter table 表名 add (列名,数据类型);
    修改列:
    alter table 表名 modify(列名,新数据类型);

    21、主键约束和非空约束
    create table 表名(列名1 数据类型 primary key,列名2,数据类型2);#设置列名1为主键
    create table 表名(列名 数据类型,列名2,数据类型2,constraint 表名_列名_pk primary key(列名));

    22、唯一约束
    create table 表名(列名1 数据类型,列名2,数据类型2 unique);
    create table 表名(列名 数据类型,列名2,数据类型2,constraint 表名_列名_pk unique(列名)

    23、检查约束
    create table 表名(列名1 数据类型,列名2,数据类型2 gender in(1,2));#列2数据要1或2
    create table 表名(列名 数据类型,列名2,数据类型2,constraint 表名_列名_ck check (gender in(1,2))

    24、外键约束
    create table 表名1(列名1 数据类型 primary key,列名2,数据类型2);
    create table 表名2(列名3 数据类型 primary key,列名4,数据类型2,列名1,数据类型2
    constraint 表名2_列名1_fk foreign key(列名1) references 表1(列名1));

    25、rownum和分页
    rownum表示行号,
    select rownum t.* from 表名 t;#在前面就会有行号
    select t.* from 表名 t where rownum<5;#rownum不支持大于号
    select * from (select rownum rw,a.* from(select * from 表名) a where rownum <最大值)b where b.rw>最小值

    26、oracle视图
    创建视图:creat view sql语句名字 as sql语句;
    例如:creat view sql语句名字 as select t.* from 表名 t where rownum<5;
    调用:select * from sql语句名字;

    27、oracle序列
    创建create sequence 序列名;#创建序列给如何一张表都可以
    查询序列下一个值
    select 序列名.nextval for dual;
    insert into 表名(列名1,列名2)values(序列名.nextval,‘###’)#实现id自增长

    28 oracle索引
    创建单例索引:
    create index 列名_index on 表名(列名);
    复合索引:
    create index 列名1_2_index on 表名(列名1,列名2);
    调用索引:
    select * from 表名 t where t.列名1=‘##’and t.列名2='##';

  • 相关阅读:
    ASP.NET Repeater-重复器
    ADO.NET数据库访问技术
    类库和委托、 is 和as
    小知识
    多态
    封装和继承
    资源管理器
    简易计算器
    小知识点
    jquery cookie页面传值和jquery监听页面刷新
  • 原文地址:https://www.cnblogs.com/dcpb/p/13176509.html
Copyright © 2011-2022 走看看