網頁

2010年11月26日 星期五

新增SQL語法 (2010/11/26)

SELECT A.CLASS_ID,CLASS_NAME,CLASS_TEACHER,DAY,ROOM FROM courses_new JOIN
(SELECT CLASS_ID FROM schedule WHERE S_ID = '496511126') A
WHERE A.CLASS_ID = courses_new.CLASS_ID;

==>使用"學號" 查詢該學生的課表(選修的課) 可在SELECT調整需要的欄位
    


SELECT CLASS_NAME FROM (SELECT A.CLASS_ID,CLASS_NAME,CLASS_TEACHER,DAY,ROOM,START_TIME,END_TIME FROM courses_new JOIN
(SELECT CLASS_ID FROM schedule WHERE S_ID = '496511126') A
WHERE A.CLASS_ID = courses_new.CLASS_ID ) B
WHERE DAY = DATE_FORMAT( NOW(), '%a' )) AND ( CURTIME() BETWEEN START_TIME AND END_TIME);

==>使用"現在時間(格式:xx:yy:zz)" 來查詢 此時此課該學生要上的課







SELECT CLASS_NAME FROM courses_new JOIN (SELECT CLASS_ID FROM open WHERE T_ID = 1) A
WHERE A.CLASS_ID = courses_new.CLASS_ID;

==>使用 老師的T_ID 來查詢 老師所有開的課程名單





SELECT A.S_ID, DEPARTMENT, STUDENT_NAME FROM student JOIN (SELECT * FROM schedule s WHERE CLASS_ID = 2) A
WHERE A.S_ID = student.S_ID;

==>使用 CLASS_ID 來查詢 修課同學名單



SELECT * FROM sign_new s WHERE S_ID = 496511126 AND ROOM = 'SF648' AND DATE_FORMAT(ENTER_TIME,'%Y-%m-%d-') = DATE_FORMAT(NOW(),'%Y-%m-%d-') AND CLASS_ID = 27;


==>判斷此學生 在今天(日期)與CLASS_ID與學號 去判斷是否已簽到過??




SELECT ENTER_TIME FROM sign_new s WHERE DATE_FORMAT(ENTER_TIME,'%Y-%m-%d') = CURDATE() AND CLASS_ID = 27;

==>

SELECT DISTINCT DATE_FORMAT(ENTER_TIME,'%Y-%m-%d') FROM sign_new WHERE CLASS_ID = 27 ORDER BY ENTER_TIME

==>回傳該堂課的(今天以前的)上課日期

SELECT DEPARTMENT, S_ID, STUDENT_NAME, DATE_FORMAT(ENTER_TIME,'%T'),IS_SIGN FROM sign_new WHERE CLASS_ID = 27 AND DATE_FORMAT(ENTER_TIME,'%Y-%m-%d') = '2010-11-27' AND IS_SIGN = '已簽到' ORDER BY ENTER_TIME

==>回傳 該堂課該日期 的所有已簽到學生



SELECT * FROM (SELECT A.S_ID, DEPARTMENT, STUDENT_NAME FROM student JOIN (SELECT * FROM schedule s WHERE CLASS_ID = 2) A
WHERE A.S_ID = student.S_ID) B
WHERE B.STUDENT_NAME
NOT IN
(SELECT STUDENT_NAME FROM sign_new WHERE CLASS_ID = 2 AND DATE_FORMAT(ENTER_TIME,'%Y-%m-%d') = '2010-11-27' AND IS_SIGN = '已簽到' ORDER BY ENTER_TIME);

==>該堂課該日期 未到名單    修課名單-已到名單



UPDATE sign_new SET IS_SIGN = '未到' WHERE CLASS_ID = 27 AND S_ID = 496511126 AND DATE_FORMAT(ENTER_TIME,'%Y-%m-%d') = '2010-11-27'

取得 此時此刻的時間 & 星期幾,此時

SELECT DATE_FORMAT( NOW(), '%a' ) , DATE_FORMAT( NOW(), '%H' ) ;

回傳:  星期幾&此時

SELECT NOW();
SELECT CURRENT_TIMESTAMP;

回傳:  ex. 2010-11-26 16:44:21

2010年11月19日 星期五

MySQL DATETIME 時間

MySQL Date 函數

下面的表格列出了MySQL 中最重要的內建日期函數:


SQL Date 數據類型

MySQL 使用下列數據類型在數據庫中存儲日期或日期/時間值:
  • DATE - 格式YYYY-MM-DD
  • DATETIME - 格式: YYYY-MM-DD HH:MM:SS
  • TIMESTAMP - 格式: YYYY-MM-DD HH:MM:SS
  • YEAR - 格式YYYY 或YY
SQL Server 使用下列數據類型在數據庫中存儲日期或日期/時間值:
  • DATE - 格式YYYY-MM-DD
  • DATETIME - 格式: YYYY-MM-DD HH:MM:SS
  • SMALLDATETIME - 格式: YYYY-MM-DD HH:MM:SS
  • TIMESTAMP - 格式: 唯一的數字


例子 1

下面是SELECT 語句:

SELECT NOW(),CURDATE(),CURTIME()

結果類似:

NOW()                                      CURDATE()                      CURTIME()
2008-12-29 16:25:46            2008-12-29                     16:25:46


如果需要INSERT時,系統自動加入時間,要將DATETIME欄位的default value設為NOW();

但是如果這樣執行時會跳出錯誤訊息,因為MySQL的文件上面有說,default value只能設為常數不能設為function。


"The DEFAULT value  clause in a data type specification indicates a default value for a
column. With one exception, the default value must be a constant; it cannot be a function
or an expression. This means, for example, that you cannot set the default for a date
column to be the value of a function such as NOW()  or CURRENT_DATE."
後來爬了爬文,有網友提供另一種和DATETIME幾乎類似的方法
->使用TIMESTAMP型態的column,將其default value設定CURRENT_TIMESTAMP。
每次在TABLE裡面新增一筆資料時,系統會自動在該欄位加入目前時間。
這樣在MySQL環境下是可以成功執行的。


參考資料:

2010年7月26日 星期一

類比

類比的精神就是先分類,在比較

閱讀測驗

閱讀分為能力分析

能力就是一行一行翻譯。
分析就是

  1. 跳讀。
  2. 知道他要做什麼。
  3. 關鍵字 But Yet However。
  4. But Yet However前面是常識,後面則是作者要表達的和考的。
一個好的GRE考生最好具備能力分析兩項技巧,但是重點應該放在分析上。

測驗的目的就是考驗你有無抓到文章重點

2010年6月2日 星期三

點名資料庫SQL

SELECT * FROM courses JOIN
(SELECT CLASS_ID FROM schedule WHERE S_ID = (SELECT S_ID FROM student_hold WHERE TAG_ID='99999')) A
WHERE A.CLASS_ID = courses.CLASS_ID;

由TAG_ID(逼逼卡)-->用"身分"查出此人修的課堂有哪些(此人的課表) 且列出詳細課程資訊等 上課時間 結束時間


SELECT B.CLASS_ID,B.CLASS_NAME FROM
(SELECT courses.* FROM courses JOIN
(SELECT CLASS_ID FROM schedule WHERE S_ID = (SELECT S_ID FROM student_hold WHERE TAG_ID='99999')) A
WHERE A.CLASS_ID = courses.CLASS_ID) B
WHERE B.START_TIME = '0910';

TAG_ID(RFID學生證)BB-->電腦比對"時間"與"身分"取得此人現在要上什麼課 列出 課程代碼&課程名稱


SELECT DEPARTMENT,S_ID,STUDENT_NAME,IS_SIGN,ENTER_TIME FROM sign JOIN
(SELECT CLASS_NAME FROM courses JOIN (SELECT CLASS_ID FROM open WHERE T_ID =
(SELECT T_ID FROM teacher_hold t WHERE TAG_ID = '88888')) A
WHERE courses.CLASS_ID = A.CLASS_ID AND courses.START_TIME = '0910') B
WHERE sign.CLASS_NAME = B.CLASS_NAME;

老師BB卡,得到現在時間(他開的課),並且得到現在修他課的已經到的學生

SELECT * FROM
(SELECT DEPARTMENT,STUDENT_NAME,s.S_ID FROM student JOIN
(SELECT S_ID FROM schedule JOIN
(SELECT courses.CLASS_ID FROM courses JOIN (SELECT CLASS_ID FROM open WHERE T_ID =
(SELECT T_ID FROM teacher_hold t WHERE TAG_ID = '88888')) A
WHERE courses.CLASS_ID = A.CLASS_ID AND courses.START_TIME = '0910') B
WHERE B.CLASS_ID = schedule.CLASS_ID) s
WHERE student.S_ID = s.S_ID) q
WHERE S_ID NOT IN
(SELECT S_ID FROM sign JOIN
(SELECT CLASS_NAME FROM courses JOIN (SELECT CLASS_ID FROM open WHERE T_ID =
(SELECT T_ID FROM teacher_hold t WHERE TAG_ID = '88888')) A
WHERE courses.CLASS_ID = A.CLASS_ID AND courses.START_TIME = '0910') B
WHERE sign.CLASS_NAME = B.CLASS_NAME);

未到名單

SELECT s.S_ID,STUDENT_NAME FROM student JOIN
(SELECT S_ID FROM schedule JOIN
(SELECT courses.CLASS_ID FROM courses JOIN (SELECT CLASS_ID FROM open WHERE T_ID =
(SELECT T_ID FROM teacher_hold t WHERE TAG_ID = '88888')) A
WHERE courses.CLASS_ID = A.CLASS_ID AND courses.START_TIME = '0910') B
WHERE B.CLASS_ID = schedule.CLASS_ID) s
WHERE student.S_ID = s.S_ID;

修課名單

2010年5月31日 星期一

Java Core API

Java VM 本身內建的類別 被放在java的package之下。

目前在java的package下定義有12個package,如下
    Package 說明
    java.applet 有關Applet相關的類別。
    java.awt 圖形使用介面與繪圖相關的類別。
    java.beans 使用java beans相關的類別。
    java.io 輸出與輸入資料流相關的類別。
    java.lang Java語言基礎相關的類別。
    java.math 數學運算相關的類別。
    java.net 網路相關的類別。
    java.rmi 遠端呼叫相關的類別。
    java.security 與安全性相關的類別。
    java.sql 與資料庫溝通相關的類別。
    java.text 文字國際化處理相關的類別。
    java.util 特殊資料結構相關的類別。

    使用這些套件時,我們並不需要設定classpath。
    但是在程式中卻需要import這些類別才能使用。

    2010年5月30日 星期日

    資料庫廠商給的Driver(驅動程式)裡面.jar要放哪裡

    例如 Mysql廠商提供的driver裡面
    有個 mysql-connector-java-5.0.8-bin.jar 檔案


    把此檔案"複製"到路徑:
    Java\jdk1.5.0_09\jre\lib\ext資料夾下


    完成