第一部分 基本语法

//拼接表字段

select id   ||   'is'   ||   name from admin

select * from emp where ename like '%s%';//模糊查询

select * from emp where mgr is null ; //查询表列为空的

to_date('2011-12-12','yyyy-mm-dd') //插入时间格式 to_date()

//给表字段取别名

select  id  as 这是ID , name as "这是 名字" from admin

//清除重复出现的值

select distinct id,name from admin

//用户定义降序

select * from admin order by id desc  //asc升序 //desc降序

//查询当前时间

select sysdate from admin

第二部分 字符函数

//截取字符串

select substr (name,1,1) as 用户名 from admin  //(1,1)表示第一个开始,和第一个数

//取出字段的长度

select length(name) from admin

//取出字符串为’张’当前所在的位置为几,找不到则为0 … 区分大小写

select name ,instr(name,'张') from admin

// lpad左侧补全, rpad右侧补全

select lpad(name,10, '-') from admin

select rpad(name,10, '-') from admin

//给字段截取前后空格

select trim(name) from admin

//给字段为张的全部替换为zhang

select name ,replace(name,'张','zhang') from admin

第三部分 数值函数

第四部分 表达式语法

//case表达式语句 给用户区别名用法,相当与if else

select id,name,

case id when 1 then '优'

when 2 then '良'

when 3 then '差'

else '未知'

end 部门

from admin

//decode()函数给用户区别名用法,与上面意思一个样

select id,name,

decode(id,1,'优',2,'良',3,'差','未知') as 成绩

from admin

//函数嵌套,单行函数可以嵌套使用,嵌套层次无限制

select id,name,initcap(trim(rpad(name,10,'-'))) from admin

第五部分 分组函数

//函数里面可以是字段名,也可以是表达式,日期类型

select avg(id) as 平均数,max(id) as 最大数,min(id) as 最小数,sum(id) as 总和 from admin

//查询总数,不能有重复和不能为空的id总数

select count(distinct(id)) as 总数  from admin

//求总和,如果id字段为空,则设置字段为0. 然后用总和除以总数最后得出结果

select sum(nvl(id,0)) / count(id) as 总和除以总数 from admin

//查询id为1的数量有多少个 , 根据平均分排序

select count(id) as 记录数 from admin  where id =1  group by id having id=1 order by avg(id)

//查询id大于3 having筛选 id<5 之间的数总数

select count(id) as 记录数 from admin  where id  > 3  group by id  having id < 5

第六部分 多表连接

//emp表和dep表结构

--emp表,

create table emp(empNo number,eName varchar2(20), sal number, deptNo number);

insert into emp(empNo,eName,sal,deptno) values(7369,'smith',800,20);

insert into emp values(7499,'allen',1600,30);

insert into emp values(7521,'ward',1250,30);

insert into emp values(7566,'jones',2975,20);

insert into emp values(7654,'martin',1250,30);

insert into emp values(7902,'ford',300,20);

insert into emp values(7934,'miller',1300,10);

drop table emp

select * from emp

--dep表

create table dep(deptNo number,dName varchar2(20),loc varchar2(20));

insert into dep values(10,'accounting','new york')

insert into dep values(20,'research','dallas')

insert into dep values(30,'sales','chicago')

insert into dep values(40,'operations','boston')

insert into dep values(50,'advertisement','beijing')

drop table dep

select * from dep

// 根据deptNo编号 对应查找出相应的数据

select emp.empno,emp.ename,emp.sal,emp.deptno,dep.deptno,dep.dname,dep.loc

from emp,dep

where emp.deptno = dep.deptno;

// Join字句连接的方法查询两张表数据, using(deptNo)参照列进行连接

// right left 左右连接 全外连接 full outer

select emp.empno,emp.ename,emp.sal,deptno,deptno,dep.dname,dep.loc

from emp join dep

using(deptno);

// on字句连接的方法查询两张表数据,

On( emp.deptno = dep.deptno and sal > 1000);

// 根据deptNo编号 对应查找出相应的数据 根据sal和loc进行筛选

select e.empno,ename,sal,d.deptno,d.deptno,dname,loc

from emp e,dep d

where e.deptno = d.deptno and ( e.sal > 1000 or d.loc='chicago' );

// e和d对应 d和l对应 的数据 进行三表查询,,

select e.empno,ename,sal,d.deptno,d.deptno,dname,loc,l.id

from emp e,dep d,loc l

where e.deptno = d.deptno and l.id=e.id

// Join 进行三表查询,,

select e.empno,ename,sal,d.deptno,d.deptno,dname,loc,l.id

from emp  join dep using(deptNo)

natural join locatins; //也可以继续 join 表名 using(关联列)

第七部分 子查询

// 简单的子查询语法,,如果有多个返回值

select * from emp where sal > ( select sal from emp where sal = 800 )

+ ( select sal from emp where sal = 300 )

//使用 in等于列表中任何一个 not in 不在这里面的所有列表

select * from emp where sal not in (select avg(sal) from emp group by deptno)

//使用 any 和子查询返回的任意一个值比较 查最小

select * from emp where sal  > any (select avg(sal) from emp group by deptno)

//使用 all和子查询返回的所有值比较 查最大

select * from emp where sal  > all (select avg(sal) from emp group by deptno)

//返回前面五条最高记录, rownum相当与 sqlserver里面top  rownum也可当虚拟主键

select * from (select * from emp order by sal desc) where rownum <=5

//分页子查询语句,, rownum定义的虚拟主键,别名myno  where 进行筛选

select * from (select rownum myno , a.* from (select * from emp order by sal desc) a )

where myno > 4 and myno <=7

//希望员工scott的岗位,工资,补助与smith员工一样

Update emp set (job,sal,comm) = (select job,sal,comm from emp where = 'smith') where ename = 'scott';

第八部分 DML与事务控制

//事物必须满足ACID属性,

à原子性(Atomicity):有一个地方出错,前面成功的也撤销..应是一个整体..必须恢复以前数据.要么全部成功,要么全部失败..

à一致性(Consistency):数据必须处于一致性,如B级工资300升到500级别也从B升到A,但是数据保持不一致,只上调了级别没上调工资..

à隔离性(Isolation):多个事物 多个用户操作一个数据, 如修改字段,其他事物不受影响..直到事物都成功了, 要么看到的数据之前和之后的状态 中间的被隔离开

à持久性(Durability):事物结束后永久保存在数据库中..不能撤销

//insert into 插入表中所有的数据

Insert into admin(id,name) select id,name from admin;

insert into admin values(6,'老百');

回滚点savepoint p1;

insert into admin values(6,'老千');

回滚 rollback p1;

提交 commit;

set autocommit on;

set autocommit off;

第九部分 数据库对象

//创建 test 表

create table test(

id number(10),

name varchar2(20),

hiredate date default sysdate,

salary number(8,2) default 0

);

// 将test 表的字段数据注入到test1里面来

create table test1(用户id,用户名字)

as select id,name from test

// 给test表增加mm gg 两个字段 默认值是,,...

alter table test

add(

gg varchar2(20) default '你是男人',

mm varchar2(20) default '你是女人'

)

// 使用modify给字句修改现有字段,包括字段的数据类型,大小和默认值

alter table test

modify(

gg varchar2(20) default '你是猪',

mm varchar2(20) default '你真笨'

);

// 使用drop删除表中字段行 drop table 表名即可删除表

alter table test

drop(gg,mm);

// 使用truncate清空表所有的记录,不能进行条件的删除,表结构还在

create table test1 as (select name,hiredate,salary from test)

truncate table test1

// 使用rename讲表test1名字替换成test

rename test1 to test

// 查看当前用户拥有的所有表的名字

select * from user_tables;

// 查询当前用户可访问的所有表的名字

select * from all_tables;

// 查询当前用户拥有所有对象的类型

select distinct object_type from user_objects;

// 查询用户拥有所有对象的类型

select * from dba_tables;

第十部分 表约束

create table mg

(

id number(3) primary key,  //主键约束

gg number not null unique,//唯一约束

mm number constraint mg_mm not null, //非空约束

constraint mg_id_fk foreign key(id) references admin(id); //外键约束

);

//给admin表增加 check约束

create table admin

(

id number(3)  check(id>=5 and id<=10),

name varchar2(20) check(length(name)>4 and length(name) <=20)

)

//建好表之后在添加约束 和 删除约束

create table student

(

sid number(3),

sname varchar2(20),

saddress varchar2(20),

tid number(3)

)

alter table student

add constraint studetn_pk_sid primary key(sid);

alter table student

add constraint studetn_sname check(length(sname)>4);

alter table student

add constraint studetn_saddress saddress default '湖南岳阳';

alter table student

add constraint studetn_fk_tid foreign key(tid) references tracher(tid);

alter table student

drop constraint studetn_pk_sid

create table tracher

(

tid number(3)

)

alter table tracher

add constraint tracher_pk_id primary key(tid);

第十一部分 视图,索引

//添加简单的视图

create or replace view v1

as select * from emp

desc v1

drop view v1;

//添加简单的索引

create index myindex on emp(ename);

drop index myindex

第十二部分 基本数据命令

Conn scott/sa //切换用户账户

Show user //查询属于那个用户

Desc //查看表结构

Disconnect //断开数据库连接

Password //修改用户密码

Exit //断开,退出窗口

Start 加路径. //要导入sql文件

Edit 加路径  //需要打开的修改的文件

Spool 加路径 spool off保存 //把结果保存到文件里面去

Setpagesize //一页显示多少条数据

Create user (admin)用户名 indentified by (sa)密码 //创建用户和密码

Drop user (admin)用户名 //删除用户

Grant connect to (admin)用户名 //给用户授予连接权限 用户才能进行登录

Grant resource to (admin)用户名 //给有用授予创建表的权限 才能创建表

Grant select on emp to (admin)用户名 //用其他用户登录 给admin表授予查询emp表权限

Grant update on emp to (admin)用户名 //给用户授予改emp表的权限

Grant all on emp to (admin)用户名 //给用户授予增删改emp表的权限

Revoke select on emp from admin //收回权限使用 revoke 上面都可收回

Grant select on emp to admin with grant option //给admin授予可以给别人授予这张表查询权限

Revoke select on emp to admin with grant option //撤销admin授予可以给别人授予这张表查询权限

Alter user admin(用户名) account unlock; //给用户解锁

第十三部分 sequence自增

Create sequence myseq //自增

Drop sequence myseq //删除自增

Insert into test values(myseq.nextval);

Insert into test values(myseq.currval)

/*创建序列*/create sequence s_id increment by 1 start with 1 nomaxvalue nocycle;/*创建触发器*/create or replace trigger myTrigger  before insert on myTable  referencing old as old_value new as new_value  for each row  begin    new_value.userid= s_id.nextval;  end;  end;

oracle都用sequence

可以直接用native,hibernate会根据底层数据库自行判断采用sequence。

<id name="id" type="long" column="ID">

<generator class="native"/>

</id>

或直接用sequence

<generator class="sequence">

<param name="sequence">user_id_sequence</param>

</generator>

这种情况首先要先在数据库中建立了user_id_sequence的序列

--文献来源百度文库

oracle 的常用语句的更多相关文章

  1. oracle数据库常用语句

    --查看数据库版本-- select * from product_component_version; -- 查看dbf存放位置 select * from dba_data_files; -- 查 ...

  2. oracle(四) 常用语句

    1.分页 select t2.* from (select rownum row, t1.*  from your_table where rownum < ?) t2 where t2.row ...

  3. Oracle SQL常用语句

    1,查询插入 insert into user_role(account_id, role_id, create_user) select t.employee_id, 'BC8FBF8B1D9843 ...

  4. Oracle手边常用命令及操作语句

    Oracle手边常用命令及操作语句 作者:白宁超 时间:2016年3月4日11:24:08 摘要:日常使用oracle数据库过程中,常用脚本命令莫不是用户和密码.表空间.多表联合.执行语句等常规操作. ...

  5. oracle数据库常用plsql语句

    (一)oracle中常用的数据类型 (二)PL-sql基本语法 1.创建数据库表.删除数据库表 create table table1--创建表 ( field1 number(8), field2 ...

  6. Oracle常用语句

    Oracle数据库常用sql语句 ORACLE 常用的SQL语法和数据对象一.数据控制语句 (DML) 部分 1.INSERT (往数据表里插入记录的语句) INSERT INTO 表名(字段名1, ...

  7. Oracle数据库常用Sql语句大全

    一,数据控制语句 (DML) 部分 1.INSERT  (往数据表里插入记录的语句) INSERT INTO 表名(字段名1, 字段名2, ……) VALUES ( 值1, 值2, ……); INSE ...

  8. Oracle数据库常用的Sql语句整理

    Oracle数据库常用的Sql语句整理 查看当前用户的缺省表空间 : select username,default_tablespace from user_users; 2.查看用户下所有的表 : ...

  9. ORACLE常用语句:

    ORACLE常用语句: 1.首先,创建(新)用户: create user username identified by password; username:新用户名的用户名 password: 新 ...

随机推荐

  1. ms sql 获取字符串首字母

    很久没有编写新文章,现在发布一篇自定义函数,针对于ms sql数据库中需要获取字符串首字母,对于需要的朋友希望对你有用,如果你有更好的方法也可以给我留言.函数如下: --获取字符串首字母 CREATE ...

  2. 在CentOS/RHEL/Scientific Linux 6下安装 LAMP

    LAMP 是服务器系统中开源软件的一个完美组合.它是 Linux .Apache HTTP 服务器.MySQL 数据库.PHP(或者 Perl.Python)的第一个字母的缩写代码.对于很多系统管理员 ...

  3. maven 构建web项目index.jsp报错

    The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path... 解决 ...

  4. HDU 3925 Substring 【大数相减】

    题目意思是,给你提供两个数字 a 和 b a 可以不断的往上加, 直到b 为其子串 问的是 a 最小加几? 显而易见,a  的数据范围给了10 ^100非常大,直接模拟肯定不行 那么就用 b 减去 a ...

  5. Codeforces 484A - Bits 二进制找1

    这题可以根据l, r 在二进制下的长度进行分类. l  的长度小于 r 的时候,有两种可能,一种是r 在二进制下是 1* 这种样子,故答案取 r : 一种是取答案为  (1LL << (r ...

  6. VirtualBox中的Ubuntu没有权限访问共享文件夹/media/sf_bak

    之前已经搞定可以自动共享文件夹了,但是现在发现无法去访问,非root用户下,使用“ls /media/sf_bak”提示没有权限,当然如果切换到root,是可以的. [解决过程]1.把普通用户名加入到 ...

  7. Docker 安装命令

    curl -sSL https://get.daocloud.io/docker | sh

  8. Hadoop 2.x(YARN)安装配置LZO

    今天尝试在Hadoop 2.x(YARN)上安装和配置LZO,遇到了很多坑,网上的资料都是基于Hadoop 1.x的,基本没有对于Hadoop 2.x上应用LZO,我在这边记录整个安装配置过程 1. ...

  9. SilkTest天龙八部系列7-动态对象识别

    在测试web应用时,我们常常需要面对web页面对象变化频繁,并且使用预定义方式识别对象慢的困难.为了解决这些问题,SilkTest引入了dynamic object recognition技术,它使用 ...

  10. JavaScript学习笔记(四十四) 装饰器

    装饰器模式(Decorator) 在装饰器模式中,可以在运行时给一个对象动态的添加额外的功能.当和静态类打交道的时候(static classes),这可能是一个挑战.但在JavaScript中,对象 ...