– i. 讀題,理解題,審題
– ii. 匯入資料【從excel,可以用命令方式,也可以用企業管理器嚮導方式】,分資料數,使用select len(***) as ***長度
select * from 學生及成績 order by 總評成績
select max(len(學號)) as 學號長度 from 學生及成績 --char(10)
select max(len(姓名)) as 姓名長度 from 學生及成績 --char(8) varchar(10)
select max(len(性別)) as 性別長度 from 學生及成績 --乙個字,可以不用 char(2)
select max(len(生源省)) as 生源省長度 from 學生及成績 --char(6) varchar(10)
select max(len(課程名稱)) as 課程名稱長度 from 學生及成績 --char(36) varchar(40)
select count(生源省) 人數,生源省 from 學生及成績
group by 生源省
order by 1 desc
select count(性別) 人數,性別 from 學生及成績
group by 性別
order by 1 desc
– iii. 分析出實體和實體之間的聯絡,找出實體的主碼
– iv. 得到相應的表:實體表和聯接表(不一定有,有的話一定就是三張表)
– v. 確定表的主鍵:唯一的可以做主鍵,如果沒有唯一的,則使用人工鍵【自增列,主鍵,系統自動管理】
create table 學生(
學號 char(10) primary key
,姓名 char(8) not null
,性別 char(2) not null default(『男』) check(性別=『男』 or 性別=『女』)
,生源省 char(6))go
create table 課程(
課程號 int primary key
,課程名稱 char(36) not null)go
create table 成績(
學號 char(10) references 學生(學號)
,課程號 int references 課程(課程號)
,總評成績 int check(總評成績》=0 and 總評成績<=100)
,primary key(學號,課程號))go
– (1)根據課程名稱查詢某門課程的全部成績;
create index ix_課程_課程名稱 on 課程(課程名稱)
go– (2)根據學生學號查詢某學生的全部課程成績;
–已經有主鍵索引,不需要再額外建立索引
– (3)根據學生姓名查詢某學生的全部課程成績;
create index ix_學生_姓名 on 學生(姓名)
go– (4)根據學生姓名和課程名稱查詢某學生的某門課程成績。
–已經都有索引存在,不用再額外建立了
– 匯入資料:
– 將excel表中的全部資料匯入到資料庫各表中。
select * from 學生及成績
select * from 學生
–匯入學生資料到學生表
insert into 學生
select distinct 學號,姓名,性別,生源省 from 學生及成績 order by 1
select * from 課程
–匯入課程資料到課程表
insert into 課程
select distinct 課程號,課程名稱 from 學生及成績 order by 1
select * from 成績
–匯入成績資料到成績表
insert into 成績
select 學號,課程號,總評成績 from 學生及成績 order by 1
– 建立名為「v_學生成績"的檢視:
– 要求開啟該查詢後,看到的內容與excel表中完全一致,包括:
– (1)各資料列間的前後順序及資料值;
– (2)總的資料行數;
– (3)資料行間的前後順序——excel表中資料行間的排序規則為:課程號公升序、成績降序、學號公升序。
create view v_學生成績
asselect top 100 percent
學生.學號,姓名,性別,生源省,課程.課程號,課程名稱,總評成績
from
學生join 成績 on 學生.學號=成績.學號
join 課程 on 成績.課程號=課程.課程號
order by
課程.課程號,總評成績 desc,學生.學號
goselect * from 學生及成績
select * from v_學生成績
– vi. 確定表上列的約束
– 1. 表自身必須有【主鍵】primary key,一般為簡單主鍵,聯接表可能為復合主鍵或是人工主鍵
– 2. 表之間必須有【外來鍵】,即關聯關係 foreign key,一般情況下是某個表的主鍵當成另乙個表的外來鍵,突出一列參考另一列資料
– 3. 某列上的預設值 default,如把生源省預設設為「四川」
– 4. 某列上的允不允許設為空 null/not null
– 5. 某列上的表示式約束 check(expression),如把性別約束在「男」和「女」兩個字上
– 6. 唯一約束與唯一索引【區別與聯絡】
– vii. 依據設計,建立庫,實現表
– 1. 庫名【題設給出】,表名【需自行設計,見名知義】,列名【題設給出】
– 2. 約束名【如果題設給出,則直接用;如果沒有給出,則參考這個格式:pk_表名_列名】
– viii. 清理,檢驗,備份,上交
drop table 學生及成績
go– 完全備份資料庫「學生成績」,備份檔案命名為「學生成績.bak」,將檔案「學生成績.bak」用winrar壓縮為「資料庫設計.rar」,上傳到指定的伺服器上。
– 單擊此處上傳「資料庫設計.rar」。
use master
gobackup database 學生成績 to disk=『d:\學生成績.bak』
godrop database 學生成績
go
資料庫設計與應用題 資料庫
每個使用者有 使用者編號 姓名 手機號 每個群有 編號 群名稱 每個帖子有 帖子編號 發帖時間 正文 每個群有唯一的使用者作為群主,乙個使用者可以擔任多個群的群主 每個帖子只屬於乙個群,每個帖子有唯一的發布者,每個群可以有多個帖子,每個使用者可以發布多個多個帖子 其中帶下劃線為實體的標識屬性。csd...
資料庫設計與應用題 資料庫技術
1 假定我們要為社交平台建立資料庫,儲存資訊如下 每個使用者有 使用者編號 姓名 手機號 每個群有 編號 群名稱 每個帖子有 帖子編號 發帖時間 正文 每個群有唯一的使用者作為群主,乙個使用者可以擔任多個群的群主 每個帖子只屬於乙個群,每個帖子有唯一的發布者,每個群可以有多個帖子,每個使用者可以發布...
mysql怎麼刷題 Mysql資料庫刷題1
1 查詢入職員工時間排名倒數第三的員工的所有資訊 create table employees emp no int 11 not null,birth date date not null,first name varchar 14 not null,last name varchar 16 no...