next up previous contents
Next: Duplicates 重複紀錄 Up: 其他 Previous: Temporary 暫時資料表   Contents   DYWANG_HOME

實機操作練習題

  1. 前置處理
    1. 遠端登入 kvm8 虛擬機。
    2. 以 root 身份登入 mariadb。
    3. 在資料庫 dbo 進行以下資料表的處理,如果資料庫 dbo 不存在,請自行產生。
  2. clone table
    1. 建立資料表 clone1,包含下列欄位,設定 id 為 primary key,name 為 index。
      1. id int unsigned not null,
      2. name varchar(30),
      3. address varchar(50)
    2. 在資料表 clone1 中應該至少會有兩筆紀錄,若有很多筆也沒關係。如果沒有,請自行任意產生兩筆紀錄。
    3. 再將資料表 clone1 複製成 clone2,複製的不只是紀錄,還包含 index, key 等欄位特徵,比對 clone1 及 clone2 兩個資料表應該要完全一樣。
  3. 使用以下命令列方式,查詢 Metadata,並導向到指定的檔案。
    [root@kvm8 ~]# mysql -uroot -p123qwe -e 'select ....();' > ....
    
    1. 查詢 mysql 的版本,導向到 /tmp/metadataversion
    2. 查詢 mysql 中包含 ssl 字串的所有狀態 (status),導向到 /tmp/metadatassl
    3. 查詢 mysql 含 max_join_size 字串的變數 (variables) 大小,導向到 /tmp/metadatamaxjoinsize
  4. 暫時資料表
    1. 寫一 sales1.php 檔放在 /var/www/html 目錄下,在資料庫 dbo 建立資料表 sales1,包含下列欄位,id 自動編號。
      1. id int unsigned not null,
      2. product varchar(30),
      3. price int unsigned not null default 0
    2. 在 sales1 新增一筆資料 (ssd 1399)。
    3. 查詢 sales1 的所有資料,列出所有欄位內容。
    4. php 程式範例:
      <?php
      $dbhost = 'localhost:3306';
      $dbuser = 'root';
      $dbpass = '123qwe';
      $conn = mysqli_connect($dbhost, $dbuser, $dbpass) 
      	or die(mysqli_connect_error().PHP_EOL);
      mysqli_select_db( $conn, 'dbo' )
      	or die('Error: '.mysqli_error($conn).PHP_EOL);
      $sql = "CREATE temporary table ...... ;" ;
      mysqli_query( $conn, $sql )
      	or die('Error: '.mysqli_error($conn).PHP_EOL);
      $sql = "insert into ...... ; ";
      mysqli_query( $conn, $sql )
      	or die('Error: '.mysqli_error($conn).PHP_EOL);
      $sql = "select * from .......;";
      $retval = mysqli_query( $conn, $sql )
      	or die(mysqli_error().PHP_EOL);
      while($row = mysqli_fetch_array($retval, MYSQLI_NUM)) {
      	echo "{$row[0]}\t{$row[1]}\t{$row[2]}\t{$row[3]}\n";
      }
      mysqli_free_result($retval);
      mysqli_close($conn);
      ?>
      


De-Yu Wang 2020-04-07