Oracle查询(select)

每个表中都有一个伪列ROWID,每个结果集中都有一个ROWNUM(根据查询结果集中需要列出的行数)。
有个Customer表,有name, id,price字段

select * from Customer where ROWID=1select * from Customer where ROWNUM=1;
  • 列运算
    select price * 2 as DOUBLE_PRICE;用于字段的别名
    select price *2 as “double_price”;可以别名不大写,需要双引号

  • 连接操作合(||)并输出结果

select first_name || ' ' || last_name (as) "CustomerName" from Customer;
输出Tom Green
  • 空值(NULL):列的值未知
    NVL(列名,列名值):如果列名为NULL,就将列名值给字段
    NVL也可以转换日期
  • 禁止显示重复行(distinct)
select distinct customer_id from purchases;
  • 比较运算:>、<、>=、<=
    <>等价与!=:不等于
    ANY等价于SOME:与一个列表中的任何值进行行比较,有个满足就返回true
    ALL:与一个列表中的所有值进行比较
where customer_id > ANY(2,3,4);//只要大于其中任何一个就为true
where customer_id > ALL(2,3,4);// 都大于才为true
  • 限制查询(likek,not like)
    _(下划线字符):匹配指定位置一个字符
    %:指定位置开始的任意字符
where name (not) like '_A%';//第二个字符为大写A的字符串
where name (not) like '%\%%' ESCAPE '\';
where name (not) like '%\_%' ESCAPE '\';\\使用ESCAPE '\'表示\后面是要进行查询的字符而不是通配符
  • IN操作符
where customer_id (not) in234);//字段值是否再该列表中
  • BETWEEN:用于检索指定区间内的行
    where customer_id (not) between 1 and 3;//1到3行

  • 逻辑操作符
    x and y:都为true,返回true
    x or y:一个为true,返回true
    not x:取反,x为false返回true;x为true,返回false
    优先级:比较大于and,and大于or

  • order by:子句对行进行排序,该子句必须位于from、where子句之后

 from customer order by first_name ASC,last_name DEST;//fist_name升序,last_name降序
 from order by 1;//对第一列进行排序,以此类推
  • 两表select查询
    select tb1.name,tb2.name from tb1,tb2 where tb1.id=tb2.id;
select p.name,p1.name from tb1 p, tb2 p1 where p.id=p1.id order by p.name;//使用表别名
  • 执行语句多与两个表的select查询,连接数=查询中使用表的总数-1
  • 连接条件:等连接,不等连接
  • 连接类型:内连接,外连接,自连接

  • USING关键字简化连接:使用条件必须满足两个条件:查询必须是等连接,等连接中的列必须相同
    -selectp.name, p1.name from tb1 p inner join tb2 p1 USING(id);//id必须是两表中字段名相同

select p.name, p1.name p1.id from tb1 p inner join tb2 p1 USING(id);
select p.name, p1.name from tb1 p inner join tb2 p1 USING(p1.id);
//上面两种都是错的,使用USING子句中引用列时不要使用表名或别名,否则会报错
from tb1 p inner join tb2 p1 USING(name, id);//执行多列内连接
  • 外链接
    `select p.name,p1.name from tb1 p , tb2 p1 where p.id=p1.id (+) order by p.name;
等价与=select p.name, p1.name from tb1 left (outer) join tb2 p1 USING(id) order by name;
select p.name,p1.name from tb1 p,tb2 p1 where p.id (+) = p1.id order by p.name;
//不适用USING
select p.name ,p1.name from tb1  p right (outer) join tb2 p1 on p.id=p1.id;
//等价于
select p.name ,p1.name from tb1 p right (outer) join tb2 p1 USING(id);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Oracle中的UPDATE SELECT语句是一种同时使用UPDATE和SELECT语句的组合语句,它可以根据SELECT语句的结果来更新表中的数据。具体语法如下: UPDATE table_name SET column_name = (SELECT column_name FROM another_table WHERE condition) WHERE condition; 其中,table_name是要更新的表名,column_name是要更新的列名,another_table是用于查询的另一个表名,condition是查询和更新的条件。 例如,我们可以使用以下语句将一个表中的某一列的值更新为另一个表中相应列的值: UPDATE table1 SET column1 = (SELECT column2 FROM table2 WHERE table1.id = table2.id) WHERE condition; 这样,table1中的column1列的值就会根据table2中的column2列的值进行更新。 ### 回答2: Oracle中的update select是一种常见的操作,可以将一个表中的数据根据某些条件进行更新。通过update select,可以同时使用select语句和update语句,可以一次性地对满足某些条件的数据进行更新。 在使用update select时,需要使用“where”子句来筛选出需要更新的数据。例如,下面的语句可以将表中所有age大于30的记录中的name字段全部更新为“张三”: UPDATE student SET name='张三' WHERE age>30; 这种方式比较简单、直接,但是更新的内容比较固定,如果需要对不同的记录进行不同的更新就不太方便。因此,Oracle还提供了一种更为灵活的update select语法,可以根据查询结果动态地进行更新。 在使用动态update select语法时,需要使用“from”子句和一个子查询来获取需要更新的数据。例如,下面的语句将会将student表中所有age大于30的记录中的name字段全部更新为“张三”: UPDATE student SET name=(SELECT '张三' from dual) WHERE age>30; 这里,我们使用了一个子查询来动态地获取需要更新的内容。由于该子查询只返回一个值,因此可以使用“from dual”语句来表示。在这种方式下,我们可以通过更改子查询的内容来动态地更新不同的记录。 需要注意的是,在使用update select语法时,需要注意避免歧义和错误,特别是在同时更新多个字段时,需要使用多个子查询或使用一些特殊的语法来保证正确性。另外,update select语法可能会导致表锁定,因此需要在更新大量数据时谨慎使用。 ### 回答3: Oracle是一种关系型数据库管理系统,以其高效、安全、可靠和灵活的表现而闻名。使用Oracle进行数据更新和选择操作是日常工作中的常见需求,而Oracle的Update Select语法提供了一种简便的方式来实现这些需求。 说明Update Select语法 Update SelectOracle中的一种语法,可以将一个SELECT语句的结果用于UPDATE操作。具体的语法如下: UPDATE table_name SET column_name = (SELECT statement) WHERE condition; 其中,table_name是你想要更新的表的名称,column_name是你想要更新的列的名称。在括号中,SELECT语句是你要执行的查询,用于确定将被更新的值。最后,WHERE条件用于指定要更新的哪些行。 例如,如果你想将部门名称从一个表传递到另一个表的相应列中,可以使用以下语法: UPDATE employees e SET e.department_name = (SELECT d.department_name FROM departments d WHERE d.department_id = e.department_id); 在这个例子中,查询SELECT)部门表(departments)以确定将被更新的值(department_name)。WHERE条件用于链接员工表(employees)和部门表(departments)中的数据,并指定要更新的记录。 Update Select的优点 使用Update Select语法,可以简化Oracle数据库的操作和管理。以下是一些令人信服的原因: - 增强数据一致性:将一个SELECT语句的结果用于UPDATE操作,可以确保更新的值与选择的记录匹配,从而增强数据一致性。 - 减少重复代码:使用Update Select语法,可以消除重复的SELECT语句或手动复制更新的值。此外,它还可以减少代码的长度,从而使代码更易于管理和维护。 - 简化查询:如果需要使用相同的查询来选择和更新记录,则使用Update Select语法可以保持查询语句的简洁性并避免在代码中重复定义查询。 总结: Oracle的Update Select语法提供了一种方便的方法,将SELECT语句的结果用于UPDATE操作。它可以增强数据一致性,减少冗余代码,并简化查询过程。通过掌握这种语法,您可以更有效地管理和操作Oracle数据库。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值