數(shù)據(jù)庫(kù)設(shè)計(jì)1.數(shù)據(jù)庫(kù)設(shè)計(jì)的步驟 第一步:需求分析(收集信息) 第二步:繪制 E-R 圖 (標(biāo)示實(shí)體 ,,找到實(shí)體的屬性 第三步:將 E-R 圖轉(zhuǎn)換成數(shù)據(jù)庫(kù)模型圖 第四步:將數(shù)據(jù)庫(kù)模型圖轉(zhuǎn)換成數(shù)據(jù)表 2.如何繪制 E-R 圖 3.如何繪制數(shù)據(jù)庫(kù)模型圖 4.三大范式規(guī)范數(shù)據(jù)庫(kù)設(shè)計(jì) 5.T-SQL語(yǔ)句回顧(其中[]中的表示可省略) 1.添加數(shù)據(jù) insert [into] 表名 (列1,列2,...) values(值1,值2,...) 2.修改數(shù)據(jù) update 表名 set 列1=值1,列2=值2,... where (條件) 3.查詢(xún)數(shù)據(jù) select 列1,列2,... from 表名 where (條件) order by 列名 4.刪除數(shù)據(jù) delete from 表名 where (條件) 6.使用SQL語(yǔ)句創(chuàng)建和刪除數(shù)據(jù)庫(kù) 1.創(chuàng)建數(shù)據(jù)庫(kù)([]表示可以省略,{}表示必需的部分,<>表示解釋說(shuō)明) 語(yǔ)法: create detabase 數(shù)據(jù)庫(kù)名 on [primary] ( <數(shù)據(jù)文件參數(shù)> [,......n] [<文件組參數(shù)>] ) [log on] ( {<日志文件參數(shù)> [,......n]} ) 數(shù)據(jù)文件的具體參數(shù)如下: ([name=邏輯文件名] filename=物理文件名 [,size=大小] [,maxsize={最大容量|unlimited}] [,filengrowth=增長(zhǎng)量]) [,.....n] 文件組的具體參數(shù)如下: filegroup 文件組名 <文件參數(shù)> [,......n] eg: create database stuDB
on primary -- 默認(rèn)就屬于primary文件組,可省略(/*--數(shù)據(jù)文件的具體描述--*/
name='stuDB_data', -- 主數(shù)據(jù)文件的邏輯名稱(chēng)
filename='D:\stuDB_data.mdf', -- 主數(shù)據(jù)文件的物理名稱(chēng)
size=5mb, --主數(shù)據(jù)文件的初始大小
maxsize=100mb, -- 主數(shù)據(jù)文件增長(zhǎng)的最大值
filegrowth=15%--主數(shù)據(jù)文件的增長(zhǎng)率)log on(/*--日志文件的具體描述,各參數(shù)含義同上--*/
name='stuDB_log',
filename='D:\stuDB_log.ldf',
size=2mb,
filegrowth=1mb
) 2.刪除數(shù)據(jù)庫(kù) 語(yǔ)法: drop database 數(shù)據(jù)庫(kù)名 那么如何刪除這個(gè)數(shù)據(jù)庫(kù)呢,,SQL Server將數(shù)據(jù)庫(kù)的清單存放在master系統(tǒng)數(shù)據(jù)庫(kù)的sysdatabases表中,只需要查看該表是否存在于該數(shù)據(jù)庫(kù)中就可以,這樣在創(chuàng)建數(shù)據(jù)庫(kù)的時(shí)候也可以先判斷,再創(chuàng)建 了,,語(yǔ)句如下: use master -- 設(shè)置當(dāng)前數(shù)據(jù)庫(kù)為master,以便訪問(wèn)sysdatabases表goif exists(select * from sysdatabases where name='stuDB')drop database stuDBgo 7.使用SQL語(yǔ)句創(chuàng)建和刪除表 1.回顧一下我們SQL Server 中的數(shù)據(jù)類(lèi)型(轉(zhuǎn)載自http://blog.sina.com.cn/zhanshiqi) 第一大類(lèi):整數(shù)數(shù)據(jù) bit:bit數(shù)據(jù)類(lèi)型代表0,1或NULL,就是表示true,false.占用1byte.
numeric:表示的數(shù)字可以達(dá)到38位,存儲(chǔ)數(shù)據(jù)時(shí)所用的字節(jié)數(shù)目會(huì)隨著使用權(quán)用位數(shù)的多少變化. 第三大類(lèi):近似浮點(diǎn)數(shù)值數(shù)據(jù) float:用8個(gè)字節(jié)來(lái)存儲(chǔ)數(shù)據(jù).最多可為53位.范圍為:-1.79E+308至1.79E+308. 第四大類(lèi):日期時(shí)間數(shù)據(jù) datatime:表示時(shí)間范圍可以表示從1753/1/1至9999/12/31,時(shí)間可以表示到3.33/1000秒.使用8個(gè)字節(jié). 第五大類(lèi):字符串?dāng)?shù)據(jù) char:長(zhǎng)度是設(shè)定的,最短為1字節(jié),最長(zhǎng)為8000個(gè)字節(jié).不足的長(zhǎng)度會(huì)用空白補(bǔ)上. 第六大類(lèi):Unincode字符串?dāng)?shù)據(jù) nchar:長(zhǎng)度是設(shè)定的,最短為1字節(jié),最長(zhǎng)為4000個(gè)字節(jié).不足的長(zhǎng)度會(huì)用空白補(bǔ)上.儲(chǔ)存一個(gè)字符需要2個(gè)字節(jié). 第七大類(lèi):貨幣數(shù)據(jù)類(lèi)型 money:記錄金額范圍為:-92233720368577.5808至92233720368577.5807.需要8 個(gè)字節(jié). 第八大類(lèi):標(biāo)記數(shù)據(jù) timestamp:該數(shù)據(jù)類(lèi)型在每一個(gè)表中是唯一的!當(dāng)表中的一個(gè)記錄更改時(shí),該記錄的timestamp字段會(huì)自動(dòng)更新. 第九大類(lèi):二進(jìn)制碼字符串?dāng)?shù)據(jù) binary:固定長(zhǎng)度的二進(jìn)制碼字符串字段,最短為1,最長(zhǎng)為8000. 2.創(chuàng)建表 語(yǔ)法: create table 表名 ( 列1 數(shù)據(jù)類(lèi)型 列的特征, 列2 數(shù)據(jù)類(lèi)型 列的特征, ...... ) **:數(shù)據(jù)庫(kù)中表的清單存放在數(shù)據(jù)庫(kù)的系統(tǒng)表sysobjects中. use StuDBgo 其中,,列屬性"identity(起始值,遞增量)" 表示"ExamNo"列為自動(dòng)編號(hào), 也稱(chēng)為標(biāo)識(shí)列 3.刪除表 語(yǔ)法: drop table 表名 use StuDBgo if exists(select * from sysobjects where name='stuMarks')drop table stuMarks 8.使用SQL語(yǔ)句創(chuàng)建和刪除約束 1.回顧一下SQL Server 中有關(guān)數(shù)據(jù)完整性 (1)實(shí)體完整性:唯一確定表中一行記錄 (2)域完整性:表中特定數(shù)據(jù)的有效性,以保不會(huì)輸入無(wú)效的數(shù)值 (3)引用完整性:插入或刪除記錄時(shí),維護(hù)表之間定義的關(guān)系 2.添加約束 語(yǔ)法: alter table 表名 add constraint 約束名 約束類(lèi)型 具體的約束說(shuō)明 上述語(yǔ)法表示修改某個(gè)表,并在其中添加某個(gè)約束.其中,約束名的命名規(guī)則推薦采用"約束類(lèi)型_約束列的形式 eg: 為學(xué)號(hào)(StudentNo)添加主鍵約束,約束名推薦取名"PK_StudentNo; ...唯一約束=>"UQ_IdentityCard; ...默認(rèn)約束=>"DF_Address; ...檢查約束=>"CK_BornDate; ...外鍵約束=>"FK_StudentNo. --添加外鍵約束(主表Student和Result建立關(guān)系,關(guān)聯(lián)StudentNo)alter table Resultadd constraint FK_StudentNo foreign key(StudentNo) references Student(StudentNo)Go --添加主鍵約束(將StudentNo作為主鍵)alter table Studentadd constraint PK_StudentNo primary key (Student)--添加唯一約束(身份證)alter table Studentadd constraint UQ_IdentityCard unique (IdentityCard)--添加默認(rèn)約束(不填地址,則默認(rèn)為"地址不詳")alter table Studentadd constraint DF_Address default('地址不詳') for Address--添加檢查約束alter table Studentadd constraint CK_BornDate ckeck (BornDate>='1980-01-01') 3.刪除約束 語(yǔ)法: alter table 表名 drop constraint 約束名 eg: --Student表中地址列默認(rèn)約束的語(yǔ)句如下alter table Studentdrop constraint DF_Address |
|
來(lái)自: 時(shí)間劇毒 > 《學(xué)習(xí)資料_SQL》