Board logo

標題: [教學] (PHP+IIS+MsSQL教學第33篇) 使用DDL指令 [打印本頁]

作者: 小誌    時間: 2010-5-17 18:37     標題: (PHP+IIS+MsSQL教學第33篇) 使用DDL指令

DDL:資料定義語言(Data Definition Language),用來建立與刪除資料庫、資料表…等的SQL指令群。

建立與卸除資料庫
要在前端的PHP程式中建立後端SQL Server控管的新資料庫,必須使用DDL指令群中的「Create」指令:
創建資料庫
  1. Create DataBase 新資料庫名
複製代碼
例如:利用前端PHP程式中的Command物件執行Create指令,於後端SQL Server新增一個名為「PHP測試」的新資料庫:
[attach]601[/attach]
  1. <?
  2.     $conn = mssql_connect("127.0.0.1", "sa", "12345");
  3.       //建立SQL命令字串
  4.       $SQL="Create DataBase PHP測試";
  5.       //執行資料庫建立
  6.      mssql_query($SQL);
  7. ?>
複製代碼
要在後端SQL Server中建立新資料庫,也就是使用CREATE DATABASE指令(),權限是預設給sysadmin和dbcreator固定伺服器角色的成員,因此,並非每個登入SQL Serve的帳號都可以建立新資料庫,也就是用不同的登入帳號就有不同存取資料和執行功能的權限。

在上例中,我們使用的登入帳號為「sa(系統管理者)」,因此擁有最大的SQL Server使用權限,所以能在後端SQL Server中建立新資料庫,小誌建議您,如果要讓別人使用您的SQL Server機器,最好建立一個有權限限制的帳號,不要將系統管理者帳號與密碼隨便交給別人使用!


要透過前端PHP程式中的Command物件卸除後端SQL Server中的資料庫必須使用使用DDL指令群中的「Drop」指令:
卸離資料庫
  1. Drop DataBase 資料庫名
複製代碼
例如:卸除上一個範例於後端SQL Server新增的「PHP測試」資料庫:
  1. <?
  2.     $conn = mssql_connect("127.0.0.1", "sa", "12345");
  3.       //建立SQL命令字串
  4.       $SQL="DROP DataBase PHP測試";
  5.       //執行資料庫卸除
  6.      mssql_query($SQL);
  7. ?>
複製代碼

作者: 小誌    時間: 2010-5-17 18:42

建立與刪除資料表
如果我們要利用前端的PHP程式建立資料庫中的資料表,則可使用DDL指令群中的「Create Table」指令,指令格式如下:
建立資料表
  1. CREATE TABLE
  2.     [ database_name.[ owner ] . | owner. ] table_name
  3.        ( { < column_definition >
  4.         | column_name AS computed_column_expression
  5.         | < table_constraint > ::= [ CONSTRAINT constraint_name ] }
  6.             | [ { PRIMARY KEY | UNIQUE } [ ,...n ]
  7.     )
複製代碼
看不懂?沒關係,小誌把它白話的簡單說明如下的格式:
建立資料表
  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 NvarChar(10),_
  6. Email NvarChar(100) Default '無' Not NULL
  7. )
複製代碼
小誌拿一句欄位定義敘述來說明:
  1. Email NvarChar(100) Default '無' Not NULL_
複製代碼



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

名稱

資料型態

資料長度

是否允許無值

預設值

PersonID

Char

10

Name

NvarChar

10

Email

Nvarchar

100



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

[attach]602[/attach]
  1. <?
  2. $conn = mssql_connect("127.0.0.1", "sa", "12345");
  3. if(@mssql_select_db("PHP測試", $conn))
  4. {
  5. //資料庫存在,建立SQL命令字串
  6. $SQL="Create Table " .
  7. "PHP測試資料表 " .
  8. "(" .
  9. "PersonID char(10) Not NULL," .
  10. "Name NvarChar(10)," .
  11. "Email NvarChar(100) Default '無' not NULL" .
  12. ")";

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

  37. //切換資料庫
  38. mssql_select_db("PHP測試", $conn);

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

作者: 小誌    時間: 2010-5-17 18:46

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

名稱

資料型態

資料長度

是否允許Null

姓名

nvarchar

(8)

Null (空值)

現任職稱

nvarchar

(10)

NULL (空值)

部門代號

nvarchar

(10)

Null (空值)

縣市

nvarchar

(10)

NULL (空值)

地址

nvarchar

(50)

NULL (空值)

電話

nvarchar

(10)

NULL (空值)

郵遞區號

nvarchar

(5)

NULL (空值)

目前月薪資

smallint

NULL (空值)

年假天數

smallint

NULL (空值)



完成後的資料表規劃應該如下圖所示:
[attach]603[/attach]
  1. <?
  2. $conn = mssql_connect("127.0.0.1", "sa", "12345");
  3. if(@mssql_select_db("PHP測試", $conn))
  4. {
  5. //資料庫存在,建立SQL命令字串
  6. $SQL="CREATE TABLE 員工名單 (" .
  7. "姓名 nvarchar (8) NOT NULL ," .
  8. "現任職稱 nvarchar (10) NULL ," .
  9. "部門代號 nvarchar (10) NOT NULL ," .
  10. "縣市 nvarchar (10) NULL ," .
  11. "地址 nvarchar (50) NULL ," .
  12. "電話 nvarchar (10) NULL ," .
  13. "郵遞區號 nvarchar (5) NULL ," .
  14. "目前月薪資 smallint NULL ," .
  15. "年假天數 smallint NULL " .
  16. ")";

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

  45. //切換資料庫
  46. mssql_select_db("PHP測試", $conn);

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

作者: 小誌    時間: 2010-5-17 18:47

要透過前端PHP程式中的Command物件刪除後端SQL Server中的資料庫必須使用使用DDL指令群中的「Drop Table」指令:
刪除資料表
  1. Drop Table 資料表名
複製代碼
例如:刪除之前範例於後端SQL Server「PHP測試」資料庫中新增的「PHP測試資料表」:
  1. <?
  2.     $conn = mssql_connect("127.0.0.1", "sa", "12345");
  3.       //建立SQL命令字串
  4.       $SQL="Drop Table PHP測試資料表";
  5.       //執行資料庫建立
  6.      mssql_query($SQL);
  7. ?>
複製代碼





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