返回列表 上一主題 發帖

9-2-2 建立與刪除資料表

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參數可為:

  • col_name type [NOT NULL | NULL] [DEFAULT default_value] [AUTO_INCREMENT]
  • [PRIMARY KEY] [reference_definition]
  • PRIMARY KEY (index_col_name,...)
  • KEY [index_name] (index_col_name,...)
  • INDEX [index_name] (index_col_name,...)
  • UNIQUE [INDEX] [index_name] (index_col_name,...)
  • [CONSTRAINT symbol] FOREIGN KEY index_name (index_col_name,...) [reference_definition]
  • CHECK (expr)

欄位資料型態可為:

  • TINYINT[(length)] [UNSIGNED] [ZEROFILL]
  • SMALLINT[(length)] [UNSIGNED] [ZEROFILL]
  • MEDIUMINT[(length)] [UNSIGNED] [ZEROFILL]
  • INT[(length)] [UNSIGNED] [ZEROFILL]
  • INTEGER[(length)] [UNSIGNED] [ZEROFILL]
  • BIGINT[(length)] [UNSIGNED] [ZEROFILL]
  • REAL[(length,decimals)] [UNSIGNED] [ZEROFILL]
  • DOUBLE[(length,decimals)] [UNSIGNED] [ZEROFILL]
  • FLOAT[(length,decimals)] [UNSIGNED] [ZEROFILL]
  • DECIMAL(length,decimals) [UNSIGNED] [ZEROFILL]
  • NUMERIC(length,decimals) [UNSIGNED] [ZEROFILL]
  • CHAR(length) [BINARY]
  • VARCHAR(length) [BINARY]
  • DATE、TIME、TIMESTAMP、DATETIME
  • TINYBLOB、BLOB、MEDIUMBLOB、LONGBLOB
  • TINYTEXT、TEXT、MEDIUMTEXT、LONGTEXT
  • ENUM(value1,value2,value3,...)、SET(value1,value2,value3,...)

table_options參數可為:

  • TYPE = {ISAM | MYISAM | HEAP}
  • AUTO_INCREMENT = #
  • AVG_ROW_LENGTH = #
  • CHECKSUM = {0 | 1}
  • COMMENT = "string"
  • MAX_ROWS = #
  • MIN_ROWS = #
  • PACK_KEYS = {0 | 1}
  • PASSWORD = "string"
  • DELAY_KEY_WRITE = {0 | 1}
  • ROW_FORMAT= { default | dynamic | static | compressed }

select_statement參數可為:

  • [IGNORE | REPLACE] SELECT ...  (Some legal select statement)
心安,平安   
發表任何無意義的感謝或灌水文章一律砍,珍惜帳號,請詳閱版規!!

看不懂?沒關係,筆者把它白話的簡單說明如下的格式:
建立資料表
  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_
複製代碼

  • Email【欄位名稱】:建立資料表中的某個欄位抬頭。
  • varChar(100)【資料型態】:定義存放於欄位內資料的資料型態與存放資料的長度。
  • Default ‘無’【欄位預設值】:當新增資料錄時,若該欄位沒有資料輸入,則以「Default」關鍵後的資料值填入欄位內。
  • Not NULL【是否允許無值輸入】:若於欄位定義中加入「Not NULL」,則新增資料錄時,該欄位一定要輸入。
心安,平安   
發表任何無意義的感謝或灌水文章一律砍,珍惜帳號,請詳閱版規!!

TOP

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

名稱

資料型態

資料長度

是否允許無值

預設值

PersonID

Char

10

Name

varChar

10

‘n/a’

Email

varchar

100



注意:必須先指明預設的操作資料庫為「PHP測試」,當我們以『Create Table』指令建立新資料表時,這新增的資料表才會建立到「PHP測試」資料庫中,若未加以指定資料庫,則新增的資料表將會建立於mysql_connect()函數連結登入帳號所預設的資料庫中。

圖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. ?>
複製代碼
心安,平安   
發表任何無意義的感謝或灌水文章一律砍,珍惜帳號,請詳閱版規!!

TOP

實做練習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 (空值)



完成後的資料表規劃應該如下圖所示:

圖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. ?>
複製代碼
心安,平安   
發表任何無意義的感謝或灌水文章一律砍,珍惜帳號,請詳閱版規!!

TOP

實做練習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. ?>
複製代碼
心安,平安   
發表任何無意義的感謝或灌水文章一律砍,珍惜帳號,請詳閱版規!!

TOP

        靜思自在 : 是非當教育,讚美作警惕。
返回列表 上一主題