day20(MAC地址、数据库、关系模型、事务、索引、视图、SQL添查改删)
-
MAC地址是一个硬件地址,用来定义网络设备的位置,主要由数据链路层负责。而IP地址是IP协议提供的一种统一的地址格式,为互联网上每一个网络和每一台主机分配一个逻辑地址,以此来屏蔽物理地址的差异。
-
DNS服务是基于UDP的
一旦拥塞窗口>慢开始门限,就采用拥塞避免算法,以减慢增长速度。
一旦出现丢包的情况,就重新进行慢开始。
一旦发送方连续收到三个重复确认,就采用拥塞避免算法。 -
数据库
数据库的核心和基础是数据模型。数据模型是对现实世界数据特征的抽象,是用来描述数据、组织数据和对数据进行操作的。根据应用目的的不同扥为两类,一是概念模型,二是逻辑模型和物理模型。
概念模型,也叫信息模型,它是按照用户的观点来对数据和信息建模,主要用于数据库的设计。
逻辑模型主要包括层次模型、网状模型、关系模型、面向对象模型和对象关系模型。
物理模型是对数据最底层的抽象,描述数据在系统内部的表示的方法和存储的方法,在磁盘或者磁带上的存储方式和存取方法,是面向计算机系统的。
数据模型一般由数据结构、数据操作和完整性约束三部分组成。
数据结构,存储在数据库中对象类型的集合,作用是描述数据库组成对象以及对象间的联系。
数据操作,对数据库中各种对象实例允许执行的操作的集合,包括操作及其相关的操作规则。
完整性约束条件,在给定数据模型中,数据及其联系所遵循的一组通用的完整性规则,他能保证数据的正确性和一致性。 -
关系模型是目前最重要的一种数据模型。关系数据库采用关系模型作为数据的组织方式。关系模型中数据的逻辑结构是一张二维表,或者说关系的数据结构就是一张表。
关系数据模型的数据操做主要包含:查询、插入、删除和更新数据。
关系模型的完整性约束条件包含:实体完整性、参照完整性和用户自定义的完整性。 -
若关系(二维表)中的某一属性组的值能唯一标志一个元祖,则称该属性组为候选码。如果有多个候选码,则可选定其中一个为主键。
候选码的诸属性成为主属性,不包含在任何候选码中的属性称为非主属性或非码属性。 -
外键表示了两个关系(表)之间的联系,以另一个关系的外键做主键的表称作主表,具有此外键的表被称为主表的从表。外键又称为外关键字。
-
关系模型的实体完整性规则,若属性(一个或一组)A是基本关系R的主属性,则A不能取空值。所以:主键不能为空。
主键在表中是唯一的。参照完成性规则是定义外键实现的。 -
事务,是用户定义的一个数据库操作序列,是一个不可分的工作单位。
事务的四个特性:原子性、一致性、隔离性、持续性。简称ACID特性、
原子性:事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生。
一致性:如果事务执行前数据库是一个完整的状态,那么事务结束以后,无论事务是否执行成功,数据库任然是一个完整的状态(当一个数据库中的所有数据都符合数据库中所定义的所有约束,此时可以称数据库是一个完整的状态)。
隔离性:多个用户并发的访问数据库时,一个用户的事务不能被其他用户的事务干扰,多个并发事务之间数据要相互隔离。
持久性:一个事务一旦被提交,他对数据库的影响是永久性的。
脏读:一个事务读取到另一个事务未提交的数据。
不可重复读:在当前事务中,读取到了另一个事务提交的更新和删除的数据。
幻读:在当前事务中,读取到了另一个事务提交的插入数据。
默认隔离级别是:Repeatable read:—可以防止脏读/不可重复读,不能防止幻读。
数据库被设计为单线程就可以防止上述三个问题。
- 索引,是对数据库表的一列或多列的值进行排序的一种架构,借用索引可以快速的访问数据表中的特定信息。
- 视图,是从一个或几个基本表(或视图)导出的表。是一个虚表。数据库中只存放视图的定义,而不存放视图对应的数据,这些数据依然在原来的表中。
视图就像一个窗口,通过他可以看到数据库中自己感兴趣的数据及其变化。 - SQL语言,包括数据查询(select)、数据定义(create、drop、alter)、数据操作(insert、updata、delete)、数据控制(grant、revoke)。
定义基本表:CREATE TABLE<表名>(<列名><数据类型>[列级完整性约束条件]
[,<列名><数据类型>[列级完整性约束条件]
…
[,<表级完整性约束条件>]); - 修改基本表
ALTER TABLE<表名>[ADD<新列名><数据类型>[完整性约束]
[DROP<完整性约束名>]
[MODIFY COLUMN<列名><数据类型>]
ADD用于增加新列和新的完整性约束条件,DROP用于删除指定的完整性约束条件,MODIFY COLUMN 用于修改原有的列定义,包括修改列名和数据类型。
例子:向Student表增加“入学时间”列,数据类型为日期型
ALTER TABLE Student ADD S_entrance DATE;新增的一列均为空值。 - 删除基本表,DROP TABLE<表名>[RESTRICT | CASCADE]
若选择RESTRICT,则该表的删除是有限制条件的:要删除的表不能被其他的表的约束所引用(如:check、foreign key等约束),不能有视图,不能有触发器,不能有存储过程或函数。
若选择CASCADE,则没有限制条件,直接直接删除该表,相关的依赖对象,视图等都被一起删除。 - 数据查询,数据查询是数据库的核心操作。SELECT查询
SELECT [ALL | DISTINCT]<目标列表达式>[,<目标列表达式>]…
FROM <表名或视图>[,<表名或视图>]…
[WHERE<条件表达式>]
[GROUP BY <列名1> [HAVING <条件表达式>]]
[ORDER BY <列名2> [ASC | DESC]];
选择若干表
假设在表Student中查询名为 Bill Gates 的学生信息:
SELECT* from Student WHERE Sname==‘Bill Gates’; sname是列名
假设在表Student查询名字中有Bill的学生信息:
SELECT from Student WHERE Sname like ‘%Bill%’ ; %表示通配符,代表任意长度的字符串。 _(下划线)代表任意单词字符。
假设在表Student中查询年龄在20-23岁之间的学生信息:
SELECT FROM Student WHERE Sage BETWEEN 20 AND 23;
相对的是NOT BETWEEN…AND…
假设在表中查询计算机系(CS)、信息系(MA)、数学系(IS)学生的姓名和性别:
SELECT Sname,Ssex FROM Student WHERE Sdept IN(‘CS’,‘IS’,‘MA’);
与IN相当的是NOT IN,用于查找属性值不属于指定集合的元组。
假设在表中查询没有年龄信息的学生:
SELECT * FROM Student WHERE Sage IS NULL;
15. order by子句对查询的结果按照一个或多个属性列的升序(ASC)或降序(DESC)排列,默认是升序。
例如在表Student中,按照学生的年龄值升序检索出全部学生信息:
SELECT * FROM Student ORDER BY Sage;
在表Student中,先按专业升序排序,然后同一专业的学生再按年龄降序排序,并输出全部学 生信息:
SELECT * FROM Student ORDER BY Sdept, Sage desc;
16. LIMIT主要是用于查询之后要显示返回的前几条或者中间某几行数据。可用于强制SELECT语句返回指定的记录数。
SELECT FROM Student LIMIT 5,10;検索记录行5-10
17. 聚集函数count sum avg max min
select count()as totalcount from talbel;
select sum(fieldl) as sumvalue from tablel; sum可以替换成其他的。