麻辣家族討論版版's Archiver

小誌 發表於 2011-4-21 19:19

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

[color=DarkRed][size=4][b]9-2-2   建立與刪除資料表[/b][/size][/color]
如果我們要利用前端的PHP程式建立資料庫中的資料表,則可使用DDL指令群中的「Create Table」指令,指令格式如下:
[color=Magenta]建立資料表[/color][code]CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name [(create_definition,...)]
[table_options] [select_statement][/code][color=Green]create_definition參數可為:[/color][list]
[*]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)
[/list]
[color=Green]欄位資料型態可為:[/color]
[list]
[*]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,...)
[/list]
[color=Green]table_options參數可為:[/color]
[list]
[*]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 }
[/list]
[color=Green]select_statement參數可為:[/color]
[list]
[*][IGNORE | REPLACE] SELECT ...  (Some legal select statement)
[/list]

小誌 發表於 2011-4-21 19:20

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

    ) [/code]例如:[code]Create Table
PHP測試資料表
(
PersonID char(10) Not NULL,
Name varChar(10),_
Email varChar(100) Default '無' Not NULL
)[/code]筆者拿一句欄位定義敘述來說明:[code]Email varChar(100) Default '無' Not NULL_[/code][list=1]
[*]Email【欄位名稱】:建立資料表中的某個欄位抬頭。
[*]varChar(100)【資料型態】:定義存放於欄位內資料的資料型態與存放資料的長度。
[*]Default ‘無’【欄位預設值】:當新增資料錄時,若該欄位沒有資料輸入,則以「Default」關鍵後的資料值填入欄位內。
[*]Not NULL【是否允許無值輸入】:若於欄位定義中加入「Not NULL」,則新增資料錄時,該欄位一定要輸入。
[/list]

小誌 發表於 2011-4-21 19:23

[color=magenta]實做學習:[/color]
於範例ex09_10所建立的「PHP測試」資料庫中新增一個名為「PHPTable」的資料表,資料表中的欄位如下表所示:
[table]
[tr][td=1,1,96][p=30, 2, center][b][size=2][font=細明體]名稱[/font][color=white][/color][/size][/b][/p][/td][td=1,1,103][p=30, 2, center][b][size=2][font=細明體]資料型態[/font][color=white][/color][/size][/b][/p][/td][td=1,1,103][p=30, 2, center][b][size=2][font=細明體]資料長度[/font][color=white][/color][/size][/b][/p][/td][td=1,1,129][p=30, 2, center][b][size=2][font=細明體]是否允許無值[/font][color=white][/color][/size][/b][/p][/td][td=1,1,78][p=30, 2, center][b][size=2][font=細明體]預設值[/font][color=white][/color][/size][/b][/p][/td][/tr]
[tr][td=1,1,96][p=30, 2, left][font=Courier New][color=#000000][size=2]PersonID[/size][/color][/font][/p][/td][td=1,1,103][p=30, 2, left][font=Courier New][color=#000000][size=2]Char[/size][/color][/font][/p][/td][td=1,1,103][p=30, 2, center][font=Courier New][color=#000000][size=2]10[/size][/color][/font][/p][/td][td=1,1,129][p=30, 2, center][color=#000000][size=2][font=細明體]否[/font][/size][/color][/p][/td][td=1,1,78][p=30, 2, center][font=Courier New][size=2][color=#000000] [/color][/size][/font][/p][/td][/tr]
[tr][td=1,1,96][p=30, 2, left][font=Courier New][color=#000000][size=2]Name[/size][/color][/font][/p][/td][td=1,1,103][p=30, 2, left][font=Courier New][color=#000000][size=2]varChar[/size][/color][/font][/p][/td][td=1,1,103][p=30, 2, center][font=Courier New][color=#000000][size=2]10[/size][/color][/font][/p][/td][td=1,1,129][p=30, 2, center][color=#000000][size=2][font=細明體]是[/font][/size][/color][/p][/td][td=1,1,78][p=30, 2, center][font=Courier New][color=#000000][size=2]‘n/a’[/size][/color][/font][/p][/td][/tr]
[tr][td=1,1,96][p=30, 2, left][font=Courier New][color=#000000][size=2]Email[/size][/color][/font][/p][/td][td=1,1,103][p=30, 2, left][font=Courier New][color=#000000][size=2]varchar[/size][/color][/font][/p][/td][td=1,1,103][p=30, 2, center][font=Courier New][color=#000000][size=2]100[/size][/color][/font][/p][/td][td=1,1,129][p=30, 2, center][color=#000000][size=2][font=細明體]否[/font][/size][/color][/p][/td][td=1,1,78][p=30, 2, center][font=Courier New][size=2][color=#000000] [/color][/size][/font][/p][/td][/tr]
[/table]

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

     //建立資料表
      if (mysql_query($SQL))
        {
          echo "資料表建立成功\" ;
        }
      else
        {
          echo "資料表建立失敗或資料表已經存在";
        }
     }
    else
     {
      //建立SQL命令字串
      $SQL="CREATE DataBase PHP測試 DEFAULT CHARACTER SET big5 COLLATE big5_chinese_ci";
      //執行資料庫建立
     mysql_query($SQL);
      //資料庫已建立後存在,建立新增資料表命令字串
      $SQL="Create Table PHPTable(PersonID char(10) Not NULL,
           Name varChar(10),
           Email varChar(100) Default 'n/a' not NULL)
           CHARACTER SET big5 COLLATE big5_chinese_ci ";

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

      //建立資料表
      if (mysql_query($SQL))
        {
          echo "資料表建立成功\" ;
        }
      else
        {
          echo "資料表建立失敗或資料表已經存在";
        }
     }
?>[/code]

小誌 發表於 2011-4-21 19:26

[color=magenta]實做練習1: [/color]
於範例ex09_10所建立的「PHP測試」資料庫中新增一個名為「peoplelist」的資料表,資料表中的欄位如下表所示:
[table]
[tr][td=1,1,129][p=30, 2, center][b][size=2]名稱[/size][/b][/p][/td][td=1,1,129][p=30, 2, center][b][size=2]資料型態[/size][/b][/p][/td][td=1,1,129][p=30, 2, center][b][size=2]資料長度[/size][/b][/p][/td][td=1,1,129][p=30, 2, center][b][size=2]是否允許Null[/size][/b][/p][/td][/tr]
[tr][td=1,1,129][p=30, 2, left][color=#000000][size=2][font=細明體]姓名[/font][/size][/color][/p][/td][td=1,1,129][p=30, 2, center][font=Courier New][color=#000000][size=2]varchar[/size][/color][/font][/p][/td][td=1,1,129][p=30, 2, center][font=Courier New][color=#000000][size=2](8)[/size][/color][/font][/p][/td][td=1,1,129][p=30, 2, left][color=#000000][size=2][font=細明體]非[/font][font=Courier New] Null ([/font][font=細明體]空值[/font][font=Courier New])[/font][/size][/color][/p][/td][/tr]
[tr][td=1,1,129][p=30, 2, left][color=#000000][size=2][font=細明體]現任職稱[/font][/size][/color][/p][/td][td=1,1,129][p=30, 2, center][font=Courier New][color=#000000][size=2]varchar[/size][/color][/font][/p][/td][td=1,1,129][p=30, 2, center][font=Courier New][color=#000000][size=2](10)[/size][/color][/font][/p][/td][td=1,1,129][p=30, 2, left][color=#000000][size=2][font=Courier New]NULL ([/font][font=細明體]空值[/font][font=Courier New])[/font][/size][/color][/p][/td][/tr]
[tr][td=1,1,129][p=30, 2, left][color=#000000][size=2][font=細明體]部門代號[/font][/size][/color][/p][/td][td=1,1,129][p=30, 2, center][font=Courier New][color=#000000][size=2]varchar[/size][/color][/font][/p][/td][td=1,1,129][p=30, 2, center][font=Courier New][color=#000000][size=2](10)[/size][/color][/font][/p][/td][td=1,1,129][p=30, 2, left][color=#000000][size=2][font=細明體]非[/font][font=Courier New] Null ([/font][font=細明體]空值[/font][font=Courier New])[/font][/size][/color][/p][/td][/tr]
[tr][td=1,1,129][p=30, 2, left][color=#000000][size=2][font=細明體]縣市[/font][/size][/color][/p][/td][td=1,1,129][p=30, 2, center][font=Courier New][color=#000000][size=2]varchar[/size][/color][/font][/p][/td][td=1,1,129][p=30, 2, center][font=Courier New][color=#000000][size=2](10)[/size][/color][/font][/p][/td][td=1,1,129][p=30, 2, left][color=#000000][size=2][font=Courier New]NULL ([/font][font=細明體]空值[/font][font=Courier New])[/font][/size][/color][/p][/td][/tr]
[tr][td=1,1,129][p=30, 2, left][color=#000000][size=2][font=細明體]地址[/font][/size][/color][/p][/td][td=1,1,129][p=30, 2, center][font=Courier New][color=#000000][size=2]varchar[/size][/color][/font][/p][/td][td=1,1,129][p=30, 2, center][font=Courier New][color=#000000][size=2](50)[/size][/color][/font][/p][/td][td=1,1,129][p=30, 2, left][color=#000000][size=2][font=Courier New]NULL ([/font][font=細明體]空值[/font][font=Courier New])[/font][/size][/color][/p][/td][/tr]
[tr][td=1,1,129][p=30, 2, left][color=#000000][size=2][font=細明體]電話[/font][/size][/color][/p][/td][td=1,1,129][p=30, 2, center][font=Courier New][color=#000000][size=2]varchar[/size][/color][/font][/p][/td][td=1,1,129][p=30, 2, center][font=Courier New][color=#000000][size=2](10)[/size][/color][/font][/p][/td][td=1,1,129][p=30, 2, left][color=#000000][size=2][font=Courier New]NULL ([/font][font=細明體]空值[/font][font=Courier New])[/font][/size][/color][/p][/td][/tr]
[tr][td=1,1,129][p=30, 2, left][color=#000000][size=2][font=細明體]郵遞區號[/font][/size][/color][/p][/td][td=1,1,129][p=30, 2, center][font=Courier New][color=#000000][size=2]varchar[/size][/color][/font][/p][/td][td=1,1,129][p=30, 2, center][font=Courier New][color=#000000][size=2](5)[/size][/color][/font][/p][/td][td=1,1,129][p=30, 2, left][color=#000000][size=2][font=Courier New]NULL ([/font][font=細明體]空值[/font][font=Courier New])[/font][/size][/color][/p][/td][/tr]
[tr][td=1,1,129][p=30, 2, left][color=#000000][size=2][font=細明體]目前月薪資[/font][/size][/color][/p][/td][td=1,1,129][p=30, 2, center][font=Courier New][color=#000000][size=2]smallint[/size][/color][/font][/p][/td][td=1,1,129][p=30, 2, center][font=Courier New][size=2][color=#000000] [/color][/size][/font][/p][/td][td=1,1,129][p=30, 2, left][color=#000000][size=2][font=Courier New]NULL ([/font][font=細明體]空值[/font][font=Courier New])[/font][/size][/color][/p][/td][/tr]
[tr][td=1,1,129][p=30, 2, left][color=#000000][size=2][font=細明體]年假天數[/font][/size][/color][/p][/td][td=1,1,129][p=30, 2, center][font=Courier New][color=#000000][size=2]smallint[/size][/color][/font][/p][/td][td=1,1,129][p=30, 2, center][font=Courier New][size=2][color=#000000] [/color][/size][/font][/p][/td][td=1,1,129][p=30, 2, left][color=#000000][size=2][font=Courier New]NULL ([/font][font=細明體]空值[/font][font=Courier New])[/font][/size][/color][/p][/td][/tr]
[/table]

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

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

小誌 發表於 2011-4-21 19:27

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

     //建立資料表
      if (@mysql_query($SQL))
        {
          echo "資料表建立成功\" ;
        }
      else
        {
          echo "資料表建立失敗或資料表已經存在";
        }
     }
    else
     {
      //建立SQL命令字串
      $SQL="CREATE DataBase PHP測試";
      //執行資料庫建立
     mysql_query($SQL);
      //資料庫已建立後存在,建立新增資料表命令字串
      $SQL="CREATE TABLE peoplelist (" .
           "姓名 varchar (8) NOT NULL ," .
           "現任職稱 varchar (10) NULL ," .
           "部門代號 varchar (10) NOT NULL ," .
           "縣市 varchar (10) NULL ," .
           "地址 varchar (50) NULL ," .
           "電話 varchar (10) NULL ," .
           "郵遞區號 varchar (5) NULL ," .
           "目前月薪資 smallint NULL ," .
           "年假天數 smallint NULL " .
           ")";

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

      //建立資料表
      if (@mysql_query($SQL))
        {
          echo "資料表建立成功\" ;
        }
      else
        {
          echo "資料表建立失敗或資料表已經存在";
        }
     }
?>[/code]

頁: [1]

麻辣家族討論版版為 麻辣學園 網站成員  由 昱得資訊工作室 © Since 1993 所提供