oracle和mysql查询_ORACLE 数据库 查询语句与DML语句
一、查询语句
ORACLE 数据库中获得数据表中的结果,称为查询语句,其关键词是 select(下面其所有的示例均为scott模式下的对象)
1.1 查询语句基础
1.1.1 获得表中全部字段与结果
语法如下
select * from table_name;
示例
查询 雇员表的全部信息
1.1.2 获得表中需要的字段结果
说明
通过显示指定表中的字段名可以只显示需要字段
语法如下
select col1[,col2,col3....] from table_name;
示例
查询雇员表的雇员编号和雇员名
1.1.3 按照过条件过滤结果
说明
可以通过where关键字卡条件来过滤结果, 条件字段等于或者大于或者小于某个值等等,与可以多个条件连用
语法如下
select * from table_name where col1 ='XXXX';
示例1
查询雇员表的雇员编号为7934的结果
示例2
查询雇员表的部门编号为30,并且奖金大于300的结果
1.1.4 按照某个值排序查询的结果
默认的查询结果是随机显示的,但是可以通过关键词 order by 来使结果按照一定的规则排序显示,可以通过 ASC或者desc来指定升序还是降序排列,缺省为asc
语法
select * from table_name order by col1 [asc|desc];
示例
通过部门编号降序显示结果
1.2 高级查询语句
1.2.1 子查询
说明
子查询,主表的条件字段结果引用另一个表中的结果,其中子表的查询字段只能查询一个,可以引用子集的多行结果关键字为 in或者 not in,也可以只返回一行结果,关键字是=
语法
select * from table_name1 where col1 in | not in|= (select col1 from table_name2);
示例1
返回多个子结果
(注意子查询的条件,子查询的条件筛选是多个)
示例二
返回单个子结果
(注意子查询的条件,子查询的条件筛选是单个)
1.2.2多表等值关联查询
说明
1. 当查询结果需要引用其他表中结果,需要进行关联查询
2. 在from 后面接两个或两个以上的表
3. 确保关联表中的关联字段值是唯一的,否则会产生笛卡尔积
4. 如果在查询字段中有,两个表的字段都包含了该字段,则需要显示的指定字段来自于哪个表
5. 可以在表名后面跟别名
语法
select col1[,col2,col3....] from table_name1,table_name2 where tba1.col1=tab2.col1;
示例
将雇员表和部门表进行链接查询
(注意看,deptno字段,因为两个表都有该字段,所以需要显示的指定一个表,如果给表起了别名,则字段前指定表名也需要写表别名)
1.2.3 左关联查询
说明
1.哪个表名在前,哪个表就是左边,在后面的为右表
2. 左表的全部信息都会查询出来,右表的信息只有关联上的信息才会查询到,右表没有关联上的信息,则会显示为空,关键词 left join,也可以用(+)来关联
语法
select col1[,col2,col3....] from table_name1,table_name2 where tba1.col1=tab2.col1(+);
或
select col1[,col2,col3....] from table_name1 left join table_name2 on tba1.col1=tab2.col1;
示例1
使用(+)写法,(+)在右表上
示例二
使用 left join on 关键词
1.2.4 右关联查询
说明
1.哪个表名在前,哪个表就是左边,在后面的为右表
2. 右表的全部信息都会查询出来,左表的信息只有关联上的信息才会查询到,左表没有关联上的信息,则会显示为空,关键词 right join,
也可以用(+)来关联
语法
select col1[,col2,col3....] from table_name1,table_name2 where tba1.col1(+)=tab2.col1;
或
select col1[,col2,col3....] from table_name1 right join table_name2 on tba1.col1=tab2.col1;
示例1
使用(+)写法,(+)在左表上
示例二
使用 right join on 关键词
1.2.5 内连接
说明
内连接实际不分左右表
内连接只会显示两个表能关联上的结果,没有关联上的数据不会显示
内连接使用inner join关键词
语法
select col1[,col2,col3....] from table_name1 [inner] join table_name2 on tba1.col1=tab2.col1;
示例
1.2.6 全连接
说明
全连接不分左右表
全连接会显示两个表的所有结果,没有关联上的数据则会显示为空
全连接使用full join关键词
语法
select col1[,col2,col3....] from table_name1 full join table_name2 on tba1.col1=tab2.col1;
1.2.7
使用
exists
和
not exists
查询
说明
使用 exist
可以查询主表数据存在附表中的结果
使用 not exist
可以查询主表数据不在附表中的结果
语法
select * from tab1 where [not] exists(select 1 from tab2 where tab1.col=tab2.col);
示例1
查询部门表部门标号在雇员表中的数据
示例2
查询部门表部门标号不在雇员表中的数据
二
、DML语句
Oracle
数据库的
DML
表数据的操作有三种:
1 insert
(插入)
2 update
(更新)
3 delete
(删除)
(为了避免更改掉原始的数据,所以我把emp复制了一份出来,表名为emp_new,表空没有数据。以下的用例都使用这张emp_new)
2.1 insert 语句使用
2.1.1 insert 基本用法
说明
1. 如果想要给表中添加数据的话,则需要使用insert into和values关键字来添加我们想要的数据
2. 可以选择要填充的字段名与值来插入数据
3. 也可以全表所有字段来插入数据
4. 在给定值的时候一定要注意值要符合表规定(比如字段类型,是否为空,是否唯一等等)
5.需要注意的是,在插入之后需要commit(提交)后才能永久的生效我们的操作。
语法
按照选定字段插入,values后面值的位置,对应前面字段的顺序,不指定的字段缺省都为空
insert into tab_name(col1[,col2,col3....]) values('value1'[,'value2','value3'....]);
插入表中全部值,这种写法需要注意的是,不能跳过字段,否则会串列
insert into tab_name values('value1','value2','value3'....);
示例1
按照指定字段插入值
示例2
插入所有字段
2.1.2 引用另一个表的结果插入
说明
可以将另一个表中的查询结果插入目标表,可以是选择字段插入,也可以是全字段列的插入,但是需要注意的是无论哪种方式,都要注意表限制和字段顺序,以及两个表值的个数数量要一致。
语法
insert into tab1(col1[,col2,col3....]) select col1[,col2,col3....] from tab2;
或
insert into tab1 select * from tab2;
示例1
按字段插入另一个的结果
(该插入是引用了emp表的雇员编号为7902的查询结果)
示例2
引用另一个表中的全部字段插入
2.2 update语句使用
2.2.1 update 基本用法
说明
1. 如果想要在表中修改已存在数据的话,则需要使用
update set关键字来修改我们想要的数据
2. 更新是针对列修改的
3. 如果想修改某行或者某几行的某一列,则必须加条件否则会把整个表得该列都更新成一样的
4. 在给定更新值也必须符合到表限制(比如字段类型,是否为空,是否唯一等等)
5.需要注意的是,在更新之后需要commit(提交)后才能永久的生效我们的操作。
语法
update tab
set col1='xxx'
[where col1='xxx'......];;
示例1
无条件更新整个列
(将所有人的奖金都加100。需要注意的是,由于奖金字段(comm)的类型是数字的,而且值为null,所以数字类型为null值默认不会更新,但是字符格式的不存在这种情况)
示例2
按照条件更新值
(将所有人奖金为空的人的奖金更新成为200。需要注意的是:更新数字格式字段值为null的情况,必须指定要更新字段值为null)
2.2.2 update
高级用法
说明
1.更新还可以同时更新多个值,通过逗号隔开
2.还可以引用另一个表的查询结果来更新
多值更新
语法
update tab
set col1='xxx',col2='xxxx'
[where col1='xxx'......];
示例
同时更新mgr和sal值
引用查询结果
语法
update tab1
set col1=(select col1 from tab2 where tab1.col=tab2.col)
[where col1='xxx'......];
示例
根据emp表中查询得到dept字段和mgr字段结果更新emp_new表中的deptno字段和mgr字段
2.2 delete语句使用
2.2.1
delete基本用法
说明
1. 如果想要在表中删除已存在数据的话,则需要使用
delete关键字来删除我们不想要的数据
2. 删除数据可以不卡条件直接删除表中所有的数据
3. 也可以卡条件字段来删除特定的数据
4.需要注意的是,在删除之后需要commit(提交)后才能永久的生效我们的操作。
5.特别要强调的是,要在删除前把delete改成select 执行下,确保查询到的结果就是要删除的正确数据,防止误删除事件发生
语法
delete from tab [where col1='xxx'......];
示例
按条件删除
删除部门编号为null的数据
删除表中全部数据
今天想表达的关于技术的东西都写完了,说些题外话,这是我写的第一遍博客,就挑选了入门的基础知识来帮助入门oracle的朋友们供一个思路算是抛砖引玉吧。我个人能力有限,写的东西水平业有限,不足之处还望大家提出来,在日后的博客中改进,然后希望日后能跟大家多多交流共同学习进步。
oracle和mysql查询_ORACLE 数据库 查询语句与DML语句相关推荐
- oracle repeatable read,Oracle和Mysql中的数据库事务有关问题:Mysql Read-Repeatable有有关问题...
Oracle和Mysql中的数据库事务问题:Mysql Read-Repeatable有问题 今天不知不觉想到数据库的乐观锁和悲观锁,遂想写个程序测测,却发现了另一个问题,Mysql InnoDB的R ...
- 7.PL_SQL——在PL_SQL程序中内嵌查询语句、DML语句、事物处理语句和游标属性
在PL/SQL中可以使用的SQL语句主要有以下几类: SELECT 查询语句,DML语句,Transaction 事物处理语句以及游标的属性,本文将对这几类语句在PL/SQL中的用法逐一介绍. 一.查 ...
- Oracle/MSSQL/Mysql 常用数据库的字段类型及大小
Oracle/MSSQL/Mysql 常用数据库的字段类型及大小 ORACLE的数据类型 常用的数据库字段类型如下: 字段类型 中文说明 限制条件 其它说明 CHAR 固定长度字 ...
- PHP学习总结(数据库概念、DDL语句、DML语句)
自从做完一个简单的登陆注册页面,发现数据库知识真的很重要,所以要详细的学习一下数据库的知识. 一.数据库基本概念 数据库可以理解为用来存储信息的仓库 表:表是数据的矩阵,在一个数据库中的表看起来像一个 ...
- Oracle、MySql、SQLServer 数据库分页查询语句
(一).** mysql的分页查询** mysql的分页查询是最简单的,借助关键字limit即可实现查询,查询语句通式: /* * sql:可以是单表的查询语句,也可以是多表的联合查询语句* firs ...
- mysql和oracle模糊查询_oracle模糊查询mysql的区别
oracle与使用mysql的区别 1.Like模糊查询有字符串拼接 所有用 str1||str2 拼接的字符串都要改成CONCAT(str1,str2) '%'||#{zbmc}||'%'改成CON ...
- mysql居左查询abcd_数据库--查询语句
查询语句 mysql中要学习的知识:多表关系,查询语句,索引 添加数据补充 将一个查询结果插入到另一张表中 create table student(name char(10), gender int ...
- mysql实验四数据库查询和视图_数据库-第四次实验报告-视图-t-sql语句
实验十报告 创建视图 实验目的 1.掌握创建视图的SQL语句的用法. 2.掌握使用企业管管理器创建视图的方法. 3.掌握使用创建视图向导创建视图的方法. 4.掌握查看视图的系统存储过程的用法. 5.掌 ...
- case when 子查询_Oracle数据库-单表查询
本章涉及单张表中的查询语句,包含常用的条件查询.范围查询.模糊查询等,跨表查询后续将会介绍. 1.基本查询语句 格式:SELECT[DISTINCT] column_name,-|* FROM tab ...
最新文章
- hdu 5254(暴力穷举)
- ITK:运算后的当前图像
- Spring-core-SpringFactoriesLoader类
- HALCON 20.11:深度学习笔记(7)---术语表
- Chrome Inspect调试stetho出现空白的解决方法
- schema在oracle里是什么意思
- SAS︱数据索引、数据集常用操作(set、where、merge、append)
- AngularJs依赖注入的研究
- 【新书速递】CSO进阶之路首次曝光
- 2019牛客暑期多校训练营(第八场)B.Beauty Values
- Android性能优化——启动优化简述
- asp.net WEB 调用 CuteFTP8.0 ftpte.exe 实现大文件上传
- #荣耀双十一# 就是耀免单,年度旗舰任性送
- 圆周率π是怎么算出来的,用程序怎么算
- regl fake-3d 静态图变动态图, 使用深度信息图片
- oracle10g rac启动,oracle 10G rac启动与关闭正常顺序
- 微信小程序 简单易用 下拉框组件
- Python如何一行代码自动发邮件
- NVIDIA 显卡驱动安装
- Python爬虫实现全自动爬取拉钩教育视频
热门文章
- html双人台球游戏,使用h5和matter.js实现的简化版台球小游戏
- linux文本三剑客,Linux文本处理三剑客之grep
- mysql并发提交事务_Mysql事务并发问题解决方案
- linux定义别名出错,Linux自定义别名alias重启失效问题
- shell+中sum的用法_Shell中函数使用
- ros订阅相机深度信息_一起做ROS-DEMO系列 (2):基于find_object_2d的目标匹配识别
- 每日一皮:努力寻找Bug的程序员
- Spring 与 Spring Boot 中的事件机制
- 每日一皮:多线程理想与现实的差距
- 国内 Java 开发者必备的两个装备,你配置上了么?