Board logo

標題: 9-2-2 建立與刪除資料表 [打印本頁]

作者: 小誌    時間: 2011-4-21 19:19     標題: 9-2-2 建立與刪除資料表

9-2-2   建立與刪除資料表
如果我們要利用前端的PHP程式建立資料庫中的資料表,則可使用DDL指令群中的「Create Table」指令,指令格式如下:
建立資料表
  1. CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name [(create_definition,...)]
  2. [table_options] [select_statement]
複製代碼
create_definition參數可為:
欄位資料型態可為:

table_options參數可為:

select_statement參數可為:

作者: 小誌    時間: 2011-4-21 19:20

看不懂?沒關係,筆者把它白話的簡單說明如下的格式:
建立資料表
  1. CREATE TABLE
  2.     要新增的資料表名稱
  3.        (
  4.         欄位名1 資料型態 Default 預設值 是否允許NULL,
  5. 欄位名2 資料型態 Default 預設值 是否允許NULL,

  6.     )
複製代碼
例如:
  1. Create Table
  2. PHP測試資料表
  3. (
  4. PersonID char(10) Not NULL,
  5. Name varChar(10),_
  6. Email varChar(100) Default '無' Not NULL
  7. )
複製代碼
筆者拿一句欄位定義敘述來說明:
  1. Email varChar(100) Default '無' Not NULL_
複製代碼

作者: 小誌    時間: 2011-4-21 19:23

實做學習:
於範例ex09_10所建立的「PHP測試」資料庫中新增一個名為「PHPTable」的資料表,資料表中的欄位如下表所示:

名稱

資料型態

資料長度

是否允許無值

預設值

PersonID

Char

10

Name

varChar

10

‘n/a’

Email

varchar

100



注意:必須先指明預設的操作資料庫為「PHP測試」,當我們以『Create Table』指令建立新資料表時,這新增的資料表才會建立到「PHP測試」資料庫中,若未加以指定資料庫,則新增的資料表將會建立於mysql_connect()函數連結登入帳號所預設的資料庫中。
[attach]5701[/attach]
圖9-22  以phpMyAdmin查看資料表設計內容。
ex09_13.php
  1. <?
  2.     $conn = mysql_connect("localhost", "root", "12345a");
  3.       //指定校對字元表
  4.       mysql_query("set character set big5");
  5.       //建立SQL命令字串
  6.     if(mysql_select_db("php測試", $conn))
  7.      {
  8.       //資料庫存在,建立SQL命令字串
  9.       $SQL="Create Table PHPTable(
  10.            PersonID char(10) Not NULL,
  11.            Name varChar(10),
  12.            Email varChar(100) Default 'n/a' not NULL)
  13.            CHARACTER SET big5 COLLATE big5_chinese_ci ";

  14.      //建立資料表
  15.       if (mysql_query($SQL))
  16.         {
  17.           echo "資料表建立成功\" ;
  18.         }
  19.       else
  20.         {
  21.           echo "資料表建立失敗或資料表已經存在";
  22.         }
  23.      }
  24.     else
  25.      {
  26.       //建立SQL命令字串
  27.       $SQL="CREATE DataBase PHP測試 DEFAULT CHARACTER SET big5 COLLATE big5_chinese_ci";
  28.       //執行資料庫建立
  29.      mysql_query($SQL);
  30.       //資料庫已建立後存在,建立新增資料表命令字串
  31.       $SQL="Create Table PHPTable(PersonID char(10) Not NULL,
  32.            Name varChar(10),
  33.            Email varChar(100) Default 'n/a' not NULL)
  34.            CHARACTER SET big5 COLLATE big5_chinese_ci ";

  35.        //切換資料庫
  36.        mysql_select_db("PHP測試", $conn);

  37.       //建立資料表
  38.       if (mysql_query($SQL))
  39.         {
  40.           echo "資料表建立成功\" ;
  41.         }
  42.       else
  43.         {
  44.           echo "資料表建立失敗或資料表已經存在";
  45.         }
  46.      }
  47. ?>
複製代碼

作者: 小誌    時間: 2011-4-21 19:26

實做練習1:
於範例ex09_10所建立的「PHP測試」資料庫中新增一個名為「peoplelist」的資料表,資料表中的欄位如下表所示:

名稱

資料型態

資料長度

是否允許Null

姓名

varchar

(8)

Null (空值)

現任職稱

varchar

(10)

NULL (空值)

部門代號

varchar

(10)

Null (空值)

縣市

varchar

(10)

NULL (空值)

地址

varchar

(50)

NULL (空值)

電話

varchar

(10)

NULL (空值)

郵遞區號

varchar

(5)

NULL (空值)

目前月薪資

smallint

NULL (空值)

年假天數

smallint

NULL (空值)



完成後的資料表規劃應該如下圖所示:
[attach]5702[/attach]
圖9-23   欄位設計內容。

「Create Table」指令敘述提示:
  1. CREATE TABLE peoplelist (
  2.         姓名 varchar (8) NOT NULL ,
  3.         現任職稱 varchar (10) NULL ,
  4.         部門代號 varchar (10) NOT NULL ,
  5.         縣市 varchar (10) NULL ,
  6.         地址 varchar (50) NULL ,
  7.         電話 varchar (10) NULL ,
  8.         郵遞區號 varchar (5) NULL ,
  9.         目前月薪資 smallint NULL ,
  10.         年假天數 smallint NULL
  11. )
複製代碼
要透過前端PHP程式中的mysql_query()函數刪除後端SQL Server中的資料庫必須使用使用DDL指令群中的「Drop Table」指令:
刪除資料表
  1. Drop Table 資料表名
複製代碼
例如:刪除範例ex09_13.php於後端SQL Server「PHP測試」資料庫中新增的「PHPTable」:
ex09_14.php
  1. <?
  2.     $conn = mysql_connect("localhost", "root", "12345a");
  3.       //指定校對字元表
  4.       mysql_query("set character set big5");
  5.       //切換資料庫
  6.       mysql_select_db("php測試", $conn);
  7.       //建立SQL命令字串
  8.       $SQL="Drop Table PHPTable";
  9.       //執行資料庫建立
  10.      mysql_query($SQL);
  11. ?>
複製代碼

作者: 小誌    時間: 2011-4-21 19:27

實做練習1解答:(test09_01.php)
  1. <?
  2.     $conn = mysql_connect("localhost", "root", "12345a");
  3.       //指定校對字元表
  4.       mysql_query("set character set big5");
  5. if(@mysql_select_db("PHP測試", $conn))
  6.      {
  7.       //資料庫存在,建立SQL命令字串
  8.       $SQL="CREATE TABLE peoplelist (" .
  9.            "姓名 varchar (8) NOT NULL ," .
  10.            "現任職稱 varchar (10) NULL ," .
  11.            "部門代號 varchar (10) NOT NULL ," .
  12.            "縣市 varchar (10) NULL ," .
  13.            "地址 varchar (50) NULL ," .
  14.            "電話 varchar (10) NULL ," .
  15.            "郵遞區號 varchar (5) NULL ," .
  16.            "目前月薪資 smallint NULL ," .
  17.            "年假天數 smallint NULL " .
  18.            ")";

  19.      //建立資料表
  20.       if (@mysql_query($SQL))
  21.         {
  22.           echo "資料表建立成功\" ;
  23.         }
  24.       else
  25.         {
  26.           echo "資料表建立失敗或資料表已經存在";
  27.         }
  28.      }
  29.     else
  30.      {
  31.       //建立SQL命令字串
  32.       $SQL="CREATE DataBase PHP測試";
  33.       //執行資料庫建立
  34.      mysql_query($SQL);
  35.       //資料庫已建立後存在,建立新增資料表命令字串
  36.       $SQL="CREATE TABLE peoplelist (" .
  37.            "姓名 varchar (8) NOT NULL ," .
  38.            "現任職稱 varchar (10) NULL ," .
  39.            "部門代號 varchar (10) NOT NULL ," .
  40.            "縣市 varchar (10) NULL ," .
  41.            "地址 varchar (50) NULL ," .
  42.            "電話 varchar (10) NULL ," .
  43.            "郵遞區號 varchar (5) NULL ," .
  44.            "目前月薪資 smallint NULL ," .
  45.            "年假天數 smallint NULL " .
  46.            ")";

  47.        //切換資料庫
  48.        mysql_select_db("PHP測試", $conn);

  49.       //建立資料表
  50.       if (@mysql_query($SQL))
  51.         {
  52.           echo "資料表建立成功\" ;
  53.         }
  54.       else
  55.         {
  56.           echo "資料表建立失敗或資料表已經存在";
  57.         }
  58.      }
  59. ?>
複製代碼





歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)