資料庫與資料表定義
1 使用CREATE DATABASE建立資料庫 2 使用USE 選取資料庫
3 使用CREATE TABLE建立資料表 4 使用CREATE INDEX建立索引
5 使用ALTER TABLE修改資料表定義 6 使用DROP TABLE刪除資料表
7 使用DROP DATABASE刪除資料庫
1 使用CREATE DATABASE建立資料庫
• 所謂資料庫指的是一塊儲存有資料表、索引或其他資料庫物件的 媒體空間。在商業化的SQL系統中,通常會提供CREATE DATABASE 的命令來建立資料庫,其最簡單的格式為如下:
• 【建立資料庫語法一】
CREATE DATABASE 資料庫名稱
2使用USE 選取資料庫
• 建立好了資料庫或者進入資料庫管理系統,並不代表著就立即使 用或連接我們想要操控的資料庫。假如我們想使用指定的資料庫,
則我們須下達如下的指令:
• 【使用資料庫語法】
USE 資料庫名稱;
• 如使用Products資料庫:
• USE Products;
如何連接資料庫這部分請參考各RDBMS的說明手冊。
3使用CREATE TABLE建立資料表
• 建立資料表時最主要的工作為:
• 為資料表命令
• 定義資料表所包含的欄位名稱
• 定義各個欄位的資料型態
• 指定各個欄位是否允許為NULL
• 決定那些欄位的資料值必須是唯一的
• 設定欄位限制條件
• 設定主鍵-連外鍵的關聯限制
• 建立索引
使用CREATE TABLE建立資料表(續)
• 用來建立資料表的SQL指令為CREATE TABLE,其指令格式如下:
• 【建立資料表語法】
CREATE TABLE 資料表名稱 (
欄位名稱一 資料型態 [NULL|NOT NULL], 欄位名稱二 資料型態 [NULL|NOT NULL], ...
欄位名稱N 資料型態 [NULL|NOT NULL]
)
使用CREATE TABLE建立資料表(續)
• 例如欲於資料庫HR中建立一個部門資料表Departments,其屬性 設定如下:
• 則先下指令使用HR資料庫或使用RDBMS系統的功能選取HR資料 庫:
• USE HR;
使用CREATE TABLE建立資料表(續)
• 接著下達CREATE TABLE指令如下:
• CREATE TABLE Departments (
DepartmentID int NOT NULL, Name VARCHAR(50) NOT NULL, Location VARCHAR(60)
)
使用CREATE TABLE建立資料表(續)
• 又例如我們想新增一員工資料表Employees,其
屬性如下:
使用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) ,
使用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) )
使用CREATE TABLE建立資料表(續)
• 例如設計資料表Dept如下:
使用CREATE TABLE建立資料表(續)
• 則此時可加入PRIMARY KEY設定以指定主鍵的欄位,即可下達指 令如下:
• CREATE TABLE Dept (
DepartmentID int NOT NULL, Name varchar(20) NOT NULL, Location varchar(20) ,
PRIMARY KEY (DepartmentID) )
使用CREATE TABLE建立資料表(續)
• 即如下的指令格式:
• 【建立資料表語法】
CREATE TABLE 資料表名稱 (
欄位名稱一 資料型態 [NULL|NOT NULL], 欄位名稱二 資料型態 [NULL|NOT NULL], ...
欄位名稱N 資料型態 [NULL|NOT NULL],
PRIMARY KEY (主鍵欄位名稱列表)
使用CREATE TABLE建立資料表(續)
• 又例如我們想設定如下的員工資料表Emp1:
使用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),
4. 使用CREATE INDEX建立索引
• 建立適當的索引可以增進SQL指令的執行速度。
• 建立索引的SQL指令為CREATE INDEX指令,其格式如下:
【CREATE INDEX語法】
CREATE [UNIQUE] INDEX 索引名稱 ON 資料表名稱 (欄位名稱列表)
5使用ALTER TABLE修改資料表定義
• 當資料表的欄位屬性需要異動、新增或刪除欄位、改變欄位名稱 或資料表關聯時,我們可以使用ALTER TABLE來修改資料表的定義。
ALTER TABLE的語法如下:
• 【ALTER TABLE語法】
ALTER TABLE 資料表名稱 異動項目 [,異動項目...]
使用ALTER TABLE修改資料表定義(續)
• 其中常見的異動項目如下:(詳細項目各RDBMS或有不同)
ADD 欄位名稱 欄位屬性
ADD PRIMARY KEY (欄位列表) ADD INDEX [索引名稱](欄位列表) DROP COLUMN 欄位名稱
DROP PRIMARY KEY DROP INDEX 索引名稱
ALTER COLUMN 欄位名稱 新的欄位屬性
使用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) )
使用ALTER TABLE修改資料表定義(續)
• 現在我們想加入一個新的性別欄位(Sex)如下:
Sex CHAR(2) NOT NULL DEFAULT '男'則可下達如下的指令:
ALTER TABLE Customer
ADD Sex CHAR(2) NOT NULL DEFAULT '男';
6. 使用DROP TABLE刪除資料表
• 若我們想將資料表及其相關的索引刪除,則可使用DROP TABLE指 令將其結構和資料一齊刪除。其指令語法如下:
• 【DROP TABLE語法】
DROP TABLE 資料表名稱
• 例如將先前建立的資料表Customer刪除,則可下達如下的指令:
• DROP TABLE Customer;
7. 使用DROP DATABASE刪除資料庫
• 刪除資料庫時會將資料庫內的所有物件、資料及結構全部刪除。
DROP DATABASE的語法如下:
• 【DROP DATABASE】
DROP DATABASE 資料庫名稱
• 如我們想將資料庫HR整個移除,則可下達如下的指令:
• DROP DATABASE HR;
請使用CREATE DATABASE 新增一名為MyTest的資料庫。
CREATE DATABASE MyTest;
請於上述資料庫中使用CREATE TABLE 指令新增一個用來儲存使用 者資料的資料表 users,其架構為 UserID CHAR(10)、UserPassword VARCHAR(20)、UserName VARCHAR(20) 及Status CHAR(1),其中除 Status外皆不可為NULL;而主鍵則為UserID。
作業:
SQL for Relational Database
• Data Definition Language (DDL)
• Create table S …
• Create view V …
• Alter table S…
• Drop table S
• Data Manipulation Language (DML)
• Insert into S …
• Delete from S …
• Update S set …
• Query Language
• Select – from – where