oracle学习笔记第一天
--oracle学习的第一天
--一、几个基础的关键字
1、select
select (挑选) 挑选出显示的--列--(可以多列,用“,”隔开,*表示所有列),为一条语句的最后执行
select * from emp;
相关:1)列可起别名,有三种方式:<1>直接列名后下个单词;
select job j from emp;
<2>列名后双引号添加别名
select job "j" from emp;
<3>列名后加as,再加有有双引号的别名
select job as "j" from emp;
select job as "j" from emp;
2)distinct关键字(有区别的) 去重,可有多列(多列为整体,都一样时才去重)
select distinct job from emp;
select distinct job,comm from emp;
2、from关键字 检索表,紧跟后面可直接写表名
select * from emp e;
3、where关键字 过滤行记录
用法:
1).=,!=,<>,<,>,<=,>=,any,some,all
select * from emp where sal>2000;
select * from emp where sal = any(5000,1100);
2). is null,is not null
select * from emp where comm is not null;
3).between x and y
select * from emp where sal between 2000 and 4000;
4).and 、 or 、 not
select * from emp where deptno = 10 and sal>2000;
select * from emp where deptno = 10 or sal>2000;
select * from emp where comm is not null;
5).in(list),not in(list)注:定值并非定范围
select * from emp where sal in(1100,5000);
6).exists(子查询)、not exists(子查询)
select * from emp where exists (select deptno from emp where deptno = 20 and sal >2000 );
7).like模糊查询(用单引号)
“%”:匹配零个或若干个字符
“_”:匹配一个字符
在模糊查询中,如果查询的数据中有“%”,“_”时,可以使用escape自定义转
select * from emp where ename like '%A%' ;
select * from emp where ename like '_A%';
4、order by关键字 排序
注:asc 升序(可省略),desc 降序
可加多列,有优先级,第一列先排序,后第一列值相同,按第二列排序,类推
5、集合操作:
1).union 关键字 并集(去重)
select ename from emp where sal > 2000 union select ename from emp where deptno=10
2).union all 关键字 全集(不去重)
select sal from emp where sal > 2000 union all select sal from emp where sal < 5000
3).intersect 关键字 交集
select sal from emp where sal > 2000 intersect select sal from emp where sal < 5000
4).minus 关键字 差集
select sal from emp where sal > 2000 minus select sal from emp where sal < 5000
注:1)能用and,or,解决的不要用集合操作,效率低
2)两集合选择的列建议保持一致,不一致有什么意义呢
6、group by关键字 分组
注: 1.分组之后,不能将除分组字段之外的字段放在select后面
2.group by 后面可以跟多个字段,则这多个字段值都相同时,才分为一组
3.分组之后,可以使用组函数对每个组进行数据处理
select deptno from emp group by deptno,comm;
7、having关键字 分组后过滤行记录
注:与where基本一样
select deptno from emp group by deptno having deptno =10;
二、函数
单行函数
dual 虚表,一般用于测试
1.字符函数
1)concat(s1,s2) 拼接a,b两个字符串数据
select concat('aa','ccc') from dual;
2)initcap(s) 将每个单词x首字母大写
select initcap ('li jia sheng') from emp ;
3)lower(s) / upper(s) 将字符串小写/将字符串大写
select lower ('LI JIA SHENG') from emp ;
select upper ('li jia sheng') from emp ;
4)length(s) 获取字符串的长度
select length('aaaccc') from dual;
5)lpad(s,len,c) /rpad() 将s字符串左边填充至len长度,用c字符填充
select lpad('abcde',10,'-') from dual;
select rpad('abcde',10,'-') from dual;
6)ltrim(s,c) / rtrim() 去除s字符串左边的c字符,如果c不传参,默认去除空格
select ltrim('abcde','a') from dual;
7)replace(s,s1,s2) 将a中的b字符串替换为c
select replace('a bcde','a','c') from dual;
8)substr(s,index,len) 将s的字符串,从index位置开始截取,截len个长度
select substr('abcde',2,2) from dual;
9)trim( c from s) 将b左右两边的a字符去除掉
select trim('a' from 'aaddddaa') from dual;
2.数字函数
abs() 求取绝对值
select abs(-3) from dual;
ceil() 向上取整
select ceil(5.2) from dual;
floor() 向下取整
select floor(5.2) from dual;
round() 四舍五入
select round(5.2) from dual;
power(x,y) x的y次幂
select power(5,2) from dual;
3.日期函数
sysdate 返回系统当前日期,注意没有括号
select sysdate from dual;
add_months(d1,d2) 在d1日期上,增加d2个月份
select add_months(sysdate,4) from dual;
months_between(d1,d2) 返回d1和d2之间的相隔月份
select months_between(sysdate,hiredate) from emp;
last_day(d) 返回d日期所在月份最后一天的日期
select last_day(sysdate) from dual;
next_day(d,X) 返回下一个星期X的日期
select next_day(sysdate,'星期日') from dual;
4.转换函数
to_char() 将数字、或日期转化为字符串
select to_char(sysdate,'yyyy-mm-dd hh-mi-ss') from dual ;
select to_char(1234,'9,9,9,9') from dual;
to_date() 将字符串转化为日期
select to_date('1996/06/25','yyyy-mm-dd ') from dual;
to_number() 将字符串转化为数字
select to_number('23333') from dual;
select to_number(64,'XX') from dual;
5.其他函数
nvl(x,y) 如果x为null,则显示为y,x和y的类型保持一致
select nvl(comm,0) from emp;
sys_guid() 生成一个的32位随机字符串
select sys_guid() from emp;
decode() 条件取值,类同java的switch
select decode(sal,1000,'****',5000,'######','!!!!!') from emp;
case when then else end 条件取值,类同java的if-else if-else
select case when sal<1000 then '@@@@@@@'
when sal<5000 then '^^^^^^^'
else '!!!!!' end from emp;
组函数
组函数又被称作聚合函数,用于对多行数据进行操作,并返回一个单一的结果
avg()求平均值,只能对数字类型进行处理,不处理空字段
select avg(sal) from emp;
sum()求和,只能对数字类型进行处理
select sum(sal) from emp;
max() 求最大值,对任何类型生效
select max(sal) from emp;
min() 求最小值,对任何类型生效
select min(sal) from emp;
三、sql顺序
sql顺序分为两类:
1.sql的书写顺序
select from where group by having order by [asc/desc]
2.sql的执行顺序
from where group by having select order by [asc/desc]
- Oracle学习笔记之四sp1,Oracle 11g的常用函数
从Oracle学习笔记之四,SQL语言入门中摘出来的,独立成一章节 3.1 字符类函数 ASCII(c)和CHR(i) 分别用于返回一个字符的ASCII码和返回给定ASCII值所对应的字符. C ...
- Oracle学习笔记三 SQL命令
SQL简介 SQL 支持下列类别的命令: 1.数据定义语言(DDL) 2.数据操纵语言(DML) 3.事务控制语言(TCL) 4.数据控制语言(DCL)
- ActionBarSherlock学习笔记 第一篇——部署
ActionBarSherlock学习笔记 第一篇--部署 ActionBarSherlock是JakeWharton编写的一个开源框架,使用这个框架,可以实现在所有的Android ...
- Oracle学习笔记——点滴汇总
Oracle学习笔记——点滴汇总 http://www.botangdb.com/ Oracle GI = Grid Infrastructure = ASM + Cluster
- Oracle学习笔记之四,SQL语言入门
1. SQL语言概述 1.1 SQL语言特点 集合性,SQL可以的高层的数据结构上进行工作,工作时不是单条地处理记录,而对数据进行成组的处理. 统一性,操作任务主要包括:查询数据:插入.修改和删除数据 ...
- Oracle学习笔记—数据字典和常用命令(转载)
转载自: oracle常用数据字典和SQL语句总结 Oracle常用命令大全(很有用,做笔记) 一.Oracle数据字典 数据字典是Oracle存放有关数据库信息的地方,其用途是用来描述数据的.比如一 ...
- oracle学习笔记(一)用户管理
--oracle学习第一天 --连接 @后面连接数据库实例,具体连接到那个数据库 conn scott/tiger@MYORA1; --修改密码 passw; --显示用户 show user; -- ...
- Django学习笔记---第一天
Django学习笔记 1.Django的安装 //如果不指定版本号,默认安装最新版 pip3 install django==1.11.8 关于Django的版本和python的版本依赖关系,请看下图 ...
- 吴裕雄--天生自然 oracle学习笔记:oracle理论学习详解及各种简单操作例子
1. 数据库的发展过程 层次模型 -->网状模型 -->关系模型 -->对象关系模型 2. 关于数据库的概念 DB:数据库(存储信息的仓库) DBMS:数据库管理系统(用于管理数据库 ...
随机推荐
- C++设计模式——装饰模式
前言 在实际开发时,你有没有碰到过这种问题:开发一个类,封装了一个对象的核心操作,而这些操作就是客户使用该类时都会去调用的操作:而有一些非核心的操作,可能会使用,也可能不会使用:现在该怎么办呢? 将这 ...
- Python-Django 模板层
1 模版简介 DTL:django模板语言 核心: 变量 {{ }} 标签 {% %} 2 模版语法之变量 -变量渲染:{{变量}} -变量深度查询:{{变量.索引/key值/方法}} <h2& ...
- python正则表达式--特殊字符
正则表达式—特殊表达式含义 正则表达式的字母和数字表示他们自身,但多数字母和数字前加一个反斜杠时会拥有不同的含义. 下面列出了正则表达式模式语法中的特殊元素. 1.普通字符集 1) \w ...
- [转]一个普通IT人的十年回顾---金旭亮
金旭亮老师十年体会,很有收获.转自网络. 金旭亮于1989年与超级解霸的开发者梁肇新同时迈入广西大学的校门,却走了一条与其不同的路. 1994年起开始自学计算机专业本科课程,并开始编程,从未间断,迄今 ...
- influxDB+grafana安装配置及邮件告警发送配置
1. InfluxDB安装 下载包并解压: $:wgethttps://dl.influxdata.com/influxdb/releases/influxdb-1.3.6_linux_amd64.t ...
- json server服务器
json文件可以理解为数据库 一.json-server快速搭建RESTAPI 安装: sudo cnpm install -g json-server 启动(使用): json-server指向js ...
- python 10大算法之一 LinearRegression 笔记
简单的线性回归预测房价 #!/usr/bin/env python # encoding: utf-8 """ @version: @author: --*--. @fi ...
- Python学习(三十五)—— Django之ORM训练专题
图书管理系统 一.表结构设计 # 书 class Book(models.Model): title = models.CharField(max_length=32) publish_date = ...
- Linux安装Tomcat-Nginx-FastDFS-Redis-Solr-集群——【第九集-补充-之安装iptables】
1,安装完了jdk,tomcat,启动tomcat的bin/startup.sh后,发现在浏览器输入公网ip地址和tomcat的默认(server.xml)中的端口port:8080,无法访问,这主要 ...
- Noj - 在线强化训练3
状态 题号 竞赛题号 标题 1091 A 求解逆波兰表达式(Calculate the reverse Polish notation) 1017 B 数列 1323 C 穷举n位二进制数 ...