第7章 建立資料表與完整性限制條件 7-1 資料型別 7-2 資料表的建立 7-3 建立完整性限制條件 7-4 修改與刪除資料表

Slides:



Advertisements
Similar presentations
第二章 简单的 SQL 语句. 本章要点  创建一个简单的表  SQL 语句介绍  最简单的查询语句 select  带有限制条件的查询  查询结果的排序显示.
Advertisements

作業一 : USING DBMS ( 使用 DB2 及 SQL 基本練習 ) 報告人:學生楊群期 學號: 課程 : 高等資料庫 講師 : 楊維邦教授.
2010 年 6 月课件制作人:王亚楠 1 模块 2 项目开发概论 教学课件 年 6 月课件制作人:王亚楠 2 目录 目标 了解:数据库技术的基本概念与结构 理解:数据模型的分类与结构组成 掌握:关系数据库及 SQL 的基本理论 知识 掌握:数据库设计的方法与步骤 内容 2.1 数据库技术基础.
第八单元 数据库MySQL应用基础 MySQL数据库应用基础 MySQ数据库操作使用 Mysql管理工具 第25章 数据库的增加/删除操作
第5章 关系数据库标准语言SQL 主讲:张丽芳.
第5章 索引及视图操作 数据库原理应用与实践 SQL SERver2014(第2版) 主编 贾铁军 科学出版社 编著 陈国秦 万程 邢一鸣
数据库技术及应用 ——SQL Server 任课教师: 毕丛娣 电话: 年3月.
第14章 預存程序 14-1 預存程序的基礎 14-2 建立與執行預存程序 14-3 預存程序的參數傳遞 14-4 預存程序的傳回值
第4章 关系数据库标准语言SQL 4.1 SQL语言概述 4.2 SQL数据查询功能 4.3 SQL数据操作功能 4.4 SQL数据定义功能.
第3章 SQL的基础知识 数据库管理及应用 3.1 SQL简介 3.2 SQL的数据模型 3.3 标识符 3.4 使用SQL语句管理数据库
数据库概述 简而言之,数据库(DataBase)就是一个存储数据的仓库。为了方便数据的存储和管理,它将数据按照特定的规律存储在磁盘上。通过数据库管理系统,可以有效的组织和管理存储在数据库中的数据。如今,已经存在了Oracle、SQL Server、MySQL等诸多优秀的数据库。在这一章中将讲解的内容包括。
数据库原理及设计 --作业.
第6章 資料庫管理系統 6-1 關聯式資料庫管理系統 6-2 SQL Server資料庫管理系統
第 10 章 更多的查詢技巧.
创建数据库 MySql创建数据库的语法: CREATE DATABASE 数据库名; 例: CREATE DATABASE mydb;
資料庫設計 Database Design.
第三章 管理信息系统的技术基础 主要内容: 数据处理 数据组织 数据库技术 4. 计算机网络.
计算机应用基础 上海大学计算中心.
数据库原理 Database Principles 第五章 数据库完整性 Database Principles.
第2章 数据定义功能 创建表 在关系型数据模型中,表(Table)是最基本的数据结构。
第11章 详细设计.
数据库技术 第十章 数据库完整性 中国科学技术大学网络学院 阚卫华.
建立/修改/刪除資料庫 資料庫組成檔案 建立資料庫: 資料(庫)檔案 交易記錄檔 使用Enterprise Manager工具 自助法:
第 8 章 資料的 新增、修改與刪除.
課程名稱:資料庫系統 授課老師:李春雄 博士
PHP與MySQL 入門學習指南 凱文瑞克 著 第 23 章 資料型別.
第十一章 資料庫設計與權限設定.
第4章 SQL语言基础及数据库定义 4.1 基本概念 4.2 SQL Server 提供的主要数据类型 4.3 数据定义.
Chap 10 SQL定義、操作與控制指令.
第 11 章 建立檢視表.
第 14 章 預存程序.
Microsoft SQL Server 2000 李金双.
第 7 章 建立資料表與 資料庫圖表.
第 2 章 規劃關聯式資料庫.
教 师:曾晓东 电 话: 数据库技术 教 师:曾晓东 电 话:
第 16 章 觸發程序.
SQL Server 2000 数据库入门.
課程名稱:資料庫系統 授課老師:李春雄 博士
課程名稱:資料庫系統 授課老師:李春雄 博士
第7章 ADO.NET操作SQL Server数据库
第16章 信息系统综合应用开发实例.
建立/修改/刪除資料表 建立資料表 使用Enterprise Manager工具
MySQL数据库基础与实例教程 之 MySQL表结构的管理 郭水泉.
第五章 認識 SQL語言與 資料型別.
第三章作业讲评 文洁 2012/4/10.
SQL SERVER 一些经典语句 1.
作业3-点评.
第十二章 SQL語言簡介 講授大綱: 新增資料庫 新增資料表 新增資料 修改資料 刪除資料 查詢資料 透視ASP.NET-第12章
Ch4.SQL Server 2005資料庫組成員元件介紹
实验二讲评 … 张榆….
数据库技术.
第20章 MySQL数据库.
数据库技术与应用.
CH03 行銷資訊系統資料庫模組--資料庫概論
第3章 关系数据库的创建与维护 Microsoft SQL Server2008 概述 SQL Server数据库基础 数据库的创建与维护
第16章 信息系统综合应用开发实例.
第九章 创建数据库.
4.2 视图 (1) 视图是一个虚拟表,其内容来自对表查询的基础上。
3.2 Mysql 命令行 1 查看数据库 SHOW DATABASES; 2 创建一个数据库test1 CREATE DATABASE test1; 3 选择你所创建的数据库 USE test1; (按回车键出现Database changed 时说明操作成功!) 4 查看现在的数据库中存在什么表.
国家“十一五”规划教材 数据库原理与应用教程(第3版).
通讯录管理系统设计 常州工程职业技术学院 计算机技术系.
用int类型(4字节)去存具体时间(8字节).
讲课人:王璞 浙江工商职业技术学院.
第 7 章 建立資料表與資料庫圖表.
第4章 表的创建与维护 4.1 数据类型 4.2 数据完整性约束 4.3 创建数据表 4.4 修改数据表 4.5 删除数据表.
第9章 视 图 教学提示:用户在查询数据库中的数据时,除了直接查看数据库中的表中的数据以外,还可以通过视图来查看表中的数据,也就是说,视图为用户提供了另外一种查看表中的数据的方式。 视图是一种虚拟表,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据。但是,视图并不在数据库中以存储的数据值集形式存在。行和列数据来自于定义视图的查询所引用的表,并且在引用视图时动态生成。
11 檢視表的建立 11-1 檢視表的基礎 11-2 建立檢視表 11-3 修改與刪除檢視表 11-4 編輯檢視表的內容.
變數、資料型態、運算子.
資料庫管理 HOMEWORK #2 楊立偉教授 台灣大學工管系 2013 Fall.
第4章 数据查询.
Presentation transcript:

第7章 建立資料表與完整性限制條件 7-1 資料型別 7-2 資料表的建立 7-3 建立完整性限制條件 7-4 修改與刪除資料表 7-5 建立SQL Server資料庫圖表 7-6 暫存資料表的建立

7-1 資料型別 7-1-1 數字資料型別 7-1-2 日期資料型別 7-1-3 字元與位元串流資料型別 7-1-4 其他資料型別

7-1-1 數字資料型別-位元資料型別 SQL Server數字資料型別是用來儲存數值資料,包含整數和小數。 位元資料型別bit的值可以是0、1或NULL,一個bit資料型別的欄位大小是1位元(Bits),但它會佔用整個位元組(Bytes),除非資料表擁有數個bit資料型別的欄位,才會使用同一個位元組的1~8位元,若超過8個欄位,就使用第2個位元組的9~16位元來儲存。 因為bit資料型別的值可以是1或0,所以特別適合使用在開/關、真/假和true/false等布林資料的欄位,即1為true;0為false。

7-1-1 數字資料型別-整數資料型別 整數資料型別可以儲存整數但沒有小數的數值資料,例如:1、-23、589和8888等正負整數。SQL Server提供數種整數資料型別來儲存不同範圍的整數資料,請依照欄位可能整數值的範圍來決定使用哪一種整數資料型別,如下表所示:

7-1-1 數字資料型別-精確小數資料型別 精確小數資料型別可以儲存包含小數的數值資料,而且可以完全保留指定的精確度(Precision)。SQL Server提供兩種精確小數資料型別,如下表所示:

7-1-1 數字資料型別-浮點數資料型別 浮點數資料型別是遵循IEEE(Institute of Electrical and Electronic Engineers)的資料型別,一樣可以用來儲存擁有小數點的數值資料。此型別也稱為不精確小數資料型別,因為當數值非常大或非常小時,其儲存的資料是一個近似值,例如:1/3的結果就是一個近似值。 SQL Server提供的兩種浮點數資料型別,如下表所示:

7-1-1 數字資料型別-貨幣資料型別 貨幣資料型別並不是ANSI-SQL 92規格的資料型別,SQL Server提供此型別來儲存貨幣資料,以符合實際貨幣輸入格式的千元符號「,」,例如:2,5000元,如下表所示:

7-1-2 日期資料型別 日期資料型別儲存日期與時間資料,如下表:

7-1-3 字元與位元串流資料型別-說明 在電腦系統讀寫的位元串流(Byte Stream)就是一序列的位元組資料。SQL Server可以將位元組資料解碼成字元、數字或符號,即字串和統一字碼字串資料型別的資料。如果不作任何解碼就是二進位字串資料型別。 統一字碼(Unicode)是由Unicode Consortium組織所制定的一個能包括全世界文字的字碼集,它包含GB2312和Big5字碼集的所有字集,即ISO 10646字集。

7-1-3 字元與位元串流資料型別- 字串資料型別 字串資料型別是用來儲存字串資料,例如:'陳會安'、'This is a book.'和'Joe Chen'等。SQL Server提供四種字串資料型別,可以用來儲存固定長度或變動長度的字串,如下表所示:

7-1-3 字元與位元串流資料型別- 統一字碼字串資料型別 統一字碼字串資料型別是用來儲存使用統一字碼為字碼集的字串資料,SQL Server統一字碼字串的資料需要指明「N」開頭的字串,如下所示: N'This is a book.' N'Joe Chen'

7-1-3 字元與位元串流資料型別- 二進位字串資料型別 二進位字串資料型別是用來儲存二進位字串(Binary String)資料,也就是未經解碼的位元串流,可以用來儲存二進位資料的圖檔、Word文件或Excel試算表等,如下表所示:

7-1-4 其他資料型別-說明 在SQL Server除了前述常用的數值、貨幣、日期與時間和字串資料型別外,還提供一些特殊用途的資料型別。 一般來說,除非資料庫應用程式有特殊的需求,通常並不會使用到這些資料型別。

7-1-4 其他資料型別-標記資料型別 標記資料型別可以用來建立記錄資料戳記或識別碼,這些都是資料庫或全域的唯一值。SQL Server提供兩種標記資料型別,如下表所示:

7-1-4 其他資料型別-xml資料型別 資料型別xml是SQL Server 2005新增的資料型別,可以在資料表儲存整份XML文件或XML片斷內容,並且支援XML索引來加速XML資料存取。 基本上,在資料表建立的xml欄位可以分為兩種:強制型態的XML欄位(Typed XML Columns)需要使用XML Schema進行驗證,否則只能建立非強制型態的XML欄位(Un-typed XML Columns),進一步說明請參閱<第20章:SQL Server與XML>。

7-1-4 其他資料型別-sql_variant資料型別 sql_variant資料型別建立的資料表欄位可以儲存text、ntext、image、timestamp、sql_variant、varchar(max)、nvarchar(max)和varbinary(max)資料型別之外所有資料型別的資料,視資料型別的不同,可以儲存最大8016位元的資料。 資料型別sql_variant如同Visual Basic語言的variant資料型別,可以建立儲存各種資料的變數,當我們不確定欄位的資料型別時,就可以使用sql_variant資料型別來儲存數值、日期或字串資料。

7-1-4 其他資料型別-階層資料型別 在SQL Server 2008版新增hierarchyid資料型別,可以在SQL Server資料庫儲存階層資料(Hierarchical Data),這是一種可變長度的系統資料型別,可以使用hierarchyid欄位來代表記錄在階層中的位置。 不過,hierarchyid資料型別的欄位並不會自動產生樹狀目錄的階層架構,應用程式需要自行產生且指定hierarchyid欄位值,以便建立記錄間的關聯性來建立階層資料。因為此型別的使用已經超過本書範圍,其進一步說明請參閱SQL Server線上叢書。

7-1-4 其他資料型別-空間資料型別 SQL Server 2008版新增geometry和geography兩種空間資料型別,geometry資料型別支援儲存平面地球(Flat Earth)的地理資料,符合開放式地理空間協會(Open Geospatial Consortium,OGC)的規格。 資料型別geography可以儲存球形地球(Round Earth)資料,即地理座標的經緯度,例如:儲存GPS的經緯度座標。關於空間資料型別的使用可能需要整本書來說明,所以本書並沒有討論這兩種資料型別。

7-1-4 其他資料型別- T-SQL變數的資料型別 SQL Server提供一些專為T-SQL變數宣告使用的資料型別,這些資料型別並不能用來定義資料表的欄位,如下表所示:

7-2 資料表的建立 7-2-1 使用Management Studio建立資料表 7-2-2 使用T-SQL指令建立資料表 7-2-3 建立計算欄位 7-2-4 疏鬆欄位的使用

7-2-1 使用Management Studio 建立資料表 Management Studio提供圖形編輯畫面來建立資料表的定義資料,例如:在執行Ch7-2.sql建立的【教務系統】資料庫上,建立名為【學生】資料表,如下圖所示:

7-2-2 使用T-SQL指令建立資料表-語法 T-SQL語言是使用CREATE TABLE指令在目前選擇的資料庫建立資料表,其基本語法如下所示: CREATE TABLE 資料表名稱 ( 欄位名稱1 資料型別 [ 欄位屬性清單 ], 欄位名稱2 資料型別 [ 欄位屬性清單 ], ………. 欄位名稱n 資料型別 [ 欄位屬性清單 ] [ 資料表屬性清單 ] ) [ ON 檔案群組名稱 ] [ TEXTIMAGE_ON 檔案群組名稱 ]

7-2-2 使用T-SQL指令建立資料表-範例1 SQL指令碼檔:Ch7-2-2-01.sql 在【教務系統】資料庫新增【員工】資料表,因為沒有ON子句,所以是建立在預設檔案群組,如下所示: CREATE TABLE 員工 ( 身份證字號 char(10) NOT NULL PRIMARY KEY, 姓名 varchar(12) NOT NULL, 城市 varchar(5) DEFAULT '台北', 街道 varchar(30), 電話 char(12), 薪水 money, 保險 money, 扣稅 money )

7-2-2 使用T-SQL指令建立資料表-範例2 SQL指令碼檔:Ch7-2-2-02.sql 在【教務系統】資料庫新增【課程】資料表,這是建立在名為【教務系統_群組】檔案群組的資料表,如下所示: CREATE TABLE 課程 ( 課程編號 char(5) NOT NULL PRIMARY KEY , 名稱 varchar(30) NOT NULL , 學分 int DEFAULT 3 ) ON 教務系統_群組

7-2-2 使用T-SQL指令建立資料表-範例3 SQL指令碼檔:Ch7-2-2-03.sql 在【教務系統】資料庫新增【教授】資料表,且新增自動編號的【建檔編號】欄位,如下所示: CREATE TABLE 教授 ( 建檔編號 int IDENTITY(1000, 1), 教授編號 char(4) NOT NULL PRIMARY KEY, 職稱 varchar(10), 科系 varchar(5), 身份證字號 char(10) NOT NULL )

7-2-3 建立計算欄位-說明 計算欄位(Computed Columns)是一種沒有儲存值的資料表欄位,它的值是使用同一筆記錄其他欄位建立的運算式計算而得。因為欄位並沒有真正儲存資料,其欄位值是從其他欄位計算出,所以計算欄位就是一種虛擬欄位。 請注意!計算欄位因為並沒有存入值,所以並不能指定DEFAULT、NOT NULL、NULL等欄位屬性和條件約束。如果計算欄位值是唯一值且不會更動,我們仍然可以指定成PRIMARY KEY和UNIQUE欄位,不過很少會如此設定。

7-2-3 建立計算欄位-建立方式 在Management Studio新增計算欄位就是在編輯畫面下方指定【計算資料行規格/公式】的欄位屬性。 T-SQL指令是使用AS關鍵字來指定計算欄位的運算式。

7-2-3 建立計算欄位-範例 SQL指令碼檔:Ch7-2-3.sql 在【教務系統】資料庫新增【估價單】資料表,最後的【平均單價】欄位是一個計算欄位,其運算式為【總價 / 數量】,如下所示: CREATE TABLE 估價單 ( 估價單編號 int NOT NULL IDENTITY PRIMARY KEY, 產品編號 char(4) NOT NULL, 總價 decimal(5, 1) NOT NULL, 數量 int NOT NULL DEFAULT 1, 平均單價 AS 總價 / 數量 )

7-2-4 疏鬆欄位的使用-說明 疏鬆欄位(Sparse Columns)是指在資料表中此欄位資料大部分是NULL值,換句話說,整個資料表只有少部分記錄的欄位擁有值,因為NULL值根本不需佔用儲存空間,換句話說,疏鬆欄位只有非NULL值才會佔用儲存空間。

7-2-4 疏鬆欄位的使用-注意事項 疏鬆欄位在資料表設計上的注意事項,如下所示: 疏鬆欄位必須大部分記錄的欄位值為NULL值。 疏鬆欄位不能指定DEFAULT或新增任何規則,也不能使用IDENTITY和ROWGUIDCOL屬性。 疏鬆欄位可以使用在任何資料型別的欄位,除了geography、geometry、text、ntext、image、timestamp和使用者自訂型別等資料型別。 疏鬆欄位不能作為主鍵欄位,也不可以用來建立叢集索引。

7-2-4 疏鬆欄位的使用-建立方式 在Management Studio新增疏鬆欄位就是在編輯畫面下方的【為疏鬆】欄位,將屬性值改為【是】。 T-SQL指令是使用SPARSE關鍵字來指定欄位為疏鬆欄位。

7-2-4 疏鬆欄位的使用-範例 SQL指令碼檔:Ch7-2-4.sql 在【教務系統】資料庫新增【廠商】資料表,最後的【分公司數】欄位是一個疏鬆欄位,因為大部分廠商都沒有分公司,如下所示: CREATE TABLE 廠商 ( 廠商編號 int NOT NULL IDENTITY PRIMARY KEY, 廠商名稱 varchar(100), 分公司數 int SPARSE )

練習題 寫出圖中學生關聯表的T-SQL,其中學號是主鍵,以自動編號方式,起始值9800001,遞增值1

7-3 建立完整性限制條件 7-3-1 條件約束的基礎 7-3-2 建立PRIMARY KEY條件約束 7-3-3 建立CHECK條件約束 7-3-4 建立資料表的關聯性

7-3-1 條件約束的基礎-說明 條件約束(Constraints)可以定義欄位的檢查規則,檢查輸入資料是否允許存入資料表欄位。換句話說,它就是在建立資料庫的完整性限制條件,來維護資料的完整性。 SQL Server的條件約束可以分為針對單一欄位值的「欄位層級條件約束」(Column-level Constraints)和多個欄位值的「資料表層級條件約束」(Table-level Constraints)。

7-3-1 條件約束的基礎-種類

7-3-2 建立PRIMARY KEY條件約束-說明

7-3-2 建立PRIMARY KEY條件約束- 使用Management Studio 如果主鍵是多個欄位的複合鍵,在Management Studio選取欄位時,請使用Ctrl鍵配合選取多個欄位後,再設定主索引鍵。

7-3-2 建立PRIMARY KEY條件約束- 使用T-SQL(語法) 在T-SQL的CREATE TABLE指令可以指定資料表層級的PRIMARY KEY條件約束,其語法如下所示: [ CONSTRAINT 條件約束名稱 ] PRIMARY KEY (欄位清單) 上述語法建立名為【條件約束名稱】的條件約束,如果沒有指定名稱,SQL Server會自動產生條件約束名稱,在括號內的欄位清單如果為多欄位的複合鍵,請使用逗號分隔欄位名稱。

7-3-2 建立PRIMARY KEY條件約束- 使用T-SQL(範例) SQL指令碼檔:Ch7-3-2.sql 在【教務系統】資料庫新增【訂單明細】資料表,其主鍵是【訂單編號】和【項目序號】欄位的複合鍵,如下所示: CREATE TABLE 訂單明細 ( 訂單編號 int NOT NULL, 項目序號 smallint NOT NULL, 數量 int DEFAULT 1, PRIMARY KEY (訂單編號, 項目序號) )

7-3-3 建立CHECK條件約束-說明 CHECK條件約束能夠限制欄位值是否在指定的範圍,其內容是條件運算式,運算結果如為true,就允許存入欄位資料,否則並不允許存入。 例如:在【員工】資料表的【扣稅】欄位值,一定小於【薪水】欄位值,即【薪水 > 扣稅】條件運算式。

7-3-3 建立CHECK條件約束- 使用Management Studio 在Management Studio工具建立CHECK條件約束(正確的說是修改資料表新增CHECK條件約束)。

7-3-3 建立CHECK條件約束- 使用T-SQL(語法) 在T-SQL的CREATE TABLE指令也可以建立CHECK條件約束,欄位層級是位在欄位屬性清單,其建立的約束條件只對此欄位有效;至於資料表層級是位在資料表屬性清單,其條件對整個資料表都有效。其基本語法如下所示: [ CONSTRAINT 條件約束名稱 ] CHECK (條件運算式) 上述語法在CHECK條件約束的括號內是條件運算式,如果沒有指定條件約束名稱,SQL Server會自動新增其名稱。

7-3-3 建立CHECK條件約束- 使用T-SQL(範例1) SQL指令碼檔:Ch7-3-3-01.sql 在【教務系統】資料庫新增【訂單】資料表,並且在【訂單總價】和【付款總額】欄位建立欄位層級的CHECK條件約束,如下所示: CREATE TABLE 訂單 ( 訂單編號 int NOT NULL IDENTITY PRIMARY KEY, 訂單總價 money NOT NULL CONSTRAINT 訂單總價_條件約束 CHECK (訂單總價 > 0), 付款總額 money DEFAULT 0 CHECK (付款總額 > 0) )

7-3-3 建立CHECK條件約束- 使用T-SQL(範例2) SQL指令碼檔:Ch7-3-3-02.sql 在【教務系統】資料庫新增【我的訂單】資料表,並且建立資料表層級的CHECK條件約束,如下所示: CREATE TABLE 我的訂單 ( 訂單編號 int NOT NULL IDENTITY PRIMARY KEY, 訂單總價 money NOT NULL, 付款總額 money DEFAULT 0, CHECK ( (訂單總價 > 0) AND (付款總額 > 0) AND (訂單總價 > 付款總額)) )

練習 check條件 1.欄位層級的條件約束: 在【教務系統】資料庫,建立[學生]資料表,各欄位如下(不用索引),其中[學號]欄位要建立名為[學年]的條件約束名稱,條件: 學號>9800001 2.資料表層級的條件約束: 在【教務系統】資料庫,建立[結果]資料表,各欄位如圖,其中[成績]欄位的條件: 成績>=60 (兩種寫法分開寫在同一個檔案就可以)

7-3-4 建立資料表的關聯性-說明 資料表的關聯性(Relationships)是二個或多個資料表間所擁有的關係。 在資料表間建立關聯性(Relationships)的目的是建立參考完整性(Referential Integrity),它是資料表與資料表間的完整性限制條件。

7-3-4 建立資料表的關聯性-種類 一對一的關聯性(1:1):指一個資料表記錄只關聯到另一個資料表記錄,這是指資料表一筆記錄的欄位值可以被其他資料表一筆記錄的欄位值所參考。 一對多的關聯性(1:N):指一個資料表記錄關聯到多個資料表記錄,這是指資料表一筆記錄的欄位值可以被其他資料表多筆記錄的欄位值所參考。 多對多的關聯性(M:N):指多個資料表記錄關聯到多個資料表記錄,這是指資料表多筆記錄的欄位值可以被其他資料表多筆記錄的欄位值所參考。

7-3-4 建立資料表的關聯性- 使用Management Studio

7-3-4 建立資料表的關聯性- 使用T-SQL(語法) 使用T-SQL指令建立關聯性就是新增FOREIGN KEY條件約束,在CREATE TABLE指令的條件約束語法中,欄位層級是位在欄位屬性清單;資料表層級位在資料表屬性清單,其基本語法如下所示: [CONSTRAINT 條件約束名稱] [ [FOREIGN KEY (欄位清單) ] REFERENCES 參考資料表名稱 (欄位清單) [ON DELETE { CASCADE | NO ACTION }] [ON UPDATE { CASCADE | NO ACTION }] ]

7-3-4 建立資料表的關聯性- 使用T-SQL(範例1) SQL指令碼檔:Ch7-3-4.sql 在【教務系統】資料庫建立【班級】資料表,並且使用FOREIGN KEY條件約束,建立與【學生】、【課程】和【教授】資料表的關聯性,如下所示: CREATE TABLE 班級 ( 教授編號 char(4) NOT NULL, 課程編號 char(5) NOT NULL, 學號 char(4) NOT NULL REFERENCES 學生 (學號), 上課時間 datetime,

7-3-4 建立資料表的關聯性- 使用T-SQL(範例1) 教室 varchar(8), PRIMARY KEY (學號, 教授編號, 課程編號), FOREIGN KEY (教授編號) REFERENCES 教授 (教授編號), FOREIGN KEY (課程編號) REFERENCES 課程 (課程編號) )

練習題 寫出建立圖中關聯表-結果的T-SQL語法,其中學號是欄位層級方式,參考自學生關聯表的學號,測驗編號是資料表層級的方式,參考自測驗關聯表的測驗編號

7-4 修改與刪除資料表 7-4-1 修改資料表名稱 7-4-2 修改資料表欄位 7-4-3 修改條件約束 7-4-4 刪除資料表

7-4-1 修改資料表名稱- 使用Management Studio

7-4-1 修改資料表名稱- 使用系統預存程序(語法) 在SQL Server可以使用sp_rename系統預存程序來修改資料庫物件的名稱,包含資料庫、資料表、欄位和預存程序等,其基本語法如下所示: EXEC sp_rename '物件名稱', '新名稱' [,'物件型態' ] 上述系統預存程序的參數物件型態可以指定是修改資料庫(DATABASE)、欄位(COLUMN)和索引(INDEX),括號中的型態值,如果沒有指定,就可以修改資料表名稱。

7-4-1 修改資料表名稱- 使用系統預存程序(範例) SQL指令碼檔:Ch7-4-1.sql 修改【教務系統】資料庫的【訂單】資料表名稱成為【學校訂單】,如下所示: EXEC sp_rename '訂單', '學校訂單'

7-4-2 修改資料表欄位- 使用Management Studio

7-4-2 修改資料表欄位-使用T-SQL(語法) T-SQL指令修改資料表欄位來使用ALTER TABLE指令,其基本語法如下所示: ALTER TABLE 資料表名稱 ADD 新欄位名稱 資料型別 [欄位屬性清單] | 計算欄位名稱 AS 運算式 [,] 或 DROP COLUMN 欄位名稱 ALTER COLUMN 欄位名稱 新資料型別 [NULL | NOT NULL]

7-4-2 修改資料表欄位-使用T-SQL(範例1) SQL指令碼檔:Ch7-4-2-01.sql 在【教務系統】資料庫修改【我的訂單】資料表,新增【訂單日期】和【送貨日期】欄位,資料型別都是datetime,如下所示: ALTER TABLE 我的訂單 ADD 訂單日期 datetime NOT NULL, 送貨日期 datetime

7-4-2 修改資料表欄位-使用T-SQL(範例2) SQL指令碼檔:Ch7-4-2-02.sql 在【教務系統】資料庫修改【我的訂單】資料表,刪除【送貨日期】欄位,如下所示: ALTER TABLE 我的訂單 DROP COLUMN 送貨日期

7-4-2 修改資料表欄位-使用T-SQL(範例3) SQL指令碼檔:Ch7-4-2-03.sql 在【教務系統】資料庫修改【我的訂單】資料表,將【訂單日期】欄位的資料型別改為varchar(20),如下所示: ALTER TABLE 我的訂單 ALTER COLUMN 訂單日期 varchar(20) NOT NULL

練習題 利用T-SQL,在學生關聯表,新增欄位[地址],資料型別是varchar(50);刪除[生日欄位]:將[電話]欄位的資料型別改為char(10)

7-4-3 修改條件約束- 使用Management Studio 在Management Studio只需開啟資料表欄位定義編輯視窗,就可以開啟「檢查條件約束」對話方塊來修改CHECK條件約束。開啟「外部索引鍵關聯性」對話方塊,可以修改資料表的關聯性。 除了在Management Studio按上方工具列按鈕來開啟上述兩個對話方塊外,在欄位定義上,執行【右】鍵快顯功能表的【關聯性】和【檢查條件約束】指令,也一樣可以開啟所需的對話方塊。

7-4-3 修改條件約束-使用T-SQL(語法) T-SQL是使用ALTER TABLE指令修改條件約束,其基本語法如下所示: ALTER TABLE 資料表名稱 [ WITH CHECK | WITH NOCHECK] ADD CONSTRAINT條件約束定義 或 DROP CONSTRAINT 條件約束名稱

7-4-3 修改條件約束-使用T-SQL(範例1) SQL指令碼檔:Ch7-4-3-01.sql 在【教務系統】資料庫修改【員工】資料表,新增【薪水】欄位的CHECK條件約束,條件運算式為【薪水 > 18000】,如下所示: ALTER TABLE 員工 ADD CONSTRAINT 薪水_條件 CHECK (薪水 > 18000)

7-4-3 修改條件約束-使用T-SQL(範例2) SQL指令碼檔:Ch7-4-3-02.sql 在【教務系統】資料庫修改【員工】資料表,刪除名為【薪水_條件】的條件約束,如下所示: ALTER TABLE 員工 DROP CONSTRAINT 薪水_條件

練習題 在【教務系統】資料庫修改【學生】資料表,新增【學號】欄位的CHECK條件約束,條件運算式為【學號 > 9800001】;刪除名為[電話區域]的條件約束

7-4-4 刪除資料表- 使用Management Studio

7-4-4 刪除資料表-使用T-SQL(語法) 使用T-SQL的DROP TABLE 指令來刪除資料表,刪除範圍包含資料表索引、記錄和檢視表,其基本語法如下所示: DROP TABLE 資料表名稱 上述語法是從資料庫刪除【資料表名稱】的資料表。

7-4-4 刪除資料表-使用T-SQL(範例) SQL指令碼檔:Ch7-4-4.sql 在【教務系統】資料表刪除【我的訂單】資料表,如下所示: DROP TABLE 我的訂單

7-5 建立SQL Server資料庫圖表-說明 Management Studio提供資料庫圖表功能,可以使用符號圖形來顯示資料庫的資料表內容與其關聯性。不只如此,資料庫圖表一樣提供編輯功能,可以直接在資料庫圖表的編輯畫面新增資料表、建立關聯性和條件約束。

7-5 建立SQL Server資料庫圖表-圖例

7-6 暫存資料表的建立-說明 暫存資料表(Temporary Tables)是一種因需求而暫時用來儲存資料所建立的資料表,它只有在使用者的工作階段(Session)存在,即使用者在線上時存在,當使用者離線後,SQL Server就自動刪除此暫存資料表。 SQL Server暫存資料表是儲存在tempdb系統資料庫。

7-6 暫存資料表的建立-種類 區域暫存資料表(Local Temporary Tables):這是名稱使用「#」開頭的資料表,只有在使用者目前工作階段的期間有效,當工作階段終止,即使用者離線後,SQL Server就會自動刪除此資料表。 全域暫存資料表(Global Temporary Tables):這是名稱使用「##」開頭的資料表,所有使用者的工作階段都可以存取此資料表,直到最後一位使用者的工作階段終止,即離線後,才會自動刪除此資料表。

7-6 暫存資料表的建立-範例1 SQL指令碼檔:Ch7-6-01.sql 在SQL Server新增名為【#課程】資料表,這是一個區域暫存資料表,如下所示: CREATE TABLE #課程 ( 課程編號 char(5) , 名稱 varchar(30) , 學分 int )

7-6 暫存資料表的建立-範例2 SQL指令碼檔:Ch7-6-02.sql 在SQL Server新增名為【##教授】資料表,這是一個全域暫存資料表,如下所示: CREATE TABLE ##教授 ( 教授編號 char(4), 職稱 varchar(10), 科系 varchar(5), )

End