兩個多星期前,我的導師布置了一道作業,就是利用物件查詢語言(oql)對常規的sql需求進行求解。而對於我乙個在物件導向資料庫方面,經驗可謂無足輕重的新手來說,確實難以下手。不用說,我肯定在拿到題目的瞬間,就想到網上檢視有沒有類似的答案,可是也基本是瞬間讓我倒吸了口冷水:目前有的大部分都是sql語言的,而就連oql方面的內容卻也是零星散亂的,更加不要說是答案了。不過幸好,在經過兩三天都苦熬到凌晨
一、兩點鐘的情況下,自己對oql有了基本的見解。在作業完成之後,也得到了導師的認可,所以我覺得有必要分享一下個人的解題思路和見解。
這裡明明不是說該怎麼解題嗎,為什麼提起物件導向資料庫設計過程了呢?由於導師僅給了題目,而沒有對物件資料庫的結構和聯絡進行描述,也就是說解題的範圍很廣。所以,只有明確了物件查詢語言(oql)的應用,是在整個物件導向資料庫設計過程的那一階段,才能幫助我們更好地「憑空」造出乙個物件資料庫,進而更好地理解題目。
首先,物件資料庫的設計過程分為五步走: 需求分析 -> 畫物件聯絡圖,即or圖 -> 建立模型 -> adt建庫 -> oql資料操作 。整體來看,oql資料操作的確與物件資料庫的設計過程關係不大,但我此處申明的是:要先有庫,才能查詢。
1.檢索"英語"專業學生所學課程的資訊,包括學號、姓名、課程名和分數。
select s.student_number,s.student_name,s.c.course_name,s.c.grade from student s where s.m.major_name="英語";
2檢索」資料庫原理」課程成績高於90分的所有學生的學號、姓名、專業和分數。select s.student_number,s.student_name,s.m.major_name,s.c.grade from student s where s.c.course_name="資料庫原理" and s.c.grade>90;
3檢索不學課程號為「c123」課程的學生資訊,包括學號,姓名和專業。
select s.student_number,s.student_name,s.m.major_name from student s where s.student_number not in ( select s.student_number from s.course c where c.course_number="c123");
4檢索沒有任何一門課程成績不及格的所有學生的資訊,包括學號、姓名和專業。
select s.student_number,s.student_name,s.m.major_name from student s where s.student_number not in ( select s.student_number from s.course c where c.grade < 60);
5檢索至少選修了李強同學所選修的全部課程的學生姓名。
select distinct s.student_number from student s where s.c.course_number in ( select s.c.course_number from student s where s.student_name="李強");
使用OQL「語言」構造ORM實體類的複雜查詢條件
oql 語言 是pdf.net資料開發框架的實體物件查詢語言,一直以來,orm的複雜查詢條件都是困擾orm的問題,所以很多時候不得不捨棄orm,直接手工拼接sql。我們來看看oql是怎麼解決這些問題的,現在舉乙個今天同事遇到的問題 有這樣乙個實體類 myentity,實體類的具體定義在此忽略,有興趣...
C語言查詢的應用
14 思考題 程式設計在乙個已知的字串中找最長單詞,假定字串中只含字母和空格,空格用來分隔不同單詞。比如 ni hao world 最長單詞是world。char str i am a girl beautiful int maxlength 0 最長長度 int currentlength 0 當...
MySQL通過例項化物件引數查詢例項講解
public static string querybyentity t t where t new type.name,string where string.empty foreach propertyinfo property in properties property.name,value...