Oracle数据库的基本语法
注意:Oracle数据库中的字段值严格区分大小写。
1、 建立表
表约束的创建:
2、 使用数学符号:当我们的表中列包含数字列时,我们可以用相应的表达式对其进行查询,其中表达式包含运算符优先级
Eg:SELECT last_name, salary, salary + 300 FROM employees;
3、 连接符||用于把列与列、列与字符连接起来,合成列
Eg:SELECT last_name||job_id AS "Employees"FROM employees;
4、 字符串可以是 SELECT 列表中的一个字符,数字,日期。日期和字符只能在单引号中出现。
Eg:SELECT last_name ||' is a '||job_id AS "Employee Details"
FROM employees;
返回结果:
4、重复行:默认情况下,查询会返回全部行,包括重复行,在 SELECT 子句中使用关键字‘DISTINCT’删除重复行。
Eg:SELECT DISTINCT department_id FROM employees;
5、 使用 DESCRIBE 命令,显示表结构:DESC[RIBE] tablename
6、 常用比较运算符:=、>=、>、<、<=、<>(不等于)
Between…..and:在两个值之间(包含边界)
In:等于值列表中的一个 (如果查询范围中存在null,不影响查询),如果是not in,查询范围中存在null,则不返回任何数据
Like:模糊查询 :使用 LIKE 运算选择类似的值,选择条件可以包含字符或数字:% 代表0个、一个或多个字符。_ 代表一个字符。我们也可以在其中使用not关键字,
Is null:空值
Eg: 1)SELECT last_name, salary FROM employees
WHERE salary BETWEEN 2500 AND 3500
2)SELECT employee_id, last_name, salary, manager_id FROM employees WHERE manager_id IN (100, 101, 201);
3)SELECT last_name FROM employees WHERE last_name LIKE '_o%';
4)SELECT last_name, manager_id FROM employees
WHERE manager_id IS NULL;
5)like %%:表示查询全部记录。
7、 逻辑运算:and(逻辑并)、or(逻辑或)、not(逻辑否)
Eg: 1)SELECT employee_id, last_name, job_id, salary FROM employees WHERE salary >=10000 AND job_id LIKE '%MAN%';
2) SELECT employee_id, last_name, job_id, salary FROM employees WHERE salary >= 10000 OR job_id LIKE '%MAN%';
3) SELECT last_name, job_id FROM employees WHERE job_id NOT IN ('IT_PROG', 'ST_CLERK', 'SA_REP');
8、 order by:使用 ORDER BY 子句排序 ASC: 升序(默认) DESC: 降序,ORDER BY 子句在SELECT语句的结尾。
Eg:SELECT last_name, job_id, department_id, hire_date
FROM employees ORDER BY hire_date DESC ;
按别名排序:SELECT employee_id, last_name, salary*12 annsal
FROM employees ORDER BY annsal;
多个列排序:SELECT last_name, department_id, salary
FROM employees ORDER BY department_id, salary DESC;
9、 优先级:
1 算术运算符 2 连接符 3 比较符
4 IS [NOT] NULL, LIKE, [NOT] IN 5 [NOT] BETWEEN
6 NOT 7 AND 8 OR
10、函数
A:字符函数:UPPER(),LOWER(),INITCAP(),LENGTH(),SUBTR()
B:数字函数:round(目标数,舍入数),表示四舍五入,例如round(234.678,2)得到234.68,round(234.678,-2)得到200;trunc(目标数,截取数),表示截取数,例如trunc(234.678,2)得到234.67,
trunc(234.678)得到234,trunc(234.678,-2)得到200;mod(数字1,数字2),表示取模,例如mod(100,3)得到1.
C:日期函数:
取得当前日期:sysdate
日期计算:日期+数字=几天后的日期,日期-数字=几天前的日期,日期-日期=两个日期之间的天数,大日期-小日期
四个操作函数:last_day(日期):求出指定日期的最后一天
next-day(日期,星期数)求出下一个指定星期X的日期
add_months(日期,数字)求出若干月之后的日期
months_between(日期1,日期2)求出两个日期之间所经历的月份
在有关日期的操作时,最好使用上面的函数,可以避免闰年情况。
D:转换函数
TO_CHAR(字符串|列,格式字符串):将日期或数字变成字符串显示
TO_DATE(字符串,格式字符串):将字符串变成DATE数据显示
TO_NUMBER(字符串):将字符串变成数字显示
例如:TO_CHAR(sysdate,’yyyy-mm-dd hh24 :mi:ss’)表示按照格式化的字符串输出当前日期。hh24:表示按照24小时制,在yyyy前面加上fm表示去掉0
格式化数字:TO_CHAR(34567891223,’999,999,999,999,999’)输出34,567,891,223,其中999表示一位字符的概念,而不是数字9,如果在999前面加上字符L,输出表示当前环境下的货币符号。
TO_DATE(‘2011-9-23’,’yyyy-mm-dd’)将字符串变成日期,一般在更新数据库的时候用的比较多。
TO_NUMBER()函数用的比较少,因为Oracle很智能,能自己转换。
E:通用函数:(Oracle自己的特色函数)
NVL(带有空的字段,数字)将带有空的字段替换为数字。
DECODE()多数值判断,语法如下
DECODE(数值|列,判断值1,显示值1,判断值2,显示值2,……….)
例如:SELECT empno,job,DECODE(job,‘clerk’,‘办事员’,‘manager’,‘经理’)from emp;
将emp表中的job字段的clerk与manager转换为中文。
10、 查询记录的条数,count()函数,例如:
Select count(*)from emp;
11、 select * from tab;查看数据库中有几张表
12、 多表查询,数据量很大时,性能会很低。通过多表查询的时候,表一般使用别名。
13、 Char与Nchar的区别:例如存放一个英文字母,char占一个字节,存放一个中文,char占两个字节,而ncahr无论是英文还是中文都是两个字节。
14、 统计函数
Count():查询表中的数据记录 Avg():求平均值
sum():求和 max():求最大值 min():求最小值
eg:select count(sal),sum(sal) ,max(sal),avg(sal)from emp;
注意:如果表中没有统计记录,则count()会返回0,而其他的函数则有可能返回空值,count()永远会返回一个数值。
15、 分组统计:使用group by字句。
Eg:select count(sal),sum(sal) ,max(sal),avg(sal)from emp;
注意:a:分组函数可以在没有分组的时候单独使用,但是不能出现其他的查询字段,例如下面是错误的:
select job, count(empno)from emp;
b:如果要进行分组,select子句之后只能出现分组的字段和统计函数,不能出现其他字段,例如下面是错误的:
select empno,job, max(sal),min(sal)from emp group by job;
c:分组函数允许嵌套,但嵌套之后的分组函数中不能出现其他的任何字段。例如下面是错误的:
select job, Max(avg(sal)) from emp group by job;
d:在where子句中我们不能使用统计函数。
16、 如果我们要对分组后的数据进行过滤,我们不能使用where语法了,而是使用having关键字。
注意:where与having的区别:
Where:是在执行order by操作之前进行的过滤,表示从全部数据中筛选出部分数据,在where之中不能使用统计函数。
Having:是在order by分组之后的再次过滤,可以使用统计函数。
17、 子查询:子查询语句可以出现在查询语句的任意位置上,但是在where与from较多
Where:子查询一般只返回单行单列、多行单列、单行多列的数据
From:子查询返回的是多行多列的数据,一般当做一张临时表。
18、 选择表中前n条记录:select * from 表名 where rownum<=n;
19、 关键字出现顺序:
Select from inner join on where group_by having order_by
例如:
select e.ename,sum(s.pamount)
from tbSales s
inner join tbEmp e
on s.eid=e.eid
where to_char(s.sdate,'mm')=3 and e.esex='男'
group by e.ename
having sum(s.pamount)>=80000
order by sum(s.pamount) desc;
20、 表复制
create table 表名1 as select * from 表名2
将表名2复制到表1,这是Oracle专有语法。
21、 表的更新操作
增加数据:insert into 表名(字段1,字段2…)values (值1,值2,…)
或者:insert into 表名 values(相匹配字段的数值)//不建议使用
修改数据:update 表名 set 字段1=值1,字段2=值2,[where条件]
删除数据:delete from 表名[[where条件]
如果更新与删除没有相匹配的数据,则更新记录为0
22、 事务处理
两个主要命令:
Rollback:事务的回滚,更新操作回到原点
Commit:事务的提交,真正发出的更新操作,一旦提交之后就无法回滚
例如:当两个用户要对数据库进行更新操作,一个用户已经更新了,但是他还没commit,则另一个用户要更新的时候只能等待,等前面那个用户commit之后才能进行更新。这在数据库中可称为死锁。
转载于:https://blog.51cto.com/8786457/1390071
Oracle数据库的基本语法相关推荐
- oracle 数据库 触发器 trigger 语法
http://shixm.iteye.com/blog/401564 关键字: oracle 数据库 触发器 trigger 语法 语法规则: Create [or replace] trigger ...
- Oracle数据库查询数据语法
查询数据 本节将学习如何从Oracle数据库中查询数据.我们将从一个简单的查询开始,从单个表中检索数据. Select语句 - 演示如何查询单个表中的数据. --查询语句: select 数据 fro ...
- oracle数据库常用的语法与复合函数
oracle查用到一些复合函数以及一些常用的方法用来快速查询数据,以下是我收集的一下常用方法,推荐给大家: 1. 当分组之后,针对某一属性值进行合并并以逗号进行分割: (1)所有版本都可使用: 合并数 ...
- oracle数据库中常用语法,oracle数据库常用语法(中文注释版)
-- 查看系统所有变量值 show all -- 显示当前连接用户 show user -- 显示表结构 desc 表名 -- 显示错误 show error -- 退出 exit; 表空间是数据库中 ...
- oracle中触发器的语法,解析Oracle触发器的语法
导读:触发器是一种特殊的存储过程,触发器的执行不是由程序调用,也不是手工启动,而是由事件来触发,Oracle数据库是大家非常熟悉的数据库系统啦,那么Oracle触发器的语法是怎样的呢?下文中将为大家带 ...
- Oracle数据库DECODE函数的使用.
decode函数是Oracle数据库独有的. 语法为: decode(条件,值1,返回值1,值2,返回值2,...值n,返回值n,缺省值) 例子:select decode(sign(变量1-变量2) ...
- 3、oracle数据库的语法基础
ORACLE语法基础 ORACLE的语法基础主要包括数据类型和SQL语法. 1.数据类型 1.1字符型 用于存储文本的数据类型 CHAR(固定长度字符串1-2000个字节) VARCHAR2(可变长度 ...
- Oracle、MySQL、SqlServer、PG数据库merge into语法实现总结
概述 多表关联查询的时候会用到临时表插入数据,然后再用select查行查询,在往临时表里插入数据的时候,我们经常会用到判断如果临时表里有了这部分数据我们就要更新数据,如果临时表里没有这部分数据我们就要 ...
- Oracle数据库常用基本SQL语法
标题 Oracle数据库常用基本SQL语法 1.表的创建.插入,删除及Oracle和mysql的数据类型的区别 create table item (item_id number(5) primary ...
最新文章
- python学习笔记之socket(第七天)
- ubuntu下docker的安装及更换镜像源
- ubuntu - 14.04,如何操作Gnome的任务栏?
- java设置imageview图片大小_java – 在android中设置imageview
- 集群虚拟服务器,Nginx集群
-LVS(Linux虚拟服务器)简介
- nyoj 144小珂的苦恼(关于如何不定方程有整数解问题)
- live555 rtsp直播卡顿马赛克优化
- 软件需求分析——UML用例图
- 在线拍照功能JQuery.webCap.plugin 实现
- 【论文写作】如何写出一篇好的学术论文?
- 数独c语言程序设计说明,c语言数独字谜游戏课程设计
- GPT系列论文精读-GPT1
- oracle 动态声明变量_Oracle11g新特性之动态变量窥视
- php memcache内存大小,PHP memcache 内存缓存 数据库查询 应用 高洛峰 细说PHP
- 【优动漫 PAINT应用篇】绘制插画之上墨线
- 不用下载就能在线P图,这款工具分享给你
- QMS-云质-质量管理软件-闲聊霍尼韦尔用13亿美元收购一家质量管理软件(QMS)小公司
- AVI文件结构分析及举例验证
- 如何修改图片大小200kb?怎样让图片不超过200k?
- java计算机毕业设计网上扶贫农产品销售系统源码+系统+数据库+lw文档+mybatis+运行部署