sql语句平常写的少,这次公司需要大量的用到,经常遇到些不会的语句,现记录下自己不熟悉的语句,都是很基础的,只是自己不太熟悉,方便自己查阅:
(1):查两个表的结果之和
select sum(a) from
(
select count(*) as a from table1
union all
select count(*) as a from table2
) as a
在sybase上如果不加as a是不行的,但是在oracle上是不能加as a的,其他的没有测试, union all把兩個表的結果都显示出來
假如语句
select count(*) as a from table1
union all
select count(*) as a from table2
得到的结果如下:
10 |
15 |
则上面最后的结果就是25
(2):int类型不能like匹配
select * from student where sno like 2002%
其中sno是int,這樣是不能用like匹配的
(3):应用场景:假如table1的列a是整数,a可以取值1和2,1代表数学,2代表语文,要求显示a属性,但是a要用‘数学’和‘语文’代表1和2.
select *,(case when a=1 then '数学' when a=2 then ‘语文’ else '...' end) as a from table1
(4):sybase和oracle的时间格式的区别
oracle的写法:
select × from table1 where time >to_date('2012-06-06 09:42:13','yyyy-mm-dd hh24:mi:ss')
sybase的写法:
select × from table1 where time >'2012-06-06 09:42:13'
(5): group by
假如有表 table1如下:
course | name | score |
数学 | 陈 | 90 |
语文 | 陈 | 80 |
数学 | 李 | 91 |
语文 | 李 | 82 |
select avg(course) from table1 where name='陈'
要求查询各科目的平均成绩,sql语句如下:
select avg(course) from table1 group by course
(6):改变表结构,还是上面那个表
alter table table1 add age int;
这样上面的表就加上了age这个列名。
(7)今天在oracle数据库客户端上用insert插入了几条语句,select可以看得到,但是在我本地的应用上面一直看不到。select语句是一样的,后来查找原因,是我在insert的时候没有执行commit,所以在远处服务器没有我刚才insert的数据,insert的数据只存在我自己的客户端上,我在oracle客户端select的是本地的数据,但是应用查找的是远程服务器的oracle,所以应用的数据显示不出来。