目录
数据库中的相关定义
数据库管理的三个阶段
创建学生管理数据库
删除数据库
数据库的分离、附加
在数据库中创建数据表
在数据表中添加数据
数据库中的相关定义
数据:是数据库中存储的基本对象
数据的含义称为数据的语义,数据与其语义是不可分的
数据库:是长期存储在计算机内、有组织的、可共享的大量数据的集合
数据库系统的基本特征:
(a)数据按一定的数据模型组织、描述和存储
(b) 实现用户共享、冗余度较小、易扩展
(c)数据独立性高( 独立性高主要体现在物理独立性和逻辑独立性 )
(1) 物理独立性:数据的物理结构(包括存储结构、存取方式等)的改变,如存储设备的更换、物理存储的更换、存取方式改变等都不能影响数据库的逻辑结构,从而不致引起应用程序的变化
(2)逻辑独立性:数据库总体逻辑结构的改变,如修改数据库模式、增加新的数据类型、改变数据间联系等,不需要相应修改应用程序,着 就是数据的逻辑独立性
数据库管理系统:位于用户与操作系统之间的一层数据管理软件,是基础软件,是一个大型复杂的软件系统 ,数据库管理系统的用途,科学地组织和存储数据、高效地获取和维护数据
数据库系统 :是由数据库及其管理软件组成的系统【由这些组成,数据库(数据),数据库管理系统(软件)、数据库管理员(人员),系统平台(硬件平台),系统平台(软件平台)】
概念模型:也称信息模型,它是按用户的观点来对数据和信息建模,用于数据库设计。
实体 :客观存在并可相互区别的事物称为实体。可以是具体的人、事、物或抽象的概念。
实体型 :用实体名及其属性名集合来抽象和刻画同类实体
实体内部的联系:通常是指组成实体的各属性之间的联系
实体之间的联系 :通常是指不同实体集之间的联系
元组:表中的一行即为一个元组
码:唯一标识实体的属性集称为码
模式:模式也称逻辑模式或概念模式,是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图
外模式:外模式也称用户模式,它是数据库用户能够看见和使用的局部数据的逻辑结构和特征的描述,是数据库用户的数据视图,是与某一应用有关的数据的逻辑表示
内模式:内模式也称存储模式,一个数据库只有一个内模式。它是数据物理结构和存储方式的描述,是数据在数据库内部的表示方式
数据库系统的软硬件层次结构图
数据库管理的三个阶段
| 人工管理 | 文件系统 | 数据库系统 | |
| 应用背景 | 科学计算 | 科学计算、管理 | 大规模管理 |
| 硬件背景 | 无直接存取设备 | 硬盘、磁鼓 | 大容量硬盘 |
| 软件背景 | 没有操作系统 | 有文件系统 | 有数据库管理系统 |
| 处理方式 | 批处理 | 联机实时处理批处理 | 联机实时处理 分布处理 批处理 |
| 数据管理者 | 人 | 文件系统 | 数据库管理系统 |
| 数据面向对象 | 某个应用程序 | 某个应用程序 | 现实世界 |
| 数据共享程度 | 无共享 冗余度大 | 共享性差 冗余度大 | 共享性大 冗余度小 |
| 数据独立性 | 不独立,完全依赖与程序 | 独立性差 | 具有高度的物理独立性和一定的逻辑独立性 |
| 数据结构化 | 无结构 | 记录内有结构整体无结构 | 整体结构化,用数据模型描述 |
| 数据控制能力 | 应用程序自己控制 | 应用程序自己控制 | 由DBMS提供数据安全性、完整性、并发控制和恢复 |
创建学生管理数据库
create database xsgl
on primary
(
name='xsgl',
filename='d:xsgl_data.mdf',
size=10MB,
maxsize=unlimited,
filegrowth=1MB
)
log on
(
name='xsgl_log',
filename='d:xsgl_log.mdf',
size=1MB,
maxsize=unlimited,
filegrowth=10%
)
sp_helpdb xsgl --sp_helppdb '数据库名'(用来查寻 system procedure)
删除数据库
use master
go
drop database xsgl --注意xsgl是数据库名
go
数据库的分离、附加
sp_detach_db 'xsgl'
sp_attach_db xsgl,
'd:xsgl_data.mdf' --附加数据库
在数据库中创建数据表
--本例主要有三个表组成,接下来都是对这三个表进行的增删改查
--1.创建学生表
create table xs
(
学号 varchar(10) primary key,--primary key 是主键的意思
姓名 varchar(8),
性别 varchar(2),
出生时间 datetime,
专业 varchar(12),
总学分 float,
照片 varchar(100)
)
--2.创建课程表 kc
create table kc
(
课程号 varchar(6) primary key,
课程名 varchar(18),
学分 float,
学时数 int
)
--3.创建成绩表
create table cj
(
学号 varchar(10) ,
课程号 varchar(6) ,
成绩 float
primary key(学号,课程号)
)
在数据表中添加数据
sp_detach_db 'xsgl' sp_attach_db xsgl, 'd:xsgl_data.mdf' --附加数据库
在数据库中创建数据表
--本例主要有三个表组成,接下来都是对这三个表进行的增删改查
--1.创建学生表
create table xs
(
学号 varchar(10) primary key,--primary key 是主键的意思
姓名 varchar(8),
性别 varchar(2),
出生时间 datetime,
专业 varchar(12),
总学分 float,
照片 varchar(100)
)
--2.创建课程表 kc
create table kc
(
课程号 varchar(6) primary key,
课程名 varchar(18),
学分 float,
学时数 int
)
--3.创建成绩表
create table cj
(
学号 varchar(10) ,
课程号 varchar(6) ,
成绩 float
primary key(学号,课程号)
)
在数据表中添加数据
注意:在添加数据的时候,记得切换到xsgl数据库进行操作
use xsgl
go
insert xs(学号,姓名,性别,出生时间,专业,总学分) values ('2009030101','秦建兴','男','1990/8/9','电子商务',20) --在xs表中添加数据
insert xs(学号,姓名,性别,出生时间,专业,总学分) values ('2009030102','张吉哲','男','1990/12/1','电子商务',20)
insert xs(学号,姓名,性别,出生时间,专业,总学分) values ('2009030103','刘鑫','男','1990/3/23','电子商务',24)
insert xs(学号,姓名,性别,出生时间,专业,总学分) values ('2009030104','王兆伟','男','1991/5/18','电子商务',24)
insert xs(学号,姓名,性别,出生时间,专业,总学分) values ('2009030105','牛学文','男','1989/9/20','电子商务',19)
insert xs(学号,姓名,性别,出生时间,专业,总学分) values ('2009030106','马艳玲','女','1990/12/20','电子商务',20)
insert xs(学号,姓名,性别,出生时间,专业,总学分) values ('2009030107','张玉莹','女','1990/6/28','电子商务',24)
insert xs(学号,姓名,性别,出生时间,专业,总学分) values ('2009030108','耿娇','女','1991/6/6','电子商务',17)
insert xs(学号,姓名,性别,出生时间,专业,总学分) values ('2009030109','王丹','女','1990/11/23','电子商务',17)
insert xs(学号,姓名,性别,出生时间,专业,总学分) values ('2009030110','朱丹','女','1989/9/28','电子商务',17)
insert xs(学号,姓名,性别,出生时间,专业,总学分) values ('2009030301','尹相桔','女','1990/1/1','网络工程',17)
insert xs(学号,姓名,性别,出生时间,专业,总学分) values ('2009030302','李楠楠','女','1990/12/31','网络工程',12)
insert xs(学号,姓名,性别,出生时间,专业,总学分) values ('2009030303','王东冬','男','1990/6/29','网络工程',12)
insert xs(学号,姓名,性别,出生时间,专业,总学分) values ('2009030304','徐朝海','男','1990/10/28','网络工程',17)
insert xs(学号,姓名,性别,出生时间,专业,总学分) values ('2009030305','王小男','男','1991/12/3','网络工程',17)
insert xs(学号,姓名,性别,出生时间,专业,总学分) values ('2009030306','贾志儒','男','1990/4/8','网络工程',17)
insert xs(学号,姓名,性别,出生时间,专业,总学分) values ('2009030307','孙美娜','女','1990/9/3','网络工程',17)
insert xs(学号,姓名,性别,出生时间,专业,总学分) values ('2009030312','沈柯辛','女','1990/7/27','网络工程',13)
insert xs(学号,姓名,性别,出生时间,专业,总学分) values ('2009030313','王祥俊','女','1989/9/3','网络工程',17)
insert xs(学号,姓名,性别,出生时间,专业,总学分) values ('2009030315','么芳芳','女','1990/4/28','网络工程',17)
insert cj(学号, 课程号, 成绩) values ('2009030101','A001',97) --在cj表中添加数据
insert cj(学号, 课程号, 成绩) values ('2009030101','A002',93)
insert cj(学号, 课程号, 成绩) values ('2009030101','A005',94)
insert cj(学号, 课程号, 成绩) values ('2009030101','J001',99)
insert cj(学号, 课程号, 成绩) values ('2009030101','J002',77)
insert cj(学号, 课程号, 成绩) values ('2009030101','J003',86)
insert cj(学号, 课程号, 成绩) values ('2009030102','A001',61)
insert cj(学号, 课程号, 成绩) values ('2009030102','A002',62)
insert cj(学号, 课程号, 成绩) values ('2009030102','A005',78)
insert cj(学号, 课程号, 成绩) values ('2009030102','J001',44)
insert cj(学号, 课程号, 成绩) values ('2009030102','J002',76)
insert cj(学号, 课程号, 成绩) values ('2009030102','J003',74)
insert cj(学号, 课程号, 成绩) values ('2009030103','A001',96)
insert cj(学号, 课程号, 成绩) values ('2009030103','A002',90)
insert cj(学号, 课程号, 成绩) values ('2009030103','A005',87)
insert cj(学号, 课程号, 成绩) values ('2009030103','J001',88)
insert cj(学号, 课程号, 成绩) values ('2009030103','J002',85)
insert cj(学号, 课程号, 成绩) values ('2009030103','J003',89)
insert cj(学号, 课程号, 成绩) values ('2009030104','A001',85)
insert cj(学号, 课程号, 成绩) values ('2009030104','A002',83)
insert cj(学号, 课程号, 成绩) values ('2009030104','A005',71)
insert cj(学号, 课程号, 成绩) values ('2009030104','J001',88)
insert cj(学号, 课程号, 成绩) values ('2009030104','J002',77)
insert cj(学号, 课程号, 成绩) values ('2009030104','J003',66)
insert cj(学号, 课程号, 成绩) values ('2009030105','A001',64)
insert cj(学号, 课程号, 成绩) values ('2009030105','A002',61)
insert cj(学号, 课程号, 成绩) values ('2009030105','A005',86)
insert cj(学号, 课程号, 成绩) values ('2009030105','J001',74)
insert cj(学号, 课程号, 成绩) values ('2009030105','J002',45)
insert cj(学号, 课程号, 成绩) values ('2009030105','J003',78)
insert cj(学号, 课程号, 成绩) values ('2009030106','A001',82)
insert cj(学号, 课程号, 成绩) values ('2009030106','A002',90)
insert cj(学号, 课程号, 成绩) values ('2009030106','A005',67)
insert cj(学号, 课程号, 成绩) values ('2009030106','J001',77)
insert cj(学号, 课程号, 成绩) values ('2009030106','J002',78)
insert cj(学号, 课程号, 成绩) values ('2009030106','J003',85)
insert cj(学号, 课程号, 成绩) values ('2009030107','A001',91)
insert cj(学号, 课程号, 成绩) values ('2009030107','A002',89)
insert cj(学号, 课程号, 成绩) values ('2009030107','A005',81)
insert cj(学号, 课程号, 成绩) values ('2009030107','J001',90)
insert cj(学号, 课程号, 成绩) values ('2009030107','J002',96)
insert cj(学号, 课程号, 成绩) values ('2009030107','J003',94)
insert cj(学号, 课程号, 成绩) values ('2009030108','A001',66)
insert cj(学号, 课程号, 成绩) values ('2009030108','A002',63)
insert cj(学号, 课程号, 成绩) values ('2009030108','J001',76)
insert cj(学号, 课程号, 成绩) values ('2009030108','J002',77)
insert cj(学号, 课程号, 成绩) values ('2009030109','A001',78)
insert cj(学号, 课程号, 成绩) values ('2009030109','A002',86)
insert cj(学号, 课程号, 成绩) values ('2009030109','J001',81)
insert cj(学号, 课程号, 成绩) values ('2009030109','J002',84)
insert cj(学号, 课程号, 成绩) values ('2009030110','A001',63)
insert cj(学号, 课程号, 成绩) values ('2009030110','A002',63)
insert cj(学号, 课程号, 成绩) values ('2009030110','J001',75)
insert cj(学号, 课程号, 成绩) values ('2009030110','J002',78)
insert cj(学号, 课程号, 成绩) values ('2009030301','A001',85)
insert cj(学号, 课程号, 成绩) values ('2009030301','A002',78)
insert cj(学号, 课程号, 成绩) values ('2009030301','J001',84)
insert cj(学号, 课程号, 成绩) values ('2009030301','J002',90)
insert cj(学号, 课程号, 成绩) values ('2009030302','A001',86)
insert cj(学号, 课程号, 成绩) values ('2009030302','A002',67)
insert cj(学号, 课程号, 成绩) values ('2009030302','J001',74)
insert cj(学号, 课程号, 成绩) values ('2009030302','J002',55)
insert cj(学号, 课程号, 成绩) values ('2009030303','A001',74)
insert cj(学号, 课程号, 成绩) values ('2009030303','A002',73)
insert cj(学号, 课程号, 成绩) values ('2009030303','J001',86)
insert cj(学号, 课程号, 成绩) values ('2009030304','A001',83)
insert cj(学号, 课程号, 成绩) values ('2009030304','A002',85)
insert cj(学号, 课程号, 成绩) values ('2009030304','J001',77)
insert cj(学号, 课程号, 成绩) values ('2009030304','J002',67)
insert cj(学号, 课程号, 成绩) values ('2009030305','A001',61)
insert cj(学号, 课程号, 成绩) values ('2009030305','A002',85)
insert cj(学号, 课程号, 成绩) values ('2009030305','J001',83)
insert cj(学号, 课程号, 成绩) values ('2009030305','J002',68)
insert cj(学号, 课程号, 成绩) values ('2009030306','A001',77)
insert cj(学号, 课程号, 成绩) values ('2009030306','A002',79)
insert cj(学号, 课程号, 成绩) values ('2009030306','J001',93)
insert cj(学号, 课程号, 成绩) values ('2009030306','J002',85)
insert cj(学号, 课程号, 成绩) values ('2009030307','A001',86)
insert cj(学号, 课程号, 成绩) values ('2009030307','A002',98)
insert cj(学号, 课程号, 成绩) values ('2009030307','J001',77)
insert cj(学号, 课程号, 成绩) values ('2009030307','J002',81)
insert cj(学号, 课程号, 成绩) values ('2009030312','A001',33)
insert cj(学号, 课程号, 成绩) values ('2009030312','A002',89)
insert cj(学号, 课程号, 成绩) values ('2009030312','J001',74)
insert cj(学号, 课程号, 成绩) values ('2009030312','J002',71)
insert cj(学号, 课程号, 成绩) values ('2009030313','A001',73)
insert cj(学号, 课程号, 成绩) values ('2009030313','A002',85)
insert cj(学号, 课程号, 成绩) values ('2009030313','J001',90)
insert cj(学号, 课程号, 成绩) values ('2009030313','J002',91)
insert cj(学号, 课程号, 成绩) values ('2009030315','A001',88)
insert cj(学号, 课程号, 成绩) values ('2009030315','A002',97)
insert cj(学号, 课程号, 成绩) values ('2009030315','J001',92)
insert cj(学号, 课程号, 成绩) values ('2009030315','J002',90)
insert kc(课程号,课程名,学分,学时数) values('A001','英语',4,50)
insert kc(课程号,课程名,学分,学时数) values('A002','数学',4,50)
insert kc(课程号,课程名,学分,学时数) values('A005','哲学',2,40)
insert kc(课程号,课程名,学分,学时数) values('J001','计算机基础',4,60)
insert kc(课程号,课程名,学分,学时数) values('J002','数据结构',5,60)
insert kc(课程号,课程名,学分,学时数) values('J003','操作系统',5,72)
insert kc(课程号,课程名,学分,学时数) values('J005','数据库SQL Server',4,72)
sp_help cj --sp_help '数据表名' 查询 表的结构
经过上面的新建数据库,创建3个表,向表添加数据可得下面的图片效果,接下来的步骤,都会以这三个表格的内容进行操作
如何删除某个表中的字段,我们以xs表中的照片字段为例
alter table xs drop column 照片 |
如何给cj表中的学号添加外键,外键以xs表的‘学号’作为参考
外键:外键是允许我们在两个表中的数据之间建立引用链接的一列或一组列。 该引用链接有助于将外键列数据与引用表数据的数据进行匹配。 被引用的表称为父表,而涉及外键的表称为子表。 此外,如果外键引用同一表的另一列,则此引用类型称为自引用。
alter table cj
add constraint fk_cj_学号
foreign key (学号) references xs(学号)
既然上面的语句就是创建外键的语句,那我们如何验证外键创建是否成功,同时外键的效应是否生效,下面的图片显示,给cj表中插入数据时,消息框报错,那是因为在xs表中已经有学号为‘200803101’和课程号为‘A001’的数据了,如果在继续在cj表中添加就违反了外键的规则。
那我该如何取消外键的约束呢
alter table cj
drop constraint fk_cj_学号
通过执行上面的代码,cj表下面的键就少了。为了下面能够继续,请重新执行上上个新建外键的代码。
下面进行查询代码的练习
--1.查学生的学号,姓名 (下面两句都能实现查询学号,姓名的操作)
--2.查询 某个人
--3.给表的列 取一个别名
--4.查询所有学生的年龄
5.去除重复的数据 ,查一下有哪些专业
待更新



