文档章节

oracle 学习笔记二

m243043962
 m243043962
发布于 2017/08/12 15:39
字数 1661
阅读 1
收藏 0

创建表的语法
create table 表名
(
    列名 数据类型 ,
    列名 数据类型 
    ......
) ;


增  添加
insert into 表名(列名,列名...) values (值,值...) ;

删  删除delete
delete from 表名 ;     where 条件 ;

改  修改
update 表名  set 列名 = 值,列名 = 值  where 条件;

查  查询
select 列名,列名...from 表名 ;

select s_id ,s_name ,s_age ,sex from s7 ; 

--当你要查看这个表中的所有列时,可以使用 “*”来代替所有的列名 。select  * from s7 ; 

对表进行 增,删,改的时候,都需要 提交 commit ,提交之后才表示数据真正到数据库中

回滚 rollback  ,没有提交的数据才能够回滚 


char(n)  定长字符串,n最大 2000字节 当位数不足的时候会自动用空格来填充 

varchar2(n) 变长字符串,n最大是4000字节

number(m,n)  m表示总长度,n表示小数点后面的位数 

number(5,2) 999.99 

number(38) 

number(5) 

int 整数类型 

date  日期类型,DD-MM-YY  01-11月-00  

DDL: 数据定义语言 create ,drop ,alter 
create table ,create user
drop table ,drop user 
--修改表 

--添加列语法 
alter table 表名 add 列名 数据类型 ;   
--删除列语法 
alter table 表名 drop column 列名  ; 
--给s7 表添加一列 tage  int 
alter table s7 add tage int ; 
alter table s7 drop column tage ; 

select tage , tid ,tname from s7 ; 

DML:数据操作语言 insert , update ,delete  

增  添加
insert into 表名(列名,列名...) values (值,值...) ;

删  删除delete
delete from 表名 ;     where 条件 ;

改  修改
update 表名  set 列名 = 值,列名 = 值  where 条件;

DCL:数据控制语言
grant授权 , revoke  

grant 权限名,权限名...  to  用户   ; 

revoke 权限名,权限名 .....  from 用户名 ; 

DQL:数据查询语言
select  查询 

数据管理命令

事务性控制命令 
commit ,rollback 这两个都是事务性控制命令

SQL语言中,关键字,表名,列名 不区分大小写 ,where 后面条件的值需要区分大小写 。


and 并且,表示多个条件同时成立才能够查询到数据

or  或者,表示只要满足其中的一个条件就查询出来 

between and 在什么,什么之间 

in  在列表中的数据都查询出来

< any 小于最大的 
> any 大于最小的

> all 大于最大的
< all 小于最小的

--% 任意长度的任意字符串 
--小% 表示的是 以“小” 字开头的字符串都查询出来 
-- _ 表示的是一个长度的任意字符串

使用distinct 关键,可以将查询结果集中的重复数据给过滤掉 

order by 排序的关键字 ,要按照那一列来进行排序,就将那一列的列名跟在后面 
其中升序的关键字是 asc 默认可以省略,降序是 desc 

as 给列起别名,可以省略

lower 函数,将大写字符转换小写 
select lower('ABCDE') FROM dual; 
upper 将小写转大写 
select upper('abcde') from dual; 

concat 用来连接两个字符串  
select concat('abc' , '1234') from dual; 

--ltrim 去掉字符串左边的空格    left
select ltrim('    abcde') from dual; 
select rtrim('    abcde   ') from dual; 
select trim('    abcde   ') from dual; 

abs取绝对值的函数 

select 3.14 from dual  ;

--向下取整
select floor(3.14) from dual  ;

--向上取整
select ceil(3.14) from dual; 


--查看数据库系统当前时间 
select sysdate from dual; 

--添加或减去月份 
select add_months(sysdate ,-4) from dual; 

--last_day求某个月份的最后一天 
select  last_day(add_months(sysdate,4)) from dual; 

--to_char 将时间转换为指定格式的字符串 
select to_char(sysdate,'yyyy-mm-dd dy hh:mi:ss') from dual; 
--强字符串转换为时间 
select to_date('2017-2-14' , 'yyyy-mm-dd') from dual; 
    

select e_salary  from emp 
order by decode(e_salary,null,
(select avg(e_salary) from emp),e_salary) ;


select 'abc' || 123 || 4566 from dual; 
select concat('abc',123) from dual; 


select e_salary from emp ; 

--max 求某一列中的最大值   min求最小值
select max(e_salary) from emp ; 
select min(e_salary) from emp ; 
--sum 求和函数 
select sum(e_salary) from emp ; 
132245
--avg  求平均值函数 
select avg(e_salary) from emp ;
--count 统计有效数据的数量 
select count(e_salary) from emp ; 
--count(*) 统计这个表有多少行数据
select count(*) from emp ; 


select * from emp order by deptno ;  

--分组 使用 group by 关键字 

--order by 排序语句,永远在sql语句的结尾 
--分组统计每个部分下的人数,sql语句如下 
select 
   emp.deptno ,count(*)
   from emp group by deptno order by deptno ; 

--只统计部门人数多于一人的部门 。

select 
   emp.deptno ,count(*)
   from emp 
   group by deptno
   having count(*) > 1 
   order by deptno ; 

--having 关键字是对分组之后的数据进行二次过滤的。

--where 后面不能跟聚合函数列 

--当查询中出现了group by的时候,select 显示的列,
--要么是group by 分组列,要么是聚合函数列 

select tname,decode(tname,'小花','本科','中专') from s7
order by tname ; 

--查询job,用decode函数来进行替换 
select job,decode(job,'OPERATION','op','vp_ceo') from t1 ; 

--接下来按照decode函数这一列来进行分组 
select decode(job,'OPERATION','op','vp_ceo') ,count(*)
 from t1 group by  decode(job,'OPERATION','op','vp_ceo') ;


select job,count(*) from t1 group by job ; 

--decode函数第二种用法 ,动态排序 

select * from dept order by d_name desc ; 

--要求 销售部拍第一位 
select * from dept 
order by decode(d_name,'产险系统开发部',1,'销售部',2,3)

--decode函数第三种用法 
--行转列 
select * from sales ; 

select s_years ,
max(decode(s_months , '1季度',s_money)) as 一季度 ,
min(decode(s_months , '2季度',s_money)) as 二季度,
sum(decode(s_months , '3季度',s_money)) as 三季度,
avg(decode(s_months , '4季度',s_money)) as 四季度
from sales group by s_years   ;


select deptno from emp order by deptno ; 
select * from dept order by d_id ; 

--多表中查询数据 ,from后面跟上多个表名
--如果需要从多个表中查询出来关联数据,需要多个表之间有相同意义的字段
--并且这个字段的数据类型也要相同

select emp.*,dept.d_name,dept.d_loc from emp ,dept
where deptno = d_id ;  

--在emp表中存在的部门编号deptno  ,同时也在dept表中存在d_id 的数据,才查询出来
-- 这种连接我们称之为 内连接 


--左外连接和右外连接中,基表的内容会全部显示 

--查询所有部门下的员工信息  ,那么我们是以 部门表为基表

--左外连接实现  dept表是基表 ,左外连接以左边的表为基表 
select * from dept left join emp on dept.d_id = emp.deptno
order by dept.d_id ;

--还可以用 (+) 来实现左外,右外连接 

select * from dept,emp where emp.deptno = dept.d_id (+) ;

--用左外连接实现的sql,也可以用右外连接来改变,查询结果是一样的 
--右外连接以右边的表为基表 
select dept.*,emp.* from emp right join dept on dept.d_id = emp.deptno ;

--左外连接 匹配的数据 是 15 条  不匹配的数据 3 条 
--右外连接 匹配的数据 是 15 条   不匹配的数据 2 条 

--全外连接
select * from dept full join emp on dept.d_id = emp.deptno ;

© 著作权归作者所有

共有 人打赏支持
m243043962
粉丝 0
博文 70
码字总数 34357
作品 0
黄冈
程序员
Oracle笔记 目录索引

Oracle笔记 一、oracle的安装、sqlplus的使用 Oracle笔记 二、常用dba命令行 Oracle笔记 三、function 、selectOracle笔记 四、增删改、事务 Oracle笔记 五、创建表、约束、视图、索引、序列...

ibm_hoojo
2011/05/03
0
0
Oracle SQL的执行(一)

一、SGA--共享池 共享池是oracle缓存程序数据的地方.执行过的每一条sql语句在共享池中都存有解析后的内容.这个部分称作库高速缓存.在oracle解析每条sql之前,先检查库高速缓存,如果存在,就使用...

记忆的美好
2012/09/24
0
0
java 获取指定目录下的所有文件

java ,如何获取指定目录下的所有文件呢? 看代码: 说明:上述方法采用了递归,所以包含子目录下的子目录中的文件。。。 测试代码: 输出结果: d:Tempaadividedmergedoracle学习笔记.doc ...

zh119893
2014/05/10
325
0
怎样成长为一个真正的Oracle DBA (转载)

Oracle分两大块,一块是开发,一块是管理。 开发主要是写写存储过程、触发器什么的,还有就是用Oracle的Develop工具做form。有点类似于程序员,需要有较强的逻辑思维和创造能力,个人觉得会比...

y862318
2014/05/14
0
0
十分钟读懂python的“数据库”语言

JOIN可以用或执行。默认情况下, 将在其索引中加入DataFrame。每个方法都有参数,允许您指定要执行的联接类型(LEFT,RIGHT,INNER,FULL)或要联接的列(列名称或索引)。 假设我们有两个与...

frbevrqbn4l
2017/11/09
0
0

没有更多内容

加载失败,请刷新页面

加载更多

ReentrantLock_可重入

package cunrent;import java.util.Calendar;import java.util.concurrent.locks.ReentrantLock;public class TestReentrantLock { public static void main(String[] args......

noteman
38分钟前
2
0
CentOS7下安装mysql5.7

1、安装YUM Repo 由于CentOS 的yum源中没有mysql,需要到mysql的官网下载yum repo配置文件。 wget https://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm 然后进行repo的安...

JungleKing
46分钟前
2
0
DevExpress v18.1新版亮点——DevExtreme篇(三)

用户界面套包DevExpress v18.1日前终于正式发布,本站将以连载的形式为大家介绍各版本新增内容。本文将介绍了DevExtreme JavaScript Controls v18.1 的新功能,快来下载试用新版本!点击下载...

Miss_Hello_World
47分钟前
1
0
LoadRunner 安装

如果安装LoadRunner 11时弹窗提示"Micosoft Visual C++ 2005 SP1 可再发行组件包(X86):'命令行选项语法错误。键入命令 / ? 可获得帮助信息'"。或者弹窗提示"此计算机缺少 vc2005_sp1_wit...

ww1234
56分钟前
1
0
两个时间段相隔自然月Util

public class DateUtil { public static int getDay(Date date) { Calendar calendar = Calendar.getInstance(); calendar.setTime(date); return calend......

木九天
59分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部