1 / 34

第六章

第六章. 資料庫與資料表定義. 章節概要. 6.1 使用 CREATE DATABASE 建立資料庫 6.2 使用 USE 選取資料庫  6.3 使用 CREATE TABLE 建立資料表  6.4 使用 CREATE INDEX 建立索引  6.5 使用 ALTER TABLE 修改資料表定義  6.6 使用 DROP TABLE 刪除資料表  6.7 使用 DROP INDEX 刪除索引  6.8 使用 DROP DATABASE 刪除資料庫 . 6.1 使用 CREATE DATABASE 建立資料庫.

Download Presentation

第六章

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第六章 資料庫與資料表定義

  2. 章節概要 • 6.1 使用CREATE DATABASE建立資料庫 • 6.2 使用USE 選取資料庫  • 6.3 使用CREATE TABLE建立資料表  • 6.4 使用CREATE INDEX建立索引  • 6.5 使用ALTER TABLE修改資料表定義  • 6.6 使用DROP TABLE刪除資料表  • 6.7 使用DROP INDEX刪除索引  • 6.8 使用DROP DATABASE刪除資料庫 

  3. 6.1使用CREATE DATABASE建立資料庫 • 所謂資料庫指的是一塊儲存有資料表、索引或其他資料庫物件的媒體空間。在商業化的SQL系統中,通常會提供CREATE DATABASE的命令來建立資料庫,其最簡單的格式為如下: • 【建立資料庫語法一】 CREATE DATABASE 資料庫名稱

  4. 使用CREATE DATABASE建立資料庫(續) • 例如我們於SQL Server中使用Query Analyzer 來建立一個名為HR(Human Resource;人力資源)的資料庫,則可下達如下的指令: • CREATE DATABASE HR; • 執行成功後將出現如下的訊息: • CREATE DATABASE 處理序正在配置 0.75 MB 於磁碟 'HR'。 • CREATE DATABASE 處理序正在配置 0.49 MB 於磁碟 'HR_log'。 • 註:我們無法透過使用ODBC連線的方式執行CREATE DATABASE指令,因為ODBC連線時是連接到特定的資料庫。

  5. 使用CREATE DATABASE建立資料庫(續) • 依實際的不同需要,CREATE DATABASE命令中可能包含有其他的子句,以便我們來控制資料庫的所在、資料庫大小及其他的選項。 • 例如於SQL Server中使用較複雜的CREATE DATABASE指令格式: • 【建立資料庫語法二】(SQL Server) CREATE DATABASE database_name [ ON {DEFAULT|device_name} [=SIZE] [, device_name [=SIZE] ] ] [ LOG ON database_device [=SIZE] [, database_device [=SIZE] ] ] [ FOR LOAD | FOR ATTACH ]

  6. 使用CREATE DATABASE建立資料庫(續) • 如下建立一個名稱為Products的資料庫,而其資料檔案為products_data.mdf (初設為4MB,每次可擴增1MB,最大容量為10MB,邏輯名稱為products_dat),而交易記錄檔為products_log.ldf (初設為2MB,每次可擴增2MB,最大容量為10MB,邏輯名稱為products_log): • CREATE DATABASE Products ON ( NAME = products_dat, FILENAME = 'D:\program files\microsoft sql server\mssql\data\products_data.mdf',

  7. 使用CREATE DATABASE建立資料庫(續) SIZE = 4, MAXSIZE = 10, FILEGROWTH = 1 ) LOG ON ( NAME = 'products_log', FILENAME = 'D:\program files\microsoft sql server\mssql\data\products_log.ldf', SIZE = 2MB, MAXSIZE = 10MB, FILEGROWTH = 2MB )

  8. 6.2使用USE 選取資料庫 • 建立好了資料庫或者進入資料庫管理系統,並不代表著就立即使用或連接我們想要操控的資料庫。假如我們想使用指定的資料庫,則我們須下達如下的指令: • 【使用資料庫語法】 USE 資料庫名稱; • 如使用Products資料庫: • USE Products; 如何連接資料庫這部分請參考各RDBMS的說明手冊。

  9. 6.3使用CREATE TABLE建立資料表 • 建立資料表時最主要的工作為: • 為資料表命令 • 定義資料表所包含的欄位名稱 • 定義各個欄位的資料型態 • 指定各個欄位是否允許為NULL • 決定那些欄位的資料值必須是唯一的 • 設定欄位限制條件 • 設定主鍵-連外鍵的關聯限制 • 建立索引

  10. 使用CREATE TABLE建立資料表(續) • 用來建立資料表的SQL指令為CREATE TABLE,其指令格式如下: • 【建立資料表語法】 CREATE TABLE 資料表名稱 ( 欄位名稱一 資料型態 [NULL|NOT NULL], 欄位名稱二 資料型態 [NULL|NOT NULL], ... 欄位名稱N 資料型態 [NULL|NOT NULL] )

  11. 使用CREATE TABLE建立資料表(續) • 例如欲於資料庫HR中建立一個部門資料表Departments,其屬性設定如下: • 則先下指令使用HR資料庫或使用RDBMS系統的功能選取HR資料庫: • USE HR;

  12. 使用CREATE TABLE建立資料表(續) • 接著下達CREATE TABLE指令如下: • CREATE TABLE Departments ( DepartmentID int NOT NULL, Name VARCHAR(50) NOT NULL, Location VARCHAR(60) )

  13. 使用CREATE TABLE建立資料表(續) • 又例如我們想新增一員工資料表Employees,其屬性如下:

  14. 使用CREATE TABLE建立資料表(續) • 則可下達如下的指令:(SQL Server) • CREATE TABLE Employees ( EmployeeID int NOT NULL , DepartmentID int , SupervisorID int , ReportsTo int , Name varchar (50) NOT NULL, EngName varchar (50) NOT NULL , SSN varchar (10) ,

  15. 使用CREATE TABLE建立資料表(續) Salary money , Commission money , Title varchar (30) , TitleOfCourtesy varchar (30) , BirthDate datetime , HireDate datetime , Address varchar (120) , City varchar (20) , Region varchar (10) , PostalCode varchar (5) )

  16. 使用CREATE TABLE建立資料表(續) • 常用資料的型態 • 字元字串資料型態 • 整數數值資料型態 • 十進位數字資料型態 • 貨幣資料型態 • 日期與時間資料型態 • 二進位資料型態 • 時間戳記資料型態 • 序列資料型態

  17. 使用CREATE TABLE建立資料表(續) • 在SQL-92的CREATE TABLE命令尚支援其他的限制準則,包括:PRIMARY KEY、UNIQUE、DEFAULT、CHECK、REFERENCES和FOREIGN KEY等限制準則,可用來執行如下的工作: • PRIMARY KEY(主鍵) • UNIQUE(唯一) • DEFAULT(預設值) • CHECK(檢查) • REFERENCES及FOREIGN KEY(參考關聯)

  18. 使用CREATE TABLE建立資料表(續) • 例如設計資料表Dept如下:

  19. 使用CREATE TABLE建立資料表(續) • 則此時可加入PRIMARY KEY設定以指定主鍵的欄位,即可下達指令如下: • CREATE TABLE Dept ( DepartmentID int NOT NULL, Name varchar(20) NOT NULL, Location varchar(20) , PRIMARY KEY (DepartmentID) )

  20. 使用CREATE TABLE建立資料表(續) • 即如下的指令格式: • 【建立資料表語法】 CREATE TABLE 資料表名稱 ( 欄位名稱一 資料型態 [NULL|NOT NULL], 欄位名稱二 資料型態 [NULL|NOT NULL], ... 欄位名稱N 資料型態 [NULL|NOT NULL], PRIMARY KEY (主鍵欄位名稱列表) ) 主鍵欄位為多個欄位時用逗點分隔。

  21. 使用CREATE TABLE建立資料表(續) • 又例如我們想設定如下的員工資料表Emp1:

  22. 使用CREATE TABLE建立資料表(續) • 使用以下的指令建立資料表 Emp1: • CREATE TABLE Emp1 ( EmployeeID int NOT NULL, DepartmentID int NOT NULL , Name varchar (50) NOT NULL, BirthDate datetime, Sex char(2) DEFAULT '男' NOT NULL, EngName varchar (50) , SSN char (10) NOT NULL, Salary decimal(12,2) , Phone varchar(12), CellarPhone char(10), PRIMARY KEY (EmployeeID), UNIQUE (SSN) ) Oracle: 改用 CHAR(1 char)或CHAR(3以上) Oracle定義CHAR/VARCHAR2欄位長度時可指定單位為CHAR或BYTE(預設)

  23. 使用CREATE TABLE建立資料表(續) • 又例如我們想設定如下的員工資料表Emp2:

  24. 使用CREATE TABLE建立資料表(續) • 則可下達如下的指令: • CREATE TABLE Emp2 ( EmployeeID int NOT NULL, DepartmentID int NOT NULL REFERENCES Dept(DepartmentID), Name varchar (50) NOT NULL, BirthDate datetime, Sex char(2) NOT NULL DEFAULT '男‘CHECK (Sex IN ('男', '女') ), EngName varchar (50) , SSN char (10) NOT NULL, Salary decimal(12,2) ,

  25. 使用CREATE TABLE建立資料表(續) Phone varchar(12), CellarPhone char(10), PRIMARY KEY (EmployeeID), UNIQUE (SSN) )

  26. 6.4使用CREATE INDEX建立索引 • 建立適當的索引可以增進SQL指令的執行速度。 • 建立索引的SQL指令為CREATE INDEX指令,其格式如下: 【CREATE INDEX語法】 CREATE [UNIQUE] INDEX 索引名稱 ON 資料表名稱 (欄位名稱列表)

  27. 6.5使用ALTER TABLE修改資料表定義 • 當資料表的欄位屬性需要異動、新增或刪除欄位、改變欄位名稱或資料表關聯時,我們可以使用ALTER TABLE來修改資料表的定義。ALTER TABLE的語法如下: • 【ALTER TABLE語法】 ALTER TABLE 資料表名稱 異動項目 [,異動項目...]

  28. 使用ALTER TABLE修改資料表定義(續) • 其中常見的異動項目如下:(詳細項目各RDBMS或有不同) • ADD 欄位名稱 欄位屬性 ADD PRIMARY KEY (欄位列表) ADD INDEX [索引名稱](欄位列表) DROP COLUMN 欄位名稱 DROP PRIMARY KEY DROP INDEX 索引名稱 ALTER COLUMN 欄位名稱 新的欄位屬性

  29. 使用ALTER TABLE修改資料表定義(續) • 例如於HR(或於Orders)資料庫中新增一資料表Customer如下: • CREATE TABLE Customer ( CustomerID VARCHAR(12) NOT NULL, CustomerName VARCHAR(30) NOT NULL, Tel VARCHAR(20), PostalCode INT, Address VARCHAR(80) )

  30. 使用ALTER TABLE修改資料表定義(續) • 現在我們想加入一個新的性別欄位(Sex)如下: Sex CHAR(2) NOT NULL DEFAULT '男'則可下達如下的指令: • ALTER TABLE Customer ADD Sex CHAR(2) NOT NULL DEFAULT '男';

  31. 6.6使用DROP TABLE刪除資料表 • 若我們想將資料表及其相關的索引刪除,則可使用DROP TABLE指令將其結構和資料一齊刪除。其指令語法如下: • 【DROP TABLE語法】 DROP TABLE 資料表名稱 • 例如將先前建立的資料表Customer刪除,則可下達如下的指令: • DROP TABLE Customer;

  32. 6.7使用DROP INDEX刪除索引 • 當我們想要刪除索引時,我們可以使用DROP INDEX來刪除索引。DROP INDEX的語法如下: • 【DROP INDEX】(SQL Server/Sybase) DROP INDEX 資料表名稱.索引名稱 【DROP INDEX】(MySQL/Oracle) DROP INDEX 索引名稱 ON 資料表

  33. 使用DROP INDEX刪除索引(續) • 例如於HR的Emp上新建一索引SSNINX如下: • CREATE INDEX SSNINX ON Emp(SSN); • 則欲刪除時可下達如下的指令: • DROP INDEX Emp.SSNINX; 或 • DROP INDEX SSNINX ON Emp

  34. 6.8 使用DROP DATABASE刪除資料庫 • 刪除資料庫時會將資料庫內的所有物件、資料及結構全部刪除。DROP DATABASE的語法如下: • 【DROP DATABASE】 DROP DATABASE 資料庫名稱 • 如我們想將資料庫HR整個移除,則可下達如下的指令: • DROP DATABASE HR;

More Related