数据库系统概论 学习笔记(三)第一部分
来源:互联网 发布:python web源码 编辑:程序博客网 时间:2024/06/03 22:55
前言 SQL發展歷程
SQL的定義:Structured Query Language(結構化查詢語言),名為查詢,但其功能不僅僅是查詢。
SQL的提出:時間(1974年)、人物(Boyce、Chamberlin)
SQL應用的起源:時間(1975-1979)、人物(IBM的San Jose Research Laboratory)、作品(System r)
SQL標准的歷程:SQL-86、SQL-89、SQL-92、SQL-99(醞釀中)
3.1 SQL概述
3.1.1 特點
是一個綜合的、功能極強同時又簡捷易學的、集數據查詢(Data Query),數據操縱(Data Manipulation) ,數據定義(Data definition)和數據控制(Data Control)功能於一體的關係數據庫語言。
一、綜合統一
集DDL、DML、DCL的功能於一體,語言風格統一,可以獨立完成數據庫生命周期中的全部活動。
二、高度非過程化
講究“做什麼”,而無須知道“怎麼做”。
三、面向集合的操作方式
除了操作對象、查找結果是元組的集合,一次插入、刪除、更新操作的對象也可以是元組的集合。
四、以同一種語法結構提供兩種使用方式
既是自含式語言,又是嵌入式語言。
五、語言簡捷,易學易用
完成核心功能只用9個動詞,如下:數據查詢(Select)、數據定義(Create,Drop,Alter)、數據操縱(Insert,Update,Delete)、數據控制(Grant,Revoke)
3.1.2 SQL語言的基本概念
基本表:本身獨立存在的表。
視圖:從一個或幾個基本表導出的表,本身並不獨立存儲在數據庫中,是一個虛表。
3.2 數據定義
3.2.1 定義、刪除與修改基本表
Eno varChar(6) NOT NULL Primary Key, --主碼
Ename varchar(20) Unique, --Unique條件約束
Esex varChar(1) NOT NULL,
Eage Int,
Edept varChar(20) NULL,
Constraint pk_Eage CHECK (Eage>=18 and Eage<=90) --建立年齡的條件約束
)
Create Table Programs(
Pid varchar(8) Not Null Primary Key,
Pname varchar(40) Not Null Unique, --建立unique條件約束
Pdescription varchar(80) NULL --允許為空
)
Create Table Authority(
Eid varchar(6) Not NULL,
Pid varchar(8) Not Null,
Adefinition bit constraint df_pdefinition default (0), --默認為0
Adescription varchar(80) Null,
constraint pk_auth_Eid primary key clustered(Eid,Pid),
constraint fk_auth_Eid foreign key(Eid) Reference Employees(Eid) On Delete Cascade, --同步刪除
Constraint fk_auth_Pid Foreign Key(Pid) Reference Employees(Pid),
)
二、修改基本表
Alter Table Employees Add Ecome DateTime
--將年齡的數據類型改為半字長整數:
Alter Table Employees Modify Eage Smallint
--刪除職員姓名必須取唯一值的約束:
Alter Table Employees Drop Unique(Ename)
三、刪除基本表
/*說明:表一旦刪除,表中的數據、此表上建立的索引和視圖都將被刪除(但有的系統會保留視圖,如Oracle)。
注意:如果此時Programs與Authority中存在關聯記錄的話,刪除programs會由於兩者間的條件約束而引起錯誤,不能成功;而*/
Drop Table Employees
/*則不會引起這樣的問題,因為兩者間存在同步刪除的條件約束,所以會成功刪除Employees中的記錄並且會同步刪除Authority中的相關記錄。 */
3.2.2 建立與刪除索引
普通索引:Index;
聚集索引:Clustured Index,索引項的順序與表中記錄的物理順序一致的索引組織;
唯一索引:Unique Index,索引的每一個索引值只對應唯一的數據記錄
一、建立索引
索引可建立在一個表的一列或多列上,各列名之間用逗號分隔。列名後可用ASC或DESC指定排列次序。
Create Clustered Index EmpName ON Employees(Ename);
--在Authority表中按職員號升序和子程序號子程序建立唯一索引:
Create Unique Index Auth_no ON Authority(Eid ASC,Pid DESC);
二、刪除索引
Drop Index <索引名>
Drop Index EmpName;
鑒於上面建立的三個表中我們還沒有輸入數據,這裡就先看看數據更新部分,看如果向表中插入、修改和刪除數據。
職員表:Employees(Eid,Ename,Esex,Eage,Edept),主碼為Sno;
子程序表:programs(Pid,Pname,PDescription),主碼為Pid;
職員權限表:Authority(Eid,Pid,ADefinition,ADescription),主碼為(Eid,Pid)。
說明:
Eid:惟一標識職員表中每個職員的編號(統一6位字符),同時一個職員可有多個子程序的不同權限;
Ename:職員姓名,最長20個字符;
Esex:職員性別,一個字符,0表示男,1表示女;
Pid:惟一標識子程序表中的每個子程序的編號(統一8位字符),同時一個子程序可以由多個職員操作;
Pname:子程序名稱,最長40個字符;
Pdescription:子程序描述,最長80個字符,允許為空;
Eage:職員的年齡(整型,取值范圍為18到90);
Edefinition:權限定義,是否有權限(為0或1,1表示有權限),默認為0;
刪除職員表中職員時同時刪除職員權限表的相關記錄。
一、建立基本表
包括:定義表(Create Table,Drop Table,Alter Table)、定義視圖(Create View,Drop View)、定義引(Create Index,Drop Index) 。
從上面可以看出,標准SQL沒有提供修改視圖和修改索引定義的操作(而很多成熟的關係數據庫產品都對標准SQL進行了擴充,提供了視圖和索引定義的修改語句,如SQL Server所用的Transact-SQL)。
- 数据库系统概论 学习笔记(三)第一部分
- 数据库系统概论 学习笔记(三)第二部分
- 数据库系统概论 学习笔记(三)第三部分
- 数据库系统概论 学习笔记(三)第四部分
- 数据库系统概论 学习笔记(三)第五部分
- 数据库系统概论 学习笔记(三)第五部分
- 第一部分:数据库概论
- 数据库系统概论学习笔记(一)
- 数据库系统概论 学习笔记(二)
- 《数据库系统概论》学习笔记
- 数据库系统概论第五版学习笔记连接查询 第三章(三)
- 数据库系统概论学习笔记(三):SQL的简单应用之数据定义
- 【数据库系统概论】绪论----数据库系统概论(三)
- 数据库系统概论学习笔记(一):基本概念
- 数据库系统概论学习笔记(二):更多的概念
- 数据库系统概论学习笔记(一)---数据模型
- 数据库系统概论学习笔记1
- 数据库系统概论学习笔记----讲1
- 数据库系统概论学习笔记(一)
- 各种数据结构的完整实现之 静态数组实现循序表
- 对B/MS,C/MS架构现实的探索
- 开启vmware ubs服务
- 数据库系统概论 学习笔记(二)
- 数据库系统概论 学习笔记(三)第一部分
- 怎样查出SQLServer的性能瓶颈
- 数据库系统概论 学习笔记(三)第二部分
- Windows Phone 7 优秀开源项目概览
- RedHat 5.5 光盘作yum源
- JAVA 所谓的传值 与引用
- Oracle ASM 详解
- 数据库系统概论 学习笔记(三)第三部分
- 数据库系统概论 学习笔记(三)第四部分