返回列表 上一主題 發帖

[教學] (PHP+IIS+MsSQL教學第33篇) 使用DDL指令

[教學] (PHP+IIS+MsSQL教學第33篇) 使用DDL指令

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

建立與卸除資料庫
要在前端的PHP程式中建立後端SQL Server控管的新資料庫,必須使用DDL指令群中的「Create」指令:
創建資料庫
  1. Create DataBase 新資料庫名
複製代碼
例如:利用前端PHP程式中的Command物件執行Create指令,於後端SQL Server新增一個名為「PHP測試」的新資料庫:
10.png
2010-5-17 18:35
  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. ?>
複製代碼
心安,平安   
發表任何無意義的感謝或灌水文章一律砍,珍惜帳號,請詳閱版規!!

建立與刪除資料表
如果我們要利用前端的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_
複製代碼

  • Email【欄位名稱】:建立資料表中的某個欄位抬頭。
  • NvarChar(100)【資料型態】:定義存放於欄位內資料的資料型態與存放資料的長度。
  • Default ‘無’【欄位預設值】:當新增資料錄時,若該欄位沒有資料輸入,則以「Default」關鍵後的資料值填入欄位內。
  • Not NULL【是否允許無值輸入】:若於欄位定義中加入「Not NULL」,則新增資料錄時,該欄位一定要輸入。



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

名稱

資料型態

資料長度

是否允許無值

預設值

PersonID

Char

10

Name

NvarChar

10

Email

Nvarchar

100



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

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

TOP

實做練習:
於之前範例所建立的「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 (空值)



完成後的資料表規劃應該如下圖所示:
10.png
2010-5-17 18:45
  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. ?>
複製代碼
心安,平安   
發表任何無意義的感謝或灌水文章一律砍,珍惜帳號,請詳閱版規!!

TOP

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

TOP

        靜思自在 : 心中常存善解、包容、感思、知足、惜福。
返回列表 上一主題