題目:自己設計乙個小型資料庫。
個人比較喜歡看電影,於是用python爬了豆瓣top250的電影,做了乙個關於電影的小型資料庫,這裡只舉一小部分作為例子。
關係模式:
電影名稱關係模式
title(mno,mname)
電影評分關係模式
rating(mno,mscore)
電影標籤關係模式
tag(mno,mtag)
演員關係模式
actor(name,birth,star,blood)
建立資料表:
create table title(
mno char(10) primary key,
mname char(50) unique,
);create table rating(
mno char(10) primary key,
mscore float(10),
);create table tag(
mno char(10) primary key,
mtag char(20),
);
插入資料:
insert into title(mno,mname)
values
(1,'肖申克的救贖'),
(2,'霸王別姬'),
(3,'這個殺手不太冷'),
(4,'阿甘正傳'),
(5,'美麗人生'),
(6,'千與千尋'),
(7,'鐵達尼號'),
(8,'辛德勒的名單'),
(9,'盜夢空間'),
(10,'機械人總動員');
select * from title
insert into rating(mno,mscore)
values
(1,9.6),
(2,9.5),
(3,9.4),
(4,9.4),
(5,9.5),
(6,9.3),
(7,9.3),
(8,9.4),
(9,9.3),
(10,9.3);
insert into tag(mno,mtag)
values
(1,'犯罪'),
(2,'同性'),
(3,'犯罪'),
(4,'劇情'),
(5,'劇情'),
(6,'動畫'),
(7,'災難'),
(8,'劇情'),
(9,'科幻'),
(10,'動畫');
(1)選擇評分大於等於9.4的電影;
select title.mname,rating.mscore
from title,rating
where title.mno=rating.mno and mscore>=9.4;
(2)選擇分類為'劇情'的電影;
select title.mname,tag.mtag
from title,tag
where title.mno=tag.mno and mtag='劇情';
(3)更新第十部電影的分類為'科幻',評分為9.1;
update tag
set mtag='科幻'
where mno=10;
update rating
set mscore=9.1
where mno=10;
(4)選擇排名第10的電影;
select mname,mtag,mscore
from title,tag,rating
where title.mno=10 and tag.mno=10 and rating.mno=10;
(5)自然連線;
select title.mno,title.mname,rating.mscore,tag.mtag
from title,rating,tag
where title.mno=rating.mno and rating.mno=tag.mno;
(6)刪除排名第十的電影;
delete
from title
where title.mno=10;
delete
from rating
where rating.mno=10;
delete
from tag
where tag.mno=10;
select title.mno,title.mname,rating.mscore,tag.mtag
from title,rating,tag
where title.mno=rating.mno and rating.mno=tag.mno;
完整程式:
create database ***;
create table title(
mno char(10) primary key,
mname char(50) unique,
);create table rating(
mno char(10) primary key,
mscore float(10),
);create table tag(
mno char(10) primary key,
mtag char(20),
);insert into title(mno,mname)
values
(1,'肖申克的救贖'),
(2,'霸王別姬'),
(3,'這個殺手不太冷'),
(4,'阿甘正傳'),
(5,'美麗人生'),
(6,'千與千尋'),
(7,'鐵達尼號'),
(8,'辛德勒的名單'),
(9,'盜夢空間'),
(10,'機械人總動員');
select * from title
insert into rating(mno,mscore)
values
(1,9.6),
(2,9.5),
(3,9.4),
(4,9.4),
(5,9.5),
(6,9.3),
(7,9.3),
(8,9.4),
(9,9.3),
(10,9.3);
insert into tag(mno,mtag)
values
(1,'犯罪'),
(2,'同性'),
(3,'犯罪'),
(4,'劇情'),
(5,'劇情'),
(6,'動畫'),
(7,'災難'),
(8,'劇情'),
(9,'科幻'),
(10,'動畫');
--選擇評分大於等於9.4的電影
select title.mname,rating.mscore
from title,rating
where title.mno=rating.mno and mscore>=9.4;
--選擇分類為'劇情'的電影
select title.mname,tag.mtag
from title,tag
where title.mno=tag.mno and mtag='劇情';
--更新第十部電影的分類為'科幻',評分為9.1
update tag
set mtag='科幻'
where mno=10;
update rating
set mscore=9.1
where mno=10;
--選擇排名第10的電影
select mname,mtag,mscore
from title,tag,rating
where title.mno=10 and tag.mno=10 and rating.mno=10;
--自然連線
select title.mno,title.mname,rating.mscore,tag.mtag
from title,rating,tag
where title.mno=rating.mno and rating.mno=tag.mno;
--刪除排名第十的電影
delete
from title
where title.mno=10;
delete
from rating
where rating.mno=10;
delete
from tag
where tag.mno=10;
select title.mno,title.mname,rating.mscore,tag.mtag
from title,rating,tag
where title.mno=rating.mno and rating.mno=tag.mno;
資料庫(實驗2 資料庫表)
建立資料庫 建立資料庫資料檔案 create database testbase2 on name testbase2 data,filename d 張小山資料庫 lianxi2 testbase2 data.mdf size 5mb,maxsize 50mb,filegrowth 20 建立資料...
資料庫實驗2
1.dbms 登入帳號管理 create login sqluser with password pswdforuser 1 create login sqluser2 with password pswdforuser 123 create login uselessuser with passw...
資料庫 資料庫設計正規化
在關聯式資料庫中的關係是要滿足一定要求的,滿足不同程度要求為不同正規化,越高的正規化資料庫冗餘越小。但是有些時候一昧的追求正規化減少冗餘,反而會降低資料讀寫的效率,這個時候就要反正規化,利用空間來換時間。目前關聯式資料庫有六種正規化 第一正規化 1nf 第二正規化 2nf 第三正規化 3nf 巴斯 ...