next up previous contents
Next: ALTER 語法 Up: Clause 紀錄詢問條件 Previous: REGEXP 正規表示   Contents   DYWANG_HOME

實機操作練習題

  1. 登入
    1. 遠端登入 kvm8 虛擬機。
    2. 以 root 身份登入 mariadb。
  2. 新增資料庫及資料表
    1. 新增資料庫 dbc
    2. 在資料庫 dbc 中建立資料表 tblcx,包含下列欄位:
      1. id int not null auto_increment,
      2. title varchar(30),
      3. author varchar(40) not null,
      4. primary key (id)
    3. 在資料表 tblcx 中加入五筆資料。
      1. author abc123
      2. author xyz222
      3. title ruby, author abc321
      4. title perl, author xyz123
      5. title php, author xyz456
    4. 在資料庫 dbc 中建立資料表 tblcy,包含下列欄位:
      1. author varchar(40) not null,
      2. count int
    5. 在資料表 tblcy 中加入六筆資料。
      1. author abc777, count 23
      2. author xyz777, count 12
      3. author abc321, count 43
      4. author xyz123, count 83
      5. author xyz456, count 92
      6. author abcxyz, count 69
  3. 不要自行新增或改變資料庫及資料表內容
  4. 使用以下 php 範例程式,其中 ........ 依要求填入 mysql 語法,其中資料庫名稱依題目要求修改。
    <?php
    $dbhost = 'localhost:3306';
    $dbuser = 'root';
    $dbpass = '123qwe';
    $str = $_GET['str'];
    $conn = mysqli_connect($dbhost, $dbuser, $dbpass) 
    	or die(mysqli_connect_error().PHP_EOL);
    mysqli_select_db( $conn, 'dbc' )
    	or die('Error: '.mysqli_error($conn).PHP_EOL);
    $sql = ".............";
    $retval = mysqli_query( $conn, $sql )
    	or die('Error: '.mysqli_error($conn).PHP_EOL);
    while($row = mysqli_fetch_array($retval, MYSQLI_NUM)) {
    	echo "{$row[0]}\t{$row[1]}\t{$row[2]}\n";
    }
    mysqli_free_result($retval);
    mysqli_close($conn);
    ?>
    
  5. 在 /var/www/html/ 目錄下撰寫以下 php 程式:
    1. sort1.php:查詢 tblcx 資料表所有紀錄,先以 author 升序,再以 title 降序排列。
    2. sort2.php:查詢 tblcy 資料表所有紀錄,先以 author 降序,再以 count 升序排列。因為 tblcy 只有兩個欄位,所以 php 中的 \t{$row[2]} 必須刪除。
    3. join.php:使用 JOIN 結合 tblcx 及 tblcy 兩個資料表,找出 author 同時出現在兩個資料表,而且 tblcx 的 author 最前面符合 $str 的紀錄,變數 $str$_GET['str'] 取得。列出 tblcx.id, tblcx.author, tblcy.count。
    4. leftjoin.php:使用 LEFT JOIN 選擇 tblcx 資料表所有紀錄,若 tblcy 資料表有共同的紀錄則一起列出,而且 author 最前面符合 $str 的紀錄,變數 $str$_GET['str'] 取得。列出 tblcx.id, tblcx.author, tblcy.count,條件為 author 同時出現在兩個資料表的紀錄。
    5. rightjoin.php:使用 RIGHT JOIN 選擇 tblcy 資料表所有紀錄,若 tblcx 資料表有共同的紀錄則一起列出,而且 author 最前面符合 $str 的紀錄,變數 $str$_GET['str'] 取得。列出 tblcx.id, tblcx.author, tblcy.count,條件為 author 同時出現在兩個資料表的紀錄。
    6. null.php:查詢 tblcx 資料表 title 為 null 的紀錄,依序列出 id, title, author 欄位,其中 title 使用 IFNULL(title, '$str') 將查詢到的 NULL 欄位輸出成 $str,變數 $str$_GET['str'] 取得。
    7. regexp.php:查詢 tblcy 資料表 author 以 「$str 開頭數字結尾」的紀錄,變數 $str$_GET['str'] 取得。列出所有欄位,但因 tblcy 只有兩個欄位,所以 php 檔中的陣列 row 輸出 \t${row[2]} 必須刪除。
  6. 修改 sorting.php 程式,使用資料庫 dbc,選擇資枓表 tblcx,以 $str i降序排序,變數 $str$_GET['str'] 取得,列出所有欄位。 輸出如以下範例,以 id 降序排序。
    [root@kvm8 html]# curl -s http://127.0.0.1/sorting.php?"str=id" | sed 's/<br> */\n/g'
    ID :5  
    Title: php 
    Author: xyz456 
    --------------------------------
    ID :4  
    Title: perl 
    Author: xyz123 
    --------------------------------
    ID :3  
    Title: ruby 
    Author: abc321 
    --------------------------------
    ID :2  
    Title:  
    Author: xyz222 
    --------------------------------
    ID :1  
    Title:  
    Author: abc123 
    --------------------------------
    Fetched data successfully
    

next up previous contents
Next: ALTER 語法 Up: Clause 紀錄詢問條件 Previous: REGEXP 正規表示   Contents   DYWANG_HOME
De-Yu Wang 2020-04-07