第一篇:數據庫總結
數據庫老師畫的重點
數據庫:數據庫是長期存儲在計算機內、有組織、可共享的大數據集合。數據庫操縱功能:查詢select、插入insert、刪除delete、修改update 數據庫系統的特點:1數據結構化2數據的共享高,冗余度低,易擴充3數據獨
立性高4數據由DBMS統一管理和控制
數據模型的組成要素:數據結構、數據操作、完整性約束 概念模型:要出大體,畫圖 信息世界中的基本概念————
1、實體:客觀存在并可以相互區別的事物稱為實體
2、屬性:實體所具有的某一特性
3、碼(key):唯一標識實體的屬性集稱為碼
4、域(domain):域是一組具有相同數據類型的集合
5、實體型(entity type):具有相同屬性的實體必然具有共同的特征和性質。用實體名
及屬性名集合來抽象和刻畫同類實體,稱為實體型。
6、實體集(entity set):同一類型的實體的集合
7、聯系:在現實世界中,事物內部以及事物之間是有聯系的,這些聯系在信息世界中
反應為實體(型)內部的聯系和實體(型)之間的聯系。實體內部的聯系通常是指
組成實體的各屬性之間的聯系;實體之間的聯系通常是指不同實體集之間的聯系
最常用的數據模型:
1、層次模型(Hierarchical Model)
2、網狀模型(Network Model)
3、關系模型(Relational Model)
4、面向對象模型(Object Oriented Model)
5、對象關系模型(Object Relational Model)其中層次模型和網狀模型統稱為格式化模型
數據庫系統的三級模式結構:
1、模式(scheme):模式也稱邏輯模式,是數據庫中全體數據的邏輯結構和特征的描述,是所有用戶的公共數據視圖。他是數據庫系統模式結構的中間層,既不設計涉及數據的物理存儲細節和硬件環境,也與具體的應用程
序、所使用的應用開發工具及高級程序設計語言無關。
2、外模式(external schema):外模式也稱為子模式(subschema)或用戶模式,他是數
據庫用戶(包括應用程序員和最終用戶)能看見和使用
的局部數據的邏輯結構和特征的描述,是數據庫用戶的數據視圖,是與某一應用有關的數據的邏輯表示。
3、內模式(internal scheme):內模式也稱存儲模式(storage schema),一個數據庫只有
一個內模式。他是數據庫物理結構和存儲方式的描述,是
數據在數據庫內部的表達方式。數據庫的二級映像功能與數據庫獨立性————
為了能夠在系統內部實現這3個抽象層次的聯系和轉換,數據庫管理系統在這三個模式之間提供了兩層映像:
·外模式/模式 映像 ·模式/內模式 映像
正是這兩層映像保證了數據庫系統中的數據能夠具有較高的邏輯獨立性和物理獨立性 關系(relation):D1*D2*D3··*Dn的子集叫做在域D1、D2、D3···Dn上的關系,表示
為R(D1、D2、D3···Dn)
這里的的R表示關系的名字,n是關系的目或度(degree)關系中每個元素是關系中的元組,通常用t表示 當n=1時,稱關系為單元關系(unary relation),或一元關系 當n=2時,稱該關系為二元關系(binary relation)
關系是笛卡爾積的有限子集,所以關系也是一個二維表,表的每行對應一個元組,表的每列對應一個域。由于域可以相同,為了加以區分,必須對每列起一個名字,稱為屬性(attribute)。n目關系必有n個屬性。
若關系中的某一屬性組的值能夠唯一的標識一個元組,則稱該屬性組為候選碼(candidate key)
若一個關系有多個候選碼,則選定其中一個為主碼(primary key)候選碼的諸屬性稱為主屬性(prime attribute)。不包含在任何候選碼中的屬性稱為非主屬性(non-prime attribute)或非碼屬性(non-key attribute)P46 沒有搞明白干嘛使得!!!!!!!!!!!
關系的三類完整性約束:實體完整性、參照完整性、用戶定義的完整性 實體完整性和參照完整性被稱作關系的兩個不變性
1、實體完整性(entity integrity):主碼中的屬性即主屬性不能取空值
2、參照完整性(referential integrity):
若屬性(或屬性組)F是基本關系R的外碼,它與基本關系S的的主碼K相對應(基
本關系R和S不一定是不同的關系),則對于R中每個元組在F上的值必須為:
·或者取空值(F的每個屬性值均為空值)·或者等于S中某個元組的主碼值
SQL(Structured Query Language),即結構化查詢語言,是關系數據庫的標準語言。SQL 的特點:
1、綜合統一
2、高度非過程化
3、面向集合的操作方式
4、以同一種語法結構提供多種使用方式
5、語言簡潔、易學易用 SQL的動詞:
數據查詢:select 數據定義:create、drop、alter(房間)修改表
數據操縱:insert、update(家具)修改數據、delete 數據控制:grant、revoke
繪制ER圖————
在ER圖中有如下四個成分:
矩形框:表示實體,在框中記入實體名。菱形框:表示聯系,在框中記入聯系名。
橢圓形框:表示實體或聯系的屬性,將屬性名記入框中。對于主屬性名,則在其名稱下
劃一下劃線。
連線:實體與屬性之間;實體與聯系之間;聯系與屬性之間用直線相連,并在直線上
標注聯系的類型。(對于一對一聯系,要在兩個實體連線方向各寫1; 對于一對
多聯系,要在一的一方寫1,多的一方寫N;對于多對多關系,則要在兩個實體
連線方向各寫N,M。
基本表是本身獨立存在的表,在SQL中一個關系就對應一個基本表。一個(或多個)基本表對應一個存儲文件,一個表可以帶若干索引,索引也可以放在存儲文件中。存儲文件的邏輯結構組成了關系數據庫的內模式。存儲文件的物理結構是任意的,對用戶是透明的。
視圖是從一個或幾個基本表導出的表。它本身不獨立存儲在數據庫中,即數據庫中只存放視圖的定義而不存放視圖對應的數據。這些數據仍存放在導出視圖的基本表中,因此視圖是一個虛表。視圖在概念上與基本表等同,用戶可以在視圖上再定義視圖。
基本表的定義、刪除與修改:
1、定義基本表:create table ***()
2、定義主鍵:Primary key == not null(中間不用連接符號)unique
3、定義外碼的語句:foreign key(某個字段)references 某表(某字段)
4、定義主碼語句:primary key(***,***)
5、修改基本表:alter table 某表名 add 列名<數據類型>[完整性約束]
drop <完整性約束名>(字段名)
alter column<列名><數據類型>
6、刪除表:drop table 表名[restrict | cascade級聯刪除]
7、建立索引:create [unique] [clustered] index 索引名
on 表名(列名[asc | desc],······)·clustered 表示是聚簇索引
·unique表明此索引的每一個索引值只對應唯一的數據記錄 ·用戶可以在最經常查詢的列上建立聚簇索引以提高查詢效率 ·在一個基本表上只能建立一個聚簇索引
·建立局促索引后,更新該索引列上的數據時,往往導致表中記
錄的物理順序的額變更,代價較大,因此對于經常更新的列不
宜建立聚簇索引
8、刪除索引:drop index <索引名>
上機的時候不太一樣:drop index 表名。索引名字
9、數據的查詢:
select [all | distinct] <目標列表達式>,······ from 表名或者視圖名,··· where 條件表達式
group by 列名1 [having 條件表達式] order by 列名2 [asc | desc] ·如果有group by 子句,則結果按“列名1”的值進行分組,該屬性列值相
等的元組為一個組。通常會在每組中作用聚集函數。如果group by 子句帶
having短語,則只有滿足指定條件的組才予以輸出。
·如果有order by 子句,則結果表按“列名2”的值的升序或降序排序 ·select Sname Name,‘Year of Birth:’Birth,2013-Sage Birthday,lower
(Sdept)Department
from Student
lower表示小寫
常用的查詢條件————
比
較:大于、等于、小于、不等于(< >/!=)、大于/小于等于、不小于、不大于、not+上述比較運算符
確定范圍:between and,not between and 確定集合:in,not in 字符匹配:like,not like 空
值:is null,is not null 多重條件(邏輯運算):and,or,not
例子————
·select Sname,Sage
from Student
where Sdept(not)in(‘cs’,‘ma’,‘is’)
字符匹配:[not] like ‘字符串’[escape‘換嗎字符’] 百分號表示任意長度、下劃線表
示任意單個字符 聚集函數————
count([distinct | all] *)
統計元組個數 count([distinct| all] 列名)
統計一列中值的個數 sum([distinct| all] 列名)
計算一列值的總和(此列必須是數值型)avg([distinct| all] 列名)
計算一列的平局值(此列必須是數值型)max([distinct| all] 列名)
求一列中的最大值 min ·如果指定distinct短語,則表示在計算時要取消指定列中的重復值。如果不指定distinct
短語或者指定all短語(all為缺省值),則表示不取消重復。
·注意在聚集函數遇到空值時,除count(*)外,都跳過空值而只處理非空值。·注意where子句中不能用聚集函數作為條件表達式
group by子句————
where 子句與having 短語的區別在于作用對象不同。Where 子句作用對象作用于基本表或試圖,從中選擇條件的元組。Having短語作用于組,從中選擇滿足條件的組。
例子:select Sno from SC
group by Sno having count(*)>3 查詢了選修3門以上課程的學生學號 鏈接查詢—————— 例子:
非自然鏈接
·select Student.*,SC.*
from Student,SC
Where Student.Sno=SC.Sno
自然鏈接
·select Student.Sno,Sname,Ssex,Sage,Sdept,Cno,Grade
from Student,SC
where Student.Sno=SC.Sno
自身鏈接
·select FIRST.Cno,SECOND.Cpno
from Course FIRST,Course SECOND
where FIRST.Cpno=SECOND.Cpno
外連接
·select Student.Sno,Sname,Sage,Sdept,Cno,Grade
from Student left outer join SC
on Student.Sno=SC.Sno ·左外鏈接列出左邊關系中所有的元組,右外連接列出右邊關系中的所有元組
嵌套查詢
·select Sname from Student
where Sno in(select Sno from SC where Cno=‘2’)
·找出每個學生超過他選修課程平均成績的課程號
Select Sno,Cno From SC x Where Grade >=(select avg(Grade)
From SC y Where y.Sno=x.Sno)
授權————
Grant 權限,····· On 對象類型 對象名,····· To 用戶,·····
[with grant option]只一句表示權限的傳遞
例子: ·Grant all privileges
On Student,Course
To U1,U2
·grant update(Sno),select
on Student
to u4
·revoke update(Sno)
on table Student
from u4
一個滿足BCNF的關系模式有:
·所有非主屬性對每一個碼都是完全函數依賴
3NF 編輯
3NF,即第三范式是要求一個數據庫表中不包含已在其它表中已包含的非主關鍵字信息。例如,存在一個部門信息表,其中每個部門有部門編號(dept_id)、部門名稱、部門簡介等信息。那么在員工信息表中列出部門編號后就不能再將部門名稱、部門簡介等與部門有關的信息再加入員工信息表中。如果不存在部門信息表,則根據第三范式(3NF)也應該構建它,否則就會有大量的數據冗余。簡而言之,第三范式就是屬性不依賴于其它非主屬性。滿足第三范式(3NF)必須先滿足第二范式(2NF)
2NF(第二范式)
第二范式(2NF)是在第一范式(1NF)的基礎上建立起來的,即滿足第二范式(2NF)必須先滿足第一范式(1NF)。第二范式(2NF)要求數據庫表中的每個實例或行必須可以被唯一地區分。為實現區分通常需要為表加上一個列,以存儲各個實例的唯一標識。如圖3-2 員工信息表中加上了員工編號(emp_id)列,因為每個員工的員工編號是唯一的,因此每個員工可以被唯一區分。這個惟一屬性列被稱為主關鍵字或主鍵、主碼。
第二篇:數據庫總結
數據庫總結:共三天的課程
數據庫的概念:數據庫是一組有序的數據的集合; 數據庫的作用:為了有效的管理數據; 數據類型:
一 字符串相關的類型:一般用于人名、大于2147483647(10位數)的數字、地址等字符信息
使用格式:字段名 char(存放字符的長度)
或者
字段名
varchar(存放字符的長度)Char:代表的是定長的字符串類型,定義了多長,就分配多長的存儲空間,只要不超過定義的長度,分配給char的空間長度就不會改變,余下的部分用空格代替;
Varchar:代表的是可變長度的字符串類型,定義的長度可以理解為是虛擬的空間,只要字符串的長度不超過定義的長度,那么varchar的分配空間長度就是字符串實際的長度,余下的部分自動消失; 二 數字相關的類型:一般用于工資、人數統計等方面; 使用格式:字段名
int/float/double 【此處不用定義字段的長度】 int :取值的范圍-2147483648~2147483647,后面可以設置主鍵及自增長;
float/double:用于帶有小數的數據定義 decimal:多用于金錢的數據 三 時間相關的數據類型:一般用于時間的統計,例如登錄時間、修改時間、退出時間等;
使用格式:字段名
date/time/datetime/timestamp 【此處不用定義字段的長度】,插入表的時候格式與字符串的插入格式一樣,都是用單引號插入
date:日期類型
格式:yyyy-MM-dd time:時間類型
格式:hh:mm:ss Datetime:日期時間
格式:yyyy-MM-dd hh:mm:ss Timestamp:時間戳
格式:yyyy-MM-dd hh:mm:ss 數據庫的操作:
一 查看所有數據庫:select databases;二 查看所有表:select tables;三 創建數據庫:create database 數據庫名稱;
use 數據庫名稱;
四 創建表:create table 表名(字段1
類型(長度)[約束], 字段2
類型(長度)[約束], 字段n
類型(長度)[約束])注:字段n的結尾處不需要用逗號分隔
五 刪除當前表/數據庫:drop table 表名/ 數據庫名;
六 向表中插入數據:insert into 表名(字段1,字段2,字段n)values(值1,值2,值n),(值1,值2,值n),(值1,值2,值n),(值1,值2,值n)...注:此處的插入數據可以用逗號隔開,想要插入幾條數據就插入幾個值。
七 查看當前表的值:select * from 表名
注:*是通配符,代表全部的意思,此處*還可以用表中的字段名代替,那么查看就是相應的字段名下的數據。
約束:
一 主鍵約束:primary key 代表的是唯
一、不重復,非空的約束 使用格式: 字段名
類型(長度)primary key 自增長:auto_increment 必須與主鍵約束一同使用,字段的類型是整型,插入數據的時候可以不用向設置自增長的字段添加數據,起始的默認數字是:1 二 唯一約束:unique 不可以重復,唯一 使用格式: 字段名
類型(長度)unique 注:空格是不可以作為字符串使用的,空格相當于null,如果向設置unique的字段內插入數據是存在【‘空格’、null、(‘’)】當中兩個或兩個以上的時候就會報錯【’null’是字符串,不是空】 三 非空約束:not null 插入數據時必須要為設置not null的字段插入數據,這個字段不能為空
使用格式: 字段名
類型(長度)not null 注:空格是不可以作為字符串使用的,空格相當于null,如果向設置not null的字段內插入數據是存在【‘空格’、null、(‘’)】當中一個或一個以上的時候就會報錯
四 默認約束:default 為字段設置默認值,當不為設置默認約束的字段插入數據是,系統自動將默認值賦予這個字段 使用格式: 字段名
類型(長度)default 值 五 檢查約束:check(檢查的內容)使用格式: 字段名
類型(長度)check(檢查的內容)注:在SQL語句中沒有實際的含義,但是需要會用
六 外鍵約束:foreign key 必須是另一個表的主鍵(唯一的),設置了外鍵的字段,受到關聯表中相應主鍵的字段的約束,當要為外鍵約束插入數據的時候,必須先為被關聯的表插入相應主鍵的數據;
使用格式: 創建表時候就設置外鍵約束
字段名
類型(長度),Foreign key(字段名)references 表名(對應主鍵的字段名)表已經創建完,插入外鍵約束
Alter table 表名 add constraint fk_f foreign key(要設置外鍵的字段名)references 被關聯的表名(被關聯的字段名);表的結構:
查看表結構:desc/describe 表名;修改表名:alter table 表名 rename 新表名 添加新字段:alter table 表名 add 字段名 類型(長度)修改字段:alter table 表名 change 舊字段 新字段 新字段類型(長度)刪除字段:alter table 表名 drop 字段名
記錄的操作:
一 插入記錄:insert into 表名(字段名1,字段名n)values(值1,值n)二 修改記錄:update 表名 set 字段名=值 where 條件
注:這里如果不加where條件,那么這個表的這個字段名下的數據全部賦值成為“值”
三 刪除記錄:delete from表名 where 條件
注:此處刪除的是表中的符合where條件的整條記錄 注意:使用delete和update的時候要千萬注意,必須要寫where條件語句,要不然就會將當前表中的所有數據改變,在想改回來的話會非常非常費勁!!!
四 查詢記錄:select 字段名1,字段名n from 表名 where 查詢條件 查詢去掉重復的值:關鍵字 distinct 格式:select distinct 字段名1,字段名n from 表名命別名/賦值表: 關鍵字 as 命別名:select 字段名 as ‘自定義名’
from 表名 賦值表:create table 新表名 as select * from 舊表名 3 查詢條件語句的范圍:in(等值判斷)/not in select 字段名1,字段名n from 表名 where 字段名
in/not in(值1,值n)4 模糊查詢:like
匹配標識符:’_’代表一個字符、%代表多個字符
Select 字段名 from 表名 where 字段名 like ‘_sth%’ 注:like后面的判斷值如果是數字的話要加單引號,例如想要查詢的條件是12345,可以這樣寫:’%3%’,單引號必須加 5 區間查詢:limit m,n
查詢從第m個記錄開始,一共n條記錄,這里的m指的是類似Java數組里的下標,計數從0開始
Limit m
查詢從頭開始的一共m條記錄
Select */字段名 from 表名 limit m,n 6 查詢值是否存在某段區間內:between 最大值 and 最小值(int 型的最大值、最小值)Select 字段名1,字段名n from 表名
where 字段名 between 最大值
and 最小值:
注意這里面的條件含有等于最大值和等于最小值
字段名 between 最大值 and 最小值= 字段名>=最小值 and 字段名<=最大值
邏輯運算符在此處可通用:<
<=
>
>=
=
!=
集合函數: 使用方法與Java中的方法的使用類似,注意的是函數名后面緊跟著(),中間不能有空格 一 符合條件的記錄的個數:countil
Select count(字段名)from 表名
where 查詢條件 二 求某個字段的值的總和:sum Select sum(字段名)from 表名
where 查詢條件 三 求某個字段的值的平均值:avg Select avg(字段名)from 表名
where 查詢條件 四 求某個字段的值的最大值:max Select max(字段名)from 表名
where 查詢條件 五 求某個字段的值的最大值:min Select min(字段名)from 表名
where 查詢條件
多表查詢:
笛卡爾積:select(字段1,字段n)from 表1,表n 自己想要的查詢(找到所有被查詢的表的相同的字段): Select(a.字段1,a.字段n,b.字段1,b.字段n)from 表名 as a,表名 as b where a.字段名=b.字段名;
聯合查詢:
左連接:select 字段名/* from 左表名
left join 右表名
on 左表名.字段名=右表名.字段名
查詢結果:左表全部顯示,右表與左表相同的字段名的部分顯示 右連接:select 字段名/* from 左表名
right join 右表名
on 左表名.字段名=右表名.字段名
查詢結果:右表全部顯示,左表與右表相同的字段名的部分顯示 內連接:select 字段名/* from 左表名
inner join 右表名
on 左表名.字段名=右表名.字段名
查詢結果:只有左表與右表相同的部分才顯示
全連接:select 字段名/* from 左表名
full join 右表名 查詢結果:’*’的結果是笛卡爾積
‘字段名’的結果是這個字段名下的笛卡爾積
函數:函數名與小括號之間不能有空格,字符串必須用單引號圈起來
一 求字符串長度:length Select
length(字符串)二 字符串的截取:substring(字符串,m)/(字符串,m,n)Select
substring(字符串,m)/(字符串,m,n)三 小寫轉大寫:upper Select
upper(字符串)四 大寫轉小寫:lower Select
lower(字符串)五 加密:MD5 Select
MD5(字符串)六 顯示現在的時間:now Select
now()
迷糊中: group by
order by 子查詢
第三篇:數據庫課程設計總結
課 程 設 計 報 告
課程名稱數據庫課程設計—總結題目個人CD盤管理系統_________________________________
指導教師設計起止日期
學院計算機學院
系別專業計算機科學與技術
學生姓名班級/學號 成績___________________
課程設計總結:
經過近2個月的設計,CD盤管理系統基本開發完成,該系統是一個簡單的關于數據庫與現實相結合的管理系統,它集各種功能用于一身,在系統的各個模塊中體現了它的功能,針對音樂愛好者的需求方面進行設計的,方便了用戶的一些信息操作,為音樂愛好者節省了管理成本,提高管理效率。該系統的界面簡單大方,非常方便用戶的操作,同時,也為以后系統的擴展留出了足夠的空間。
在此次設計中后臺主要采用了servlet和JavaBean技術,數據庫則加入了存儲過程和觸發器的控制。我進一步理解了servlet和JavaBean的工作機制和所提供的便利,也感受到了存儲過程和觸發器所帶來的方便。
servlet具有以下的優勢:方便Servlet提供了大量的實用工具例程,例如自動地解析和解碼HTML表單數據、讀取和設置HTTP頭、處理Cookie、跟蹤會話狀態等。* 功能強大在Servlet中,許多使用傳統CGI程序很難完成的任務都可以輕松地完成。例如,Servlet能夠直接和Web服務器交互,而普通的CGI程序不能。Servlet還能夠在各個程序之間共享數據,使得數據庫連接池之類的功能很容易實現。
2可移植性好Servlet用Java編寫,Servlet API具有完善的標準。因此,為IPlanet
Enterprise Server寫的Servlet無需任何實質上的改動即可移植到Apache、Microsoft IIS或者WebStar。幾乎所有的主流服務器都直接或通過插件支持Servlet。3 節省投資不僅有許多廉價甚至免費的Web服務器可供個人或小規模網站使用,而且對于現有的服務器,如果它不支持Servlet的話,要加上這部分功能也往往是免費的(或只需要極少的投資)。
JavaBean具有以下特點:
用戶可以使用JavaBean將功能、處理、值、數據庫訪問和其他任何可以用java代碼創造的對象進行打包,并且其他的開發者可以通過內部的JSP頁面、Servlet、其他JavaBean、applet程序或者應用來使用這些對象。用戶可以認為JavaBean提供了一種隨時隨地的復制和粘貼的功能,而不用關心任何改變。JavaBean可分為兩種:一種是有用戶界面(UI,User Interface)的JavaBean;還有一種是沒有用戶界面,主要負責處理事務(如數據運算,操縱數據庫)的JavaBean。JSP通常訪問的是后一種JavaBean。
存儲過程的能力大大增強了SQL語言的功能和靈活性。存儲過程可以用流控制語
句編寫,有很強的靈活性,可以完成復雜的判斷和較復雜的運算。可保證數據的安全性和完整性。通過存儲過程可以使沒有權限的用戶在控制之下間接地存取數據庫,從而保證數據的安全。通過存儲過程可以使相關的動作在一起發生,從而可以維護數據庫的完整性。在運行存儲過程前,數據庫已對其進行了語法和句法分析,并給出了優化執行方案。這種已經編譯好的過程可極大地改善SQL語句的性能。由于執行SQL語句的大部分工作已經完成,所以存儲過程能以極快的速度執行。可以降低網絡的通信量。使體現企業規則的運算程序放入數據庫服務器中,以便集中控制。當企業規則發生變化時在服務器中改變存儲過程即可,無須修改任何應用程序。企業規則的特點是要經常變化,如果把體現企業規則的運算程序放入應用程序中,則當企業規則發生變化時,就需要修改應用程序工作量非常之大(修改、發行和安裝應用程序)。如果把體現企業規則的運算放入存儲過程中,則當企業規則發生變化時,只要修改存儲過程就可以了,應用程序無須任何變化。
觸發器可通過數據庫中的相關表實現級聯更改;不過,通過級聯引用完整性約束可以更有效地執行這些更改。觸發器可以強制比用 CHECK 約束定義的約束更為復雜的約束。與 CHECK 約束不同,觸發器可以引用其它表中的列。例如,觸發器可以使用另一個表中的 SELECT 比較插入或更新的數據,以及執行其它操作,如修改數據或顯示用戶定義錯誤信息。觸發器也可以評估數據修改前后的表狀態,并根據其差異采取對策。一個表中的多個同類觸發器(INSERT、UPDATE 或 DELETE)允許采取多個不同的對策以響應同一個修改語句。
在本系統的設計過程中,首先通過對CD盤管理系統功能進行詳細的分析,得到系統功能模塊圖,然后根據系統功能分析,圍繞它進行系統的設計,介紹開發環境和開發技術,再可行性分析、功能和性能需求,然后得出系統業務流圖、數據流圖、E-R圖,并進行數據庫的設計和模塊化的實現。由于之前有稍微接觸過Java Web方面的知識,再加上利用自己的課余時間的學習,做起來感覺沒太多的困難。經過這次系統設計過程,加深了我對數據庫操作的認識,更加熟悉了Java Web的構架,如servlet,struts,SOA等等。完成本設計后,才知道平日里書本上所學的東西太少,僅是些概念知識,沒運用到實踐中來,知識是無法得到升華的。只有不斷地學習才能夠跟上科技和知識的發展步伐。
第四篇:數據庫課程總結
數據庫課程總結
軟件0701
07301024
楊彥妍
在學習數據庫之前一直覺得數據庫沒有什么深入研究的價值,覺得無非是將數據存起來進行增刪改查的操作就是了。直到真正接觸到了數據庫這門課才真地發現了這里面得奧妙和值得專研的價值。不知不覺中已經過了將近一個學期,這是第一次接觸王老師的課堂,但是老師清晰地講解讓我這一個學期收益匪淺。
數據已然成為當今信息社會的一種極為重要的資源,各個部門無時無刻不在于數據打交道,對于這些大量數據的處理使得數據庫應運而生。作為學習軟件的我們對于數據庫的學習更加是必不可少。
雖然對于SQL語言這些東西以前基本上沒有太多的接觸,但是清晰易懂語言的模式并沒有對學習造成太大的困擾。而實際上這學期的雙語教學的確讓我的學習變的有些吃力,不是因為讀不懂,而是讀過之后理解僅僅停留在字面意思上,不能很透徹地理解到位。但是老師課堂上深入淺出的講解,和對于課件的翻譯讓我對此有了很大的彌補。對于數據庫的理解已經不僅僅是知道增刪改查這些簡單的基本操作,知道表之間的連接,一些運算,一些模式等等。實際上,對于數據庫進行建立與操作是十分復雜的,中間要經過很多考慮對于現實的結合,對于軟硬件的要求都需要考慮在內。
從某種意義上看來說,對于數據庫的學習不僅僅改變了我對與數據庫的看法,同時也改變了我對于程序設計的看法。從前簡單的看到就做是不科學的,應該經過規劃和研究分析才能上手。于此同時,老師留的項目其實是對于我們的所學習知識的一種檢驗與擴充。因為項目結合很多的其他知識,同時做項目的過程是一個對于知識的重新審視與鞏固的過程。
總地來說,這學期的數據庫課程讓我覺得有所收獲,有所得。加強了對于課程本身的理解,同時也知道了更廣的知識面。其實感受最深的還是老師的講課方式,很詳細很透徹,不懂的地方老師還會很耐心地講解,總很和藹,問問題的時候也不會緊張。
關于意見、建議,總體上來說,老師的方法很好。如果真說意見,建議的話,我覺得針對雙語教學,上課讓同學翻譯一些要點是必要的。因為本身大家對于英語的理解就不容易透徹,再加上一部分同學的英語水平并不是很好,所以容易造成誤解。如果自己翻譯,老師更正的話,會讓我們的記憶更加深刻,理解更加透徹,掌握更加牢固。另一點就是我覺得可以減少對于PPT 的依賴。因為每次上課的時候,看課件有時候并不是很清楚,但是當老師在黑板上演示過后就覺得特別的理解,很清晰,感覺線索被理順了,明了了。
這就是我對于今年著學期上數據庫的一些感受,真的很希望以后還有機會選王老師的課。
第五篇:數據庫復習總結
數據管理技術的發展經歷了3個階段:人工管理階段、文件系統階段、數據庫管理階段。數據庫的三級模式由[模式]、[外模式]、[內模式]組成。(模式又叫概念模式、邏輯模式,外模式又叫子模式、用戶模式,內模式又叫存儲模式)外模式/模式映像反映了數據的邏輯獨立性,模式/內模式映像反映了數據的物理獨立性 數據模型由數據結構、數據操作、和完整性約束三要素組成
關系模型是第二代數據庫的主要特征,其結構比較簡單,數據本身以二維表形式進行存儲,表之間的數據聯系是通過一個表的碼與另一個表的碼的連接來實現的。數據邏輯獨立性是指模式改變,外模式和應用程序不變。物理獨立性是指內模式改變,模式不變
數據庫系統中,用概念模式(即模式)描述全部數據的整體邏輯結構
數據庫系統中用戶使用的數據視圖用外模式描述,它是用戶與數據庫系統的接口 ∏是投影運算,倒寫的6字是選擇運算 笛卡爾積重點看一下P27中間部分舉的例子 記錄是字段的有序集合
字段:標記實體屬性的命名單位稱為字段如學生有學號、姓名、年齡、性別等字段 元祖:二維表中的行即記錄值稱為元祖
增刪改查語句對應的關鍵字分別為INSERT、DELETE、UPDATE、SELECT 修改表的結構使用的是ALTER TABLE語句添加一列用ADD關鍵字、修改一列用ALTER COLUMN 刪除一列用DROP COLUMN 如ALTER TABLE student ADD 身份證號 VARCHAR(18);表示修改student表的結構,在其中添加身份證號一列(主)數據文件的擴展名為.mdf ,日志文件的擴展名是.ldf 開啟事務:BEGIN TRANSATION 提交事務:COMMIT TRANSACTION 回滾事務:ROLLBACK TRANSACTION 主鍵:PRIMARY KEY 外鍵:FOREIGN KEY 實體之間的聯系有1:
1、1:m、m:n,即1對1,一對多、多對多 聚合函數:
SUM:求和 MAX:求最大值 COUNT:計數 AVG:求平均值 GRANT:授權 REVOKE:收回權限 CONSTRAINT:約束
數據庫設計的步驟:需求分析階段、概念設計階段、邏輯設計階段、物理設計階段、數據庫實現階段、數據庫的運行與維護階段
事務具有四個特征原子性、一致性、隔離性、持久性 P116參考答案:
1. 題干:數據庫中有四張表客戶表:Customers、代理人表Agents、產品表Products和訂單表Orders;
其中客戶表Customers各屬性如下:
Cid 客戶編號、Cname客戶名、City客戶所在城市 代理人表Agents各如下屬性
Aid代理人編號、Aname代理人姓名、City代理人所在城市 產品表Products中各屬性如下
Pid產品編號、Pname產品名稱、Quantity產品銷售數量、Price產品單價 訂單表Orders表中各屬性如下 Ord_no訂單號、Month訂單月份,Cid客戶編號、Aid代理人編號、Pid產品編號、Qty訂貨數量、Amount訂貨總金額;
根據以上四個表編寫存儲過程實現如下要求:
①給指定產品編號的單價增加0.5元
CREATE PROCEDURE pro_update_products @pid CHAR(10)AS UPDATE products SET price=price+0.5 WHERE pid=@pid GO ②插入一個新的產品記錄到產品表Products中
CREATE PROCEDURE pro_insert_products @pid CHAR(10), @pname VARCHAR(30), @quantity INT, @price FLOAT AS INSERT INTO products VALUES(@pid,@pname,@quantity,@price)GO
③查詢某客戶通過某代理訂購產品的訂貨總量 CREATE PROCEDURE pro_Query_Amount @cname VARCHAR(20), @aname VARCHA(20)AS SELECT Amount FROM Customers c,Orders o,Agents a WHERE c.cid=o.cid AND a.aid=o.aid AND c.cname=@cname AND a.anane=@aname GO
2.根據第一題的四個表用觸發器實現以下操作
①當向產品表products插入數據時,規定產品單價不得低于0.5元,若低于0.5元則統一調整為0.5元,同時提示用戶“產品單價不得低于0.5元” CREATE TRIGGER tri_products ON products FOR INSERT AS DECLARE @pid CHAR(10),@price FLOAT SELECT @pid=pid,@price=price FROM INSERTED IF @price<0.5 BEGIN UPDATE products SET price=0.5 WHERE pid=@pid PRINT ‘產品單價不得低于0.5元’ END GO
②當訂單表Orders中的訂貨數量有變動時,觸發器自動修改該項訂單的訂貨總金額Amount CREATE TRIGGER tri_orders ON Orders FOR UPDATE AS DECLARE @ord_no CHAR(10),@pid CHAR(10),@Qty INT,@price FLOAT IF UPDATE(Qty)BEGIN SELECT @ord_no,@pid=pid,@Qty=Qty FROM INSERTED SELECT @price=price FROM products WHERE pid=@pid UPDATE Orders SET Amount=@price*@Qty WHERE Ord_no=@ord_NO END GO
第四章第2題的參考答案P91 設有三個關系
S(S#,SNAME,SEX,AGE)SC(S#,C#,GRADE)C(C#,CNAME,TEACHER)用select語句完成下列查詢
①檢索LIU老師所受課程的課程號和課程名
SELECT C#,CNAME FROM C WHERE TEACHER=’LIU’;
②檢索年齡大于23歲的男同學的學號和姓名
SELECT S#,SNAME FROM S WHERE SEX=’男’ AND AGE>23;
③檢索學號為S3的學生所學課程的課程名與授課老師名
SELECT CNAME,TEACHER FROM SC,C WHERE SC.C#=C.C# AND SC.S#=’S3’;
④檢索至少選修LIU老師所受課程中一門課程的女學生姓名
SELECT DISTINCT SNAME FROM S,SC WHERE S.SEX=’女’ AND S.S#=SC.S# AND SC.C# =ANY(SELECT C# FROM C WHERE TEACHER=’LIU’); ⑤檢索WANG同學不學課程的課程號
SELECT C# FROM C WHERE C# NOT IN(SELECT C# FROM SC,S WHERE SC.S#=C.C# AND S.SNAME=’WANG’);
⑥檢索至少選修兩門課的學生學號
SELECT S# FROM SC GROUP BY S# HAVING COUNT(C#)>=2; ⑦檢索全部學生都選修的課程的課程號和課程名
SELECT C#,CNAME FROM C WHERE C# IN(SELECT C# FROM SC WHERE S#=ALL(SELECT S# FROM S))⑧檢索選修課程包含LIU老師所受全部課程的學生學號
SELECT S# FROM SC WHERE C# =ALL(SELECT C# FROM C WHERE TEACHER=’LIU’)