c oracle查询语句,Oracle的一些SQL语句

一: SQL简介SQL是Structured Query Language(结构化查询语言)。SQL是由IBM在二十世纪七十年代初开发的。 SQL是数据库语言,Oracle使用该语言存储和检索消息。

通过SQL可以与Oracle服务器实现通信: 输入SQL命令–> 将SQL命令发送到Oracle服务器–>Oracle服务器执行该命令–>将查询结果发送给用户

SQL是所有关系型数据库通用语言,因此他是可以移植的,可以用来操作其他数据库。

二: SQL命令

SQL 支持4大类型命令:

数据定义语言(DDL): Create(创建), Alter(更改), Drop(删除).

数据操纵语言(DML): Select(选择), Insert(插入), Update(更新), Delete(删除).

事务控制语言(TCL) : Commit(提交), Rollback(回滚), Savepint(保存点).

数据控制语言(DCL) : Grant(授予), Revoke(回收).

A: 数据定义语言: 用于改变数据库结构,包括创建,修改,删除数据库对象

创建表:

Create Table 表名 ( 列名 列类型, 列名 列类型, …… )

例: Create Table vendor_master( vencode Varchar2(5), venname Varchar2(20) )

修改表:

Alter Table 表名 Modify | Add ( 列名 列定义 )

Modify:修改列。    Add:增加列。

例: Alter Table vendor_master Modify ( vencode Varchar2( 10 ) )

Alter Table vendor_master Add ( venAdd Varchar2(20) )

Alter Table 表名 Drop Column 列名

Drop 删除列。

例: Alter Table vendor_master Drop Column venAdd

删除表:

Drop Table 表名

例: Drop Table vendor_master

B:数据操纵语言: 用于检索,插入和修改数据库信息。

Select 选择查询:

查询符合条件的所有表字段:

Select * From 表名 Where 列名 = 条件

例:Select * From vendor_master Where vencode = ‘V004’

查询符合条件的表的可选择字段:

Select 列名,列名,…… From 表名 Where 列名 = 条件

例:Select venname, venadd Where vencode = ‘V004’

查询无重复的行:

在Select 后加Distinct就可以了

列:Select Distinct * From vendor_mastor

查询并排序显示查询结果:

Select * From 表名 Order By 排序列名,排序列名,……

例:Select * From vendor_master Order By vencode    — 按一列来排序

Select * From vendor_master Order By vencode, venadd   — 按多列来排序

Select 语句的总语法:

Select * | {[Distinct] 列名,列名,…… } From Table

[Where 条件]

[Order By 列名,列名,……]

其中用[ ]这个符号括起来的表示是可以选择写不写的。

Insert 插入:

插入一个表的所有列:

Insert Into 表名 Values ( 列值,列值,…… )

例:Insert Into vendor_master Values ( ‘V001’, ‘Pro’, ‘长沙’ )

选择性插入表中的列:

Insert Into 表名 ( 列名,列名,…… ) Values( 列值,列值,…… )

例:Insert Into vendor_master ( vencode, venname ) Values( ‘V002’, ‘Wind’ )

注:未选择插入值的列将以NULL空值插入。

跳过列插值:

跳过一个或多个列的方式是为该列输入NULL空值

Select * From vendor_master Values( ‘V003’, NULL, ‘长沙’ )

插入来自其他表的所有记录:

Insert Into 表名 Select * From 表名

例:Insert Into order_master Select * From vendor_master

选择列插入来自其他表的记录:

Insert Into 表名 Select| 列名,列名,…… From 表名

例:Insert Into order_master Select vencode, venname From vendor_master

按条件插入来自其他表的所有记录:

Insert Into 表名 Select * From 表名 Where 表名.列名

例:Insert Into order_master Select * From vendor_master Where   vendor_master.vencode = ‘V002’

Update 更新:

按条件更新一列或多列:

Update 表名 Set 列名 = 更新值,列名 = 更新值,……

Where 列名 = 条件

Update vendor_master Set venname = ‘kof’ Where vencode = ‘V001’

更新所有行:

Update 表名 Set 列名 = 更新值,列名 = 更新值,……

Update vendor_master Set venname = ‘kof’

Delete 删除:

Delete From 表名 Where 列名=条件

例:Delete From vendor_master    — 删除表所有记录

例:Delete From vendor_master Where vencode = ‘V001’ — 选择删除

C:事务控制语言:

当用户执行创建,删除,修改数据库对象或插入,删除,修改数据库表时,    用户所做的数据修改会被保存在数据缓冲区中,此时用户所做的数据库修改并没有真正的修改了数据库,只有在用执行Commit(提交)命令后才真正的修改了数据库,如果想不修改数据库,则可以执行Rollback(回滚)命令则刚刚执行的修改不会修改数据库。

如:当你用Insert 命令插入一条记录时,此时这条记录是保存在数据缓冲区中的,并没有真正保存到数据库中,数据库中不会有这条记录(不信你可以以另一个用户登陆然后查询插入的表,会发现无次记录),如果你执行了Commit(提交)命令后, 才会将缓冲区的数据保存到数据库里,既真正的修改了数据库(以另一个用户登陆可以查询到插入的记录),如果执行Rollback(回滚)命令则会把存在缓冲区中的数据给删除掉,既用户的修改作废(如果执行Commit命令则不能回滚了)。可以利用Savepoint(保存点)进行选择性的回滚。

例: Insert Into vendor_master Values( ‘V007’, ‘Kof’, ‘长沙’ )

Savepoint insert_mark     — 保存点

Update vendor_master Set venname = ‘aaa’ Where vencode = ‘V007’

Savepoint update_mark     — 保存点

Delete From vendor_master Where vencode = ‘V007’

执行以上代码,以上所修改的数据会先保存在数据缓冲区中,当执行Commit则将所做的数据修改保存到数据库中。当执行Rollback时则删除保存在数据缓冲区中的记录(既插入,更新,删除操作作废)。 如果只想删除作废,则可执行:Rollback To Savepoint update_mark           如果想删除,更新作废,则可执行:Rollback To Savepoint insert_mark       如果想插入,更新,删除作废,则可:Rollback

注: 此事务处理机制只有在Oracle中才必须需要用户手动控制,在SQL2000中默认情况它会隐性控制(既用户不需要自己执行Commit命令来提交,他自动执行),当然在SQL2000中也支持自己控制。

D:数据控制语言:用于为用户提供权限控制。

在前面将过,所以不重复了。

三:SQL函数(常用函数)

Oracle 将函数分为2大类:单行函数和分组函数

单行函数又分为5大类

A:日期函数        B:字符函数        C:数字函数

D:转换函数        E:其他函数

A:日期函数

Round函数:返回日期,此日期四舍五入为格式模型指定的单位。

格式为: Round( 日期, [格式模型] )

格式为“Year”,如果日期大于7月1日将入为下一个年份。反之则舍为1月1日

例: Select Round( DATE’2005-05-10′, ‘Year’ ), Round( DATE’2005-07-10′, ‘Year’ ) From dual

结果为: 2005-01-01   和 2006-01-01.

格式为“Month”,如果日期大于15则入为下一月份,反之则舍为此月1日

例: Select Round( DATE’2005-05-10′, Month), Round( DATE’2005-05-20′, Month) From dual

结果为: 2005-05-01 和 2005-06-01

B:字符函数

Instr 函数: 查找某字符位置

InStr( 字符串, 字符 )

例: Select InStr( ‘worldwide’, ‘d’ ) From dual

结果: 5

SubStr函数: 按位置去多个字符

SubStr( 字符串, 起始位置, 取几个 )

例: Select SubStr( ‘abcdefg’, 3, 2 )

结果: cd

Trim 函数:从字符串开头或结尾(或开头和结尾)剪裁特定的字符,默认裁减空格

裁减左边开头字符:

Trim ( Leading 裁减的字符 From 字符串 )

例:Select Trim( Leading 9 From 9999876549999 ) From dual

结果: 876549999

裁减右边开头字符:

Trim ( Trailing 裁减的字符 From 字符串 )

例:Select Trim( Trailing 9 From 9999876549999 ) From dual

结果: 999987654

裁减左边和右边字符:

Trim ( 裁减的字符 From 字符串 )

例:Select Trim( 9 From 9999876549999 ) From dual

结果: 87654

Decode 函数:将值进行替换

Select Decode ( 比较列名, 比较值, 替换值, 比较值2, 替换值2,…… ) From 表名

例:Select venname, Decode( vencode, ‘001’, ‘aaa’, ‘002’, ‘bbb’, ‘003’, ‘ccc’ ) From vendor_master

结果:Pro      aaa

Wind    bbb

Kof      ccc

Fly       004

注: 001, 002, 003被aaa,bbb,ccc替换

C:数字函数:

ABS 函数: 去绝对值

ABS( n )

例: Select ABS( -15 ) From dual

结果: 15

FLOOR 函数: 向下取整

FLOOR( n )

例: Select FLOOR( 100.2 ) From dual

结果:100

Power 函数: m的n次幂

Power( m, n )

例: Select Power( 4,2 ) From dual

结果: 16

Mod 函数: 取m 除 n 的余数

Mod( m, n )

例: Select Mod( 10, 3 ) From dual

结果: 1

Round 函数: 四舍五入

Round( m, n )

例: Select Round( 100.256 , 2 ) From dual

结果: 100.26

Trunc 函数: 截断

Trunc( m, n )

例: Select Trunc( 100.256, 2 ) From dual

结果: 100.25

Sqrt 函数: 平方根

Sqrt( n )

例: Select Sqrt( 4 ) From dual

结果: 2

D:转换函数

To_Char 函数: 将数字或日期转换为字符串.

To_Char( 数字或日期,转换格式 )

例:Select To_Char ( sysdate, ‘ YYYY "年" fmMM "月" fmDD "日" HH24:MI:SS’ ) From dual

结果: 2005年8月25日 16:02:10

例:Select To_Char( ‘150’, ‘C999’ ) From dual    — 按货币格式转换

结果: CHY150

To_Date 函数: 将字符或字符串转换为日期

例:Select To_Date ( ‘2005-01-03’, ‘YYYY-MM-DD’ ) From dual

结果:2005-01-03 (日期类型)

To_Number 函数: 将包含数字的字符串转换为Numer数字类型

例:Select Sqrt( To_Number( ‘100’ ) ) From dual

结果:10

E:其他函数

注:NULL和0不同,NULL表示为空(未知),0表示为0(以知)

NVL 函数: 将空值替换为指定的值.

NVL ( exp1, exp2 )

如果exp1为空,则返回exp2, 反之返回exp1.

例:Select NVL( NULL, 0 ), NVL( ‘aa’, 1 ) From dula

结果: 0 和 aa

NVL2 函数: 将空值替换为指定的值.

NVL 2( exp1, exp2, exp3 )

如果exp1为空,则返回exp2, 反之返回exp3.

例:Select NVL( NULL, 0, 1 ), NVL( ‘aa’, 0, 1 ) From dula

结果: 0 和   1

分组函数(又叫聚合函数):

Avg 函数:返回指定列的平均值

例:Select Avg( price ) From itemfile

结果:返回所有行price值的和的平均值.

Min 函数:返回指定列的最小值

例:Select Min( price ) From itemfile

Max 函数:返回指定列的最大值

例:Select Max( price ) From itemfile

Sum 函数:返回指定列的值的总和

例:Select Sum( price ) From itemfile

Count 函数:返回指定列的行树,可加条件

例:Select Count( price ) From itemfile

Group By 字句:将信息分组,按组进行聚合运算.

例:Select p_category, Max( itemrate ) From itemfile Group By p_category

结果:按p_category分组,并显示出每组的最大的itemrate.

Having 字句:用来指定Group By 字句的检索条件,位于Group By 后面

例:Select p_category, Max( itemrate ) From itemfile Group By p_category Having p_category Not In ( ‘accessories’ );

结果:按p_category分组,且p_category不等于accessories,然后显示出每组的最大的itemrate.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值