Oracle常用语句
首先说到数据库,最常用的也就离不开增删改查操作了,大部分数据库的这些操作也都大同小异。
查询:
select {列名} from {表名}where {条件}
解释:根据{条件}选择{表名}中的{列}。
插入:
insert into {表名}({列名}) values{列的值}
解释:在{表名}中插入一条数据,值为{列的值},顺序与{列名}对应。
更新: update {表名} set {列名1}={列的值1},{列名2}={列的值2}... ,{列名n}={列的值n}where{条件}
解释:将{表名}中,所有满足条件的{列名},设置为{列的值}
删除: delete from {表名} where {条件}
解释:删除{表名}中所有满足{条件}的行
左连接: select {列名} from ({表名A}) A left join ({表名B}) B on {条件1} where {条件2}
解释:首先选择{表名A}中的所有数据;然后将{表名B}中满足{条件1}的数据加入到{表名A}中的数据中;然后根据{条件2}对这些数据进行筛选;最后从这些数据中选取需要的{列名}
注意:2个或者多个表连接时,如果2个表有相同的列时;例如{表名A}有ID列,{表名B}也有ID列时,在{列名}中需要明确指定该列属于那个表,A.ID表示{表名A}的ID,B.ID表示{表名B}的ID。
右连接:select {列名} from ({表名A}) A right join ({表名B}) B on {条件1} where {条件2}
解释:首先选择{表名B}中的所有数据;然后将{表名A }中满足{条件1}的数据加入到{表名B}中的数据中;然后根据{条件2}对这些数据进行筛选;最后从这些数据中选取需要的{列名}
注意:左连接是以左边的表为主表,将右边满足条件的数据加入进来;右连接是以右边的表为主表,将左边的表加入进来。
全连接:select {列名} from ({表名A}) A inner join ({表名B}) B on {条件1} where {条件2}
解释:选择{表名A}和{表名B}中同时满足{条件1}的数据,然后根据{条件2}筛选,最后从这些数据中选取需要的{列名}
注意:还有一个连接是“full join”,这个连接是选择2个表中的所有的行,如果这行的数据在2个表中有联系,就将2行连接起来,否则就用null代替。(不知道解释的对不对,只是大致明白那个意思,full join叫并集,inner join叫交集,left join是获取左边表的所有数据,然后加上与它有联系的右边表的数据,right join相反吧)
条件判断:decode({条件},{结果1},{值1},{结果2},{值2}...{结果n},{值n},{缺省值})
解释:运行{条件},如果结果为{结果1},则返回{值1},如果为{结果2},则返回{值2},...,如果为{结果n},则返回{结果n},如果结果不在这些结果中,则返回{缺省值};该函数可以用于字段大小比较、字段值替换等操作。类似于switch语句。
switch({条件})
case:{结果1}
{值1};
break;
case:{结果2}
{值2};
break;
...
case:{结果n}
{值n};
break;
default:
{缺省值};
break;
分组后列的操作: select min({列名1}),max({列名2}),wm_concat({列名3}) from {表名} where {条件} group by {列名}
解释:首先将{表名}根据{条件}筛选,然后根据{列名}分组,获取每组中最小的{列名1}、最大的{列名2}、将所有的{列名3}通过“,”连接起来。
注意:经过分组后的表,从中获取数据需要通过合计函数,例如:min(),max(),avg(),...之类的函数,否则将会报错,“不是group by表达式”。另外,wm_concat还支持wm_concat(distinct {列名}),能够在连接字符串的时候将重复的去掉。
树形连接:select connect_by_root({列名1}) as {列名} from {表名} start with {条件} connect by {(prior)树连接条件}
解释:将{表名}中符合{条件}的数据根据{树连接条件}连接起来,将父级的{列名1}当作新的{列名}返回。
注意:在{树连接条件}中,父级的列名必须要用prior修饰。
其他:
这张表出自《SQL从入门到精通》,使用较多的还是数据查询DQ(data qurey)、数据更新DM(data manipulation);数据定义DD(data define)和数据控制(data Control)使用的比较少,一般应该是通过数据库管理软件实现,例如PL/SQL、workbench等软件实现吧(具体我也只用过数据定义DD,至于数据控制DC没怎么用过,好像是数据访问权限管理的,没怎么实际操作过0.0)
现在项目中用到的大致就这些数据库语句了,其他暂时没怎么用到,下次用到再添加了...
解释:运行{条件},如果结果为{结果1},则返回{值1},如果为{结果2},则返回{值2},...,如果为{结果n},则返回{结果n},如果结果不在这些结果中,则返回{缺省值};该函数可以用于字段大小比较、字段值替换等操作。类似于switch语句。
switch({条件})
case:{结果1}
{值1};
break;
case:{结果2}
{值2};
break;
...
case:{结果n}
{值n};
break;
default:
{缺省值};
break;
分组后列的操作: select min({列名1}),max({列名2}),wm_concat({列名3}) from {表名} where {条件} group by {列名}
解释:首先将{表名}根据{条件}筛选,然后根据{列名}分组,获取每组中最小的{列名1}、最大的{列名2}、将所有的{列名3}通过“,”连接起来。
注意:经过分组后的表,从中获取数据需要通过合计函数,例如:min(),max(),avg(),...之类的函数,否则将会报错,“不是group by表达式”。另外,wm_concat还支持wm_concat(distinct {列名}),能够在连接字符串的时候将重复的去掉。
树形连接:select connect_by_root({列名1}) as {列名} from {表名} start with {条件} connect by {(prior)树连接条件}
解释:将{表名}中符合{条件}的数据根据{树连接条件}连接起来,将父级的{列名1}当作新的{列名}返回。
注意:在{树连接条件}中,父级的列名必须要用prior修饰。
其他:
SQL功能 | 动词 |
数据定义DD | Create、Drop、Alter |
数据查询DQ | Select |
数据更新DM | Insert、Update、Delete |
数据控制DC | Grant、Revoke |
现在项目中用到的大致就这些数据库语句了,其他暂时没怎么用到,下次用到再添加了...