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