目录
早期笔记,做备份~
1.什么是关系
SQL是用于管理关系数据库管理系统(RDBMS)。
在关系数据库中,关系就是二维表,由行和列组成。比如一个表中有学生的学号和姓名.
而另一个表中则有学号和年龄,如果要搜姓名和年龄,那么学号就是着两个表的关系。
{
行Row,也称为记录Record,元组
列Column,也称为字段Field、属性
字段的取值范围叫做域Domain。
维数:关系的维数指关系中属性的个数
基数:元组的个数
}
2.一对一、一对多、多对一、多对多之间关系的区别
一对一:一个人对应一张身份证,一张身份证对应一个人
一对多/多对一: 一个班级拥有多个学生,一个学生只能够属于某个班级
多对多:一个学生可以选修多门课程,一个课程可以被多个学生选修
3.如何体现一对多、多对多的关系
比如,一个班级有很多学生,可是每个学生只有一个班级。这里学生和班级的关系就是多对一。
每个学生有语文课、数学课、英语课等很多课。一门课有很多人上,一个人上很多门课。这里学生和课程的关系就是多对多。
4.各个约束的作用
4.1主键
起标识索引用途 保证了数据的唯一性,其值能唯一地标识表中的每一行,通过它可强制表的实体完整性。主键主要是用与其他表的外键关联,以及文本记录的修改与删除。
4.2外键
外键 (FK) 是用于建立和加强两个表数据之间的链接的一列或多列。
保持数据一致性,完整性,主要目的是控制存储在外键表中的数据。 使两张表形成关联,就是当你对一个表的数据进行操作,和他有关联的一个或更多表的数据能够同时发生改变。
4.3唯一性
列的内容都是唯一的,不以重复 ,可以保证记录的唯一性
5.范式的作用
三大范式:
第一范式:确保每列的原子性,如果每列(或者每个属性)都是不可再分的最小数据单元(也称为最小的原子单元),则满足第一范式.。例如:顾客表(姓名、编号、地址、……)其中"地址"列还可以细分为国家、省、市、区等。
第二范式:在第一范式的基础上更进一层,目标是确保表中的每列都和主键相关。如果一个关系满足第一范式,并且除了主键以外的其它列,都依赖于该主键,则满足第二范式.。例如:订单表(订单编号、产品编号、定购日期、价格、……),"订单编号"为主键,"产品编号"和主键列没有直接的关系,即"产品编号"列不依赖于主键列,应删除该列。
第三范式:在第二范式的基础上更进一层,目标是确保每列都和主键列直接相关,而不是间接相关.。如果一个关系满足第二范式,并且除了主键以外的其它列都不依赖于主键列,则满足第三范式. 。
作用:范式主要是用来在“设计数据库"的过程中使得数据库的关系模式更加合理化,比如减少数据冗余,避免插入异常,删除异常等。
6.总结与收获
6-1.心得
此阶段是培训数据库。数据库——结构化查询语言 (SQL) ,SQL 是用于访问和处理数据库的标准的计算机语言,这些数据库包括 SQL Server、Oracle、MySQL、Sybase 以及 Access 等等,通过 SQL 来管理数据。不过SQL 存在着多种不同版本的 SQL 语言。 我们这次主要学习掌握SQL Server的相关知识内容。
第一步是从安装SQL Server软件开始,这个安装过程可谓一波三折,我在安装卸载之间反复了三次才安装成功。没什么主要的大问题,安装步骤详解百度可知。
第二步开始学习SQL server的知识内容,w3school,菜鸟教程,CSDN等网站参考学习基础语法知识,再根据培训的文档要求进一步加深理解。学习语法知识的时候,由于接收的知识点比较零散,所以当看完SQL的基础知识后并不能太灵活的把他们结合起来综合应用,通过查看参考网上的一些实例才弄明白他们的正确用法。
第三步巩固知识点和加深对数据库的了解,除了基础语法外还有一些其他重要的知识概念,比如触发器,存储器,这两个器编写时主要用到的是T-SQL语句, T-SQL是 SQL 在 Microsoft SQL Server 上的增强版,它是用来让应用程序与 SQL Server 沟通的主要语言。 还有搞清表之间的各种关系,比如一对一,多对一,一对多,多对多。还有范式、备份还原等这些关于SQL Server的知识。
最后完成阶段性作业,这次的总作业是建一个学生的选课系统,主体对象是老师和学生,由于这两者之间是多对多的关系, 而多对多的关系需要转换成一对多的关系,要用的中间表来转换,老师与授课表是多对一的关系,学生与选课表也是多对一的关系,而授课表与选课表则是一对一的关系,通过主外键连接起来。大致关系就是这样连接起来。然后在完成基础要求上加了一个选课不能重复的触发器。
6-2.对于SQL的一些知识总结
1、表
是数据库的基本元素。 数据库包含一个或多个表,并且这些表可以建模为关系表。这些表是由列组成的,每列都必须具有名称和数据类型。 这些列根据定义的数据类型存储数据,这些数据记录称为行。
2、存储器
一组为了完成特定功能的SQL 语句集。
优点:
①创建时进行编译,以后每次执行存储过程都不需再重新编译,提高数据库执行速度。
② 可以直接调用数据库的一些内置函数,完成复杂的判断和较复杂的运算。
③减少网络传输,降低了网络负载。
④有助于避免 SQL 注入攻击。
3、触发器
触发器是一种特殊类型的存储过程,主要是通过事件(对表或视图进行插入、更新、删除)进行触发被自动调用执行的。SQL Server只有语句级触发,没有行级触发。
分类 :DML触发器、DDL触发器和登录触发器。
1、DML触发器是一些附加在特定表或视图上的操作代码,当数据库服务器中发生数据操作语言事件时执行这些操作。SQL Server中的DML触发器有两类:
① after触发器(之后触发):要求只有执行某一操作insert、update、delete之后触发器才被触发,且只能定义在表上。
② instead of 触发器 (之前触发):并不执行其定义的操作(insert、update、delete)而仅是执行触发器本身。既可以在表上定义instead of触发器,也可以在视图上定义。
具体分为三种:
①insert触发器:向表中插入数据时被触发, 使用到inserted表 ;
②update触发器:修改表中数据时被触发 ,使用到deleted表和inserted表;
③delete触发器:从表中删除数据时被触发, 使用到deleted表 。
2、DDL触发器是当服务器或者数据库中发生数据定义语言(主要是以create,drop,alter开头的语句)事件时被激活使用,使用DDL触发器可以防止对数据架构进行的某些更改或记录数据中的更改或事件操作。
3、登录触发器将为响应 LOGIN 事件而激发存储过程。与 SQL Server 实例建立用户会话时将引发此事件。登录触发器将在登录的身份验证阶段完成之后且用户会话实际建立之前激发。因此,来自触发器内部且通常将到达用户的所有消息(例如错误消息和来自 PRINT 语句的消息)会传送到 SQL Server 错误日志。如果身份验证失败,将不激发登录触发器。