1:oracle中不再使用像sqlserver和mysql中的int 而是用number表示数值类型
例:number(10)长度为10为的整型数字 number(8,2)8位整数2位小数的浮点数
2:如何将表中的整型字段的值转换成相应的文本字段(例如 0表示'出勤' 1表示'旷课' 2表示 '病假' 3表示'事假' ) 以下语句是将查询出来的整型值转换成相应的意义文本
select (case when a.studywork=1 then '旷课' when a.studywork=0 then '出勤' when a.studywork=2 then '病假' else '事假' end) from attendance a
注意:只有一个else,并不是if‘’‘’‘’‘else’‘’‘if’‘’‘’‘’‘else的格式
3:日期格式的插入
insert into attendance values(5,200651289,2,3,5,0,'a', to_date('2009-05-10 04:12:12', 'yyyy-mm-dd hh24:mi:ss '));
在 mysql和sql server中不用to_date()就可以了。
to_date(a,b)是将字符串a转换成b的格式
4: 不同数据库选择前N条记录的方法各不相同,以下是6种:(摘自http://www.itpub.net/thread-127394-1-1.html)
1. ORACLE
SELECT * FROM TABLE1 WHERE ROWNUM<=N
2. INFORMIX
SELECT FIRST N * FROM TABLE1
3. DB2
SELECT * ROW_NUMBER() OVER(ORDER BY COL1 DESC) AS ROWNUM WHERE ROWNUM<=N
DB2
SELECT COLUMN FROM TABLE FETCH FIRST N ROWS ONLY
4. SQL SERVER
SELECT TOP N * FROM TABLE1
5. SYBASE
SELECT TOP N * FROM TABLE1
6. mysql:
select * from table_name limit N
5:部分试验语句
一:
select studentname as 姓名,(case when studywork=1 then '旷课' when studywork=0 then '出勤' when studywork=2 then '病假' else '事假' end) as 出勤情况from attendance,student where attendance.studentid = student. Studentid
二:
select studentname as 姓名,teachername as 教师名,lessonname as 课程名,(case when studywork=1 then '旷课' when studywork=0 then '出勤' when studywork=2 then '病假' else '事假' end) as 出勤情况,attdatetime as 出勤日期
from attendance a,student b,teacherlesson c,teacher d,lesson e
where e.lessonid=c.lessonid and a.studentid=b.studentid and a.teacherid=c.teacherid and c.teacherid=d.teacherid
group by a.attdatetime,b.studentname,d.teachername,e.lessonname,a.studywork,a.attid (where 中的必须全部包含在里面)
order by attid desc (此字段也必须在group by 中)
6: 最后一定不要忘了commit(提交),在oracle中只有提交了数据才真正的被写入数据库,即使你用select能够查到你所更新的数据,但是当你再次登录的时候就会大失所望:啊,我的更新呢,我的插入呢,我白费了那么多时间了,恩。
未完待续