0
点赞
收藏
分享

微信扫一扫

数据库的建立

开源GIS定制化开发方案 2022-04-07 阅读 49
sql

第一章 数据库的建立

提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加
例如:第一章 Python 机器学习入门之pandas的使用


提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录


前言

使用的SQL命令:CREATE DATABASE,USE,CREATE TABLE,INSERT等。

【实验内容】

1、
课本第一章的例题(学生数据库(Students_Mis_2020):4个数据表)
系表:Depts 学生表:Students
课程表:Couses 选课表:Reports

(1)建立数据库(CREATE DATABASE):Students_Mis_2020(存储文件存放在自己建立的文件夹内)
(2)调用(USE)数据库:Students_Mis_2020 use Students_Mis_2020
go

(3)分别建立4个数据表的表结构(CREATE TABLE):系(Depts),学生(Students),课程(Courses),选课(Reports)
(4)插入表数据(INSERT)

create table Depts(
Dno char(5) primary key,
Dname char(20) not null)
insert
into Depts(Dno,Dname) values('D01','自动化')
insert
into Depts(Dno,Dname) values('D02','计算机')
insert
into Depts(Dno,Dname) values('D03','数学')
insert
into Depts(Dno,Dname) values('D04','通信')
insert
into Depts(Dno,Dname) values('D05','电子')
select*from Depts;

create table Students(
Sno char(5) primary key,
Sname char(20) not null,
Ssex char(2),
Brithday Date,
Dno char(5),
constraint FK_Dno foreign key(Dno) references Depts)
insert 
into Students(Sno,Sname,Ssex,Brithday,Dno) values('S01','王建平','男','1995-10-12','D01')
insert 
into Students(Sno,Sname,Ssex,Brithday,Dno) values('S02','刘华','女','1997-08-21','D02')
insert 
into Students(Sno,Sname,Ssex,Brithday,Dno) values('S03','范进军','女','1998-02-11','D03')
insert 
into Students(Sno,Sname,Ssex,Brithday,Dno) values('S04','李伟','男','1996-12-22','D04')
insert 
into Students(Sno,Sname,Ssex,Brithday,Dno) values('S05','黄河','男','1999-10-31','D05')
insert 
into Students(Sno,Sname,Ssex,Brithday,Dno) values('S06','长江','男','1994-04-08','D06')
select*from Students;

create table Courses(
Cno char(6) primary key,
Cname char(20) not null,
Pre_Cno char(6),
Credit int)
insert
into Courses(Cno,Cname,Pre_Cno,Credit) values('C01','英语',' ','4')
insert
into Courses(Cno,Cname,Pre_Cno,Credit) values('C02','数据结构','C05','2')
insert
into Courses(Cno,Cname,Pre_Cno,Credit) values('C03','数据库','C02 ','2')
insert
into Courses(Cno,Cname,Pre_Cno,Credit) values('C04','DB_设计','C03','3')
insert
into Courses(Cno,Cname,Pre_Cno,Credit) values('C05','C++',' ','3')
insert
into Courses(Cno,Cname,Pre_Cno,Credit) values('C06','网络原理','C07 ','3')
insert
into Courses(Cno,Cname,Pre_Cno,Credit) values('C07','操作系统','C05','3')
select*from Courses;

create table Reports(
Sno char(5),
Cno char(6),
Grade int check(Grade>=0 and Grade<=100),primary key(Sno,Cno),
constraint Student_Report foreign key(Sno) references Students,
constraint Report_Course foreign key(Cno) references Courses)
insert
into Reports(Sno,Cno,Grade) values('S01','C01','92')
insert
into Reports(Sno,Cno,Grade) values('S02','C02','84')
insert
into Reports(Sno,Cno,Grade) values('S03','C03','90')
insert
into Reports(Sno,Cno,Grade) values('S04','C04','94')
insert
into Reports(Sno,Cno,Grade) values('S05','C05','82')
insert
into Reports(Sno,Cno,Grade) values('S06','C06','72')
insert
into Reports(Sno,Cno,Grade) values('S07','C07','90')
insert
into Reports(Sno,Cno,Grade) values('S08','C08','75')
select*from Reports;

(5)数据类型及完整性约束验证(难点是主外键约束)
回答以下几个问题:
(A)若先建立学生(Students)表,后建立系(Depts)表,行吗?为什么?
答:不行,对Students的Dno做外键约束,必须引用到Depts表的主键Dno,必须先建立关系(Depts)表后才能建立学生(Students)表。
(B)若先建立选课(Reports)表,后建立课程(Courses)表,行吗?为什么?
答:不行,对Reports的Cno做外键约束,必须引用到Courses表的主键Cno,必须先建立关系(Courses)表后才能建立选课(Reports)表。
(C)对INSERT,自己举几个违反约束条件(数据类型、主键约束、非空约束、外键约束、CHECK约束)的例子,并说明理由。

1、数据类型:

insert
into Students(Sno,Sname,Ssex,Brithday,Dno) values(‘S01’,‘王建平’,‘男’,‘一九九五十月十二日’,‘D01’)

理由:Brithday是Date类型,所插入字符串类型故而insert失败。

2、主键约束:主键不能为空。

insert
into Students(Sno,Sname,Ssex,Brithday,Dno) values(null,‘王建平’,‘男’,‘1995-10-12’,‘D01’)

3、非空约束:

主键不能重复。

4、外键约束:

C09不属于Report表,故而insert失败。
insert
into Reports(Sno,Cno,Grade) values(‘S01’,‘C09’,‘92’)

5、CHECK约束:

Check约束通过逻辑表达式来判断数据的有效性,用来限制输入一列或多列的值的范围,在列中更新数据时,所要输入的内容必须满足Check约束的条件,否则将无法正确输入。
Grade int check(Grade>=0 and Grade<=100)

(6)分离数据库、复制数据库存储文件、附加数据库 分离数据库:

复制数据库存储文件:

复制

将他们拷贝到U盘中,以便将其移到另一台机器上。
附加数据库:

点击添加按钮,从文件目录中找到你要附加的数据库的mdf文件,选择后点确定:

点确定后,若对象资源管理器中出现附加的数据库表示附加成功。

(7)将调试好的正确命令代码及数据库存储文件保存到自己的备份盘(方便下次实验使用)
2、课本中的习题1.3(零件供应数据库(SPJ_Mis__2020):4个数据表)
(说明:要求同上)
供应商表:P 零件表:P
工程项目表:J 零件供应表

【实验过程】

use SPJ_Mis__2020
go

create table S(
Sno char(5)primary key,
Sname char(20)not null,
Status int,
City char(20),
)

create table P(
Pno char(5)primary key,
Pname char(20)not null,
Color char(5),
Weight int
)

create table J(
Jno char(5)primary key,
Jname char(20)not null,
City char(20),
)

create table SPJ(
Sno char(5),
Pno char(5),
Jno char(5),
Qty int
constraint S_SPJ foreign key(Sno) references S,
constraint P_SPJ foreign key(Pno) references P,
constraint J_SPJ foreign key(Jno) references J) 

insert into S(Sno,Sname,Status,City) values('S1','利群','30','广州')
insert into S(Sno,Sname,Status,City) values('S2','同方','20','杭州')
insert into S(Sno,Sname,Status,City) values('S3','天远','60','北京')
insert into S(Sno,Sname,Status,City) values('S4','精诚','10','上海')
insert into S(Sno,Sname,Status,City) values('S5','华缘','80','重庆')
insert into S(Sno,Sname,Status,City) values('S6','弘治','50','太原')
select*from S;

insert into P(Pno,Pname,Color,Weight) values('P1','钉子','绿','34')
insert into P(Pno,Pname,Color,Weight) values('P2','螺丝','蓝','25')
insert into P(Pno,Pname,Color,Weight) values('P3','螺母','橙','12')
insert into P(Pno,Pname,Color,Weight) values('P4','螺栓','紫','27')
insert into P(Pno,Pname,Color,Weight) values('P5','螺钉','红','53')
insert into P(Pno,Pname,Color,Weight) values('P6','齿轮','绿','17')
insert into P(Pno,Pname,Color,Weight) values('P7','传送带','红','28')
select*from P;

insert into J(Jno,Jname,City) values('J1','一键','济南')
insert into J(Jno,Jname,City) values('J2','三汽','广州')
insert into J(Jno,Jname,City) values('J3','拉链产','杭州')
insert into J(Jno,Jname,City) values('J4','无线电厂','北京')
insert into J(Jno,Jname,City) values('J5','机床厂','上海')
insert into J(Jno,Jname,City) values('J6','螺钉厂','重庆')
insert into J(Jno,Jname,City) values('J7','机械厂','天津')
select*from J;

insert into SPJ(Sno,Pno,Jno,Qty) values('S1','P1','J2','250')
insert into SPJ(Sno,Pno,Jno,Qty) values('S1','P1','J3','340')
insert into SPJ(Sno,Pno,Jno,Qty) values('S1','P2','J5','120')
insert into SPJ(Sno,Pno,Jno,Qty) values('S1','P2','J6','270')
insert into SPJ(Sno,Pno,Jno,Qty) values('S1','P2','J7','530')
insert into SPJ(Sno,Pno,Jno,Qty) values('S2','P2','J1','170')
insert into SPJ(Sno,Pno,Jno,Qty) values('S2','P3','J2','260')
insert into SPJ(Sno,Pno,Jno,Qty) values('S2','P4','J3','100')
insert into SPJ(Sno,Pno,Jno,Qty) values('S2','P4','J4','120')
insert into SPJ(Sno,Pno,Jno,Qty) values('S2','P5','J5','560')
insert into SPJ(Sno,Pno,Jno,Qty) values('S2','P5','J7','310')
insert into SPJ(Sno,Pno,Jno,Qty) values('S2','P6','J6','200')
insert into SPJ(Sno,Pno,Jno,Qty) values('S3','P1','J1','400')
insert into SPJ(Sno,Pno,Jno,Qty) values('S3','P7','J1','300')
insert into SPJ(Sno,Pno,Jno,Qty) values('S4','P3','J2','401')
insert into SPJ(Sno,Pno,Jno,Qty) values('S4','P4','J3','330')
insert into SPJ(Sno,Pno,Jno,Qty) values('S4','P4','J4','650')
insert into SPJ(Sno,Pno,Jno,Qty) values('S4','P5','J4','150')
insert into SPJ(Sno,Pno,Jno,Qty) values('S5','P7','J5','230')
insert into SPJ(Sno,Pno,Jno,Qty) values('S5','P7','J7','280')
insert into SPJ(Sno,Pno,Jno,Qty) values('S6','P2','J2','350')
insert into SPJ(Sno,Pno,Jno,Qty) values('S6','P2','J3','420')
insert into SPJ(Sno,Pno,Jno,Qty) values('S6','P6','J1','310')
select*from SPJ;
举报

相关推荐

0 条评论