简述数据库完整性及其作用
1.域完整性:检查约束 默认约束 非空约束
2.实体完整性: 主键约束 唯一约束 标识列
3.引用完整性:外键约束
4.自定义完整性:触发器
简述实现数据库操作的语句以及语法
--增
insert into 表名(列1,列2,……) values(值1,值2,……)
--删
delete FROM 表名 WHERE 条件
--改
update 表名 SET 列1=新值1,列2=新值2,…… WHERE 条件
--查
SELECT 列1,列2,……
FROM 表名
WHERE 条件
group by 列 having 条件 --(结果筛选)
order by 列[ASC|DESC] --(结果排序)
常用的聚合函数
--聚合函数
-- max(列)
-- min(列)
-- sum(列)
-- avg(列)
-- count(*)
表连接分为哪几种类型
--内联查询,可能造成数据列丢失
SELECT 列1,列2,……
FROM 表1
inner join 表2 on 表1.列=表2.列
SELECT 列1,列2,……
FROM 表1,表2
WHERE 表1.列=表2.列
--左外联查询,保证左表一定出现在结果集中
SELECT 列1,列2,……
FROM 表1
left join 表2 on 表1.列=表2.列
--右外联查询,保证右表一定出现在结果集中
SELECT 列1,列2,……
FROM 表1
right join 表2 on 表1.列=表2.列
了解设计数据库的步骤
良好的数据库设计:
-
节省数据的存储空间
-
能够保证数据的完整性
-
方便进行数据库应用系统的开发
糟糕的数据库设计:
- 数据冗余、存储空间浪费
- 内存空间浪费
- 数据更新和插入的异常
软件项目开发周期中的数据库设计:
-
需求分析阶段:分析客户的业务和数据处理需求
- 收集信息:与该系统有关人员进行交流,充分了解用户需求,理解数据库需要完成的任务
- 标识实体(Entity):标识数据库要管理的关键对象或实体,实体一般是名词
- 标识每个实体的属性(Attribute):例如客人编号、姓名
- 标识实体之间的关系(Relationship):对象之间的依赖
-
概要设计阶段:设计数据库的E-R模型图,确认需求信息的准确和完整
- E-R图(Entity-Relationship)分析对象之间的关系:
-
- 将各实体转换为对应的表,将个属性转换为各表对应的列
- 标识每个表的主键列
- 在表之间建立主外键,提现实体之间的映射关系
-
- 转化E-R图为数据库模型图:
- 通过微软提供的Microsoft Visio软件—数据库模型图来绘制数据库模型图
- 箭头关系由一实体指向另一被依赖的实体
-
- 映射基数:
- [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kX8iLdr9-1656908913581)(C:\Users\Admin\AppData\Roaming\Typora\typora-user-images\1655519985662.png)]
- E-R图(Entity-Relationship)分析对象之间的关系:
-
详细设计阶段:应用三大范式审核数据库结构
- 为什么需要数据规范化:减少数据冗余,减少操作异常
- 不符合规范的表设计
- 信息重复;更新异常;插入异常(无法正确表示信息);删除异常(丢失有效信息)
- 第一范式(1NF)的目标是确保每列的原子性
- 如果每列都是不可再分的最小数据但愿(也成为最小的原子单元),则满足第一范式(1NF)
- **第二范式要求每个表只描述一个事情 **
- 第三范式:如果一个关系满足2NF,并且除了主键以外的其他列都不传递依赖于主键列,则满足第三范式(3NF)
-
代码编写阶段:物理实现数据库,编码实现应用
-
软件测试阶段
-
安装部署
SQL语句分为四种
**1、数据查询语句:DQL(Data Query Language):SELECT **
2、数据操纵语句:DML(Data Manipulate Language):Insert Update Delete
3、数据定义语句:DDL(Data Defination Language):建库、建表、加约束
4、数据控制语句:DCL(Data Control Language):权限管理
SqlServer数据库由哪几种文件组成?
-
主数据文件:*.mdf
-
次要数据文件:*.ndf
-
日志文件:*.ldf
创建SqlServer数据库时,需要指定哪些属性?
-
文件存放位置,分配的初始空间,属于哪个文件组
-
文件增长:可以按百分比或实际大小指定增长速度
-
文件容量设置:可以指定文件增长的最大值或不受限
创建数据库的语法
Create Database db_name
ON[Primary]
(
-- <数据文件参数>[,……n]<文件参数>
)
[LOG ON]
(
-- <日志文件参数>[,……n]
)
使用CREATE DATABASE语句创建数据库MySchool,要求:
- 该数据库具有一个数据文件和一个日志文件
- 文件保存在D盘已有的文件夹Project下
- 数据文件的大小初始为5MB,最大值为100MB,文件增长率是15%
- 日志文件的大小初始为2MB,增长量是1MB
CREATE DATABASE MySchool
on primary
(
name = 'myschool_data', --逻辑名
size = 5mb, --初始大小
maxsize = 100mb, --最大值
filegrowth = 15%, --增长方式
filename='d:\project\myschool_data.mdf' --文件路径
)
log on
(
name = 'myschool_log',
size = 2mb,
maxsize = 50mb,
filegrowth =1mb,
filename = 'd:\project\myschool_log.ldf'
)
使用CREATE DATABASE语句创建数据库Employee,要求:
- 数据库具有多个数据和日志文件
- 分别设置主数据文件和次要数据文件
- 分别设置不同的日志文件
CREATE DATABASE Employee
ON PRIMARY
--主要数据文件Employee_data
(
name = 'Employee_data',
size = 5mb,
maxsize = 100mb,
filegrowth = 10%,
filename = 'd:\project\Employee_data.mdf'
),
--次要数据文件Employee_data2
(
name = 'Employee_data2',
size = 5mb,
maxsize = 100mb,
filegrowth = 10%,
filaname = 'd:\project\Employee_data2.ndf'
)
--主要日志文件Employee_log
LOG ON
(
name = 'Employee_log',
size = 2mb