主码=主键=主关键字
关键字=候选码
事务故障是由于程序执行错误而引起事务非预期的、异常终止的故障;
系统故障是指系统在运行过程中,由于某种原因,造成系统停止运行,以致事务在执行过程中以非正常的方式终止,致使内存中的信息丢失,而存储在外存上的数据未受影响;
介质故障是指外存储设备故障,主要有磁盘损坏,磁头碰撞盘面,突然的强磁场干扰,数据传输部件出错,磁盘控制器出错等。
系统故障 可以简单理解为导致系统需要重启的基本都是系统故障
如果一个 超关键字 去掉其中任何一个字段后不再能唯一地确定记录,则称它为“候选关键字”(Candidate Key)。候选关键字既能唯一地确定记录,它包含的字段又是最精炼的。也就是说候选关键字是最简单的超关键字。
having是在分组后过滤,where在分组前过滤,不冲突,可以同时使用,
having是用来过滤的,group by是限定分组
select语句中没有聚合函数的使用时也可以用having
having子句即可包含聚合函数作用的字段也可包括普通的标量字段
mysql中常用去重复数据的方法是使用 distinct 或者group by ,以上2种均能实现,但2者也有不同的地方。
distinct 特点:
如:select distinct name, sex,from tb_students 这个sql的语法中,查询 tb_students 表中 name, sex,并去除名字和性别都重复的学生:
1、distinct 只能放在查询字段的最前面,不能放在查询字段的中间或者后面。
备注:select sex,distinct name from tb_students 这种写法是错误的,distinct 只能写在所有查询字段的前面
2、distinct 对后面所有的字段均起作用,即 去重是查询的所有字段完全重复的数据,而不是只对 distinct 后面连接的单个字段重复的数据。
备注:也就是 distinct 关键字对 name, sex 都起作用,去重姓名、性别完全一样的学生,如果姓名相同、性别不同是不会去重的。
3、要查询多个字段,但只针对一个字段去重,使用distinct去重的话是无法实现的。
group by 特点:
1、一般与聚类函数使用(如count()/sum()等),也可单独使用。
2、group by 也对后面所有的字段均起作用,即 去重是查询的所有字段完全重复的数据,而不是只对 group by后面连接的单个字段重复的数据。
3、查询的字段与group by 后面分组的字段没有限制。
特别说明:在oracle中使用group by时,查询的字段必须是group by 分组的字段和聚类函数。如select name,sex from tb_students group by name这个sql
语法在oracle中是错误的,因为sex 不在group by 分组后面;但在mysql中是支持的。
mysql_num_fields() 函数返回结果集中字段的数。
limit A,B 中A表示记录的index,B表示取B条数据,
共享锁(Share locks简记为S锁):也称读锁,事务A对对象T加s锁,其他事务也只能对T加S,多个事务可以同时读,但不能有写操作,直到A释放S锁。
排它锁(Exclusivelocks简记为X锁):也称写锁,事务A对对象T加X锁以后,其他事务不能对T加任何锁,只有事务A可以读写对象T直到A释放X锁。
- 创建索引的好处
(1)通过创建索引,可以在查询的过程中,提高系统的性能
(2)通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性
(3)在使用分组和排序子句进行数据检索时,可以减少查询中分组和排序的时间 - 创建索引的坏处
(1)创建索引和维护索引要耗费时间,而且时间随着数据量的增加而增大
(2)索引需要占用物理空间,如果要建立聚簇索引,所需要的空间会更大
(3)在对表中的数据进行增加删除和修改时需要耗费较多的时间,因为索引也要动态地维护
dbs(数据库系统)=db(数据库)+dbms(数据库管理系统)
一个联系转化为一个关系模式,与该联系相连的各实体的码以及联系
的属性转化为关系的属性,该关系的码则有三种情况:
若联系为1:1,则每个实体的码均是该关系的后选码。
若联系为1:n,则关系的码为n端实体的码。
若联系为m:n,则关系的码为诸实体码的组合。
加索引提高检索速度,但是写入速度会降低
"_"匹配任何单个字符
"%"匹配任意数目字符(包括零个字符)
"[]"匹配在方括号中的任意一个字符
外模式是用户的数据视图,也就是用户所见到的数据模式。
全局数据视图的描述称为概念模式,即数据库中全部数据的整体逻辑结构的描述。
数据库的安全性是指保护数据库以防止不合法的使用所造成的数据泄露、更改或破坏。
数据库完整性(DatabaseIntegrity)是指数据库中数据在逻辑上的一致性、正确性、有效性和相容性。
关于数据库优化
-
应尽量避免在 where 子句中使用 or 来连接条件,否则将导致引擎放弃使用索引而进行全表扫描。
-
union和union all的区别是,union会自动压缩多个结果集合中的重复结果,而union all则将所有的结果全部显示出来,不管是不是重复。
-
因为字段建有唯一索引,不会有重复的结果,所以直接使用 Union All,更快。
mysql中:<>无法对null做筛选;length无法对null做筛选
各种数据库提取前N个记录的命令
Sql Server:select TOP N * from table_namw
MySQL:select * from table_name limit 0,10;
Oracle:select * from table_name where rownum<=10
关系的约束条件也称为关系的数据完整性规则。它是对关系的一些限制和规定。它包括实体完整性、参照完整性和用户定义完整性。
实体完整性:这条规定的现实意义是,关系模型对应的是现实世界的数据实体,而关键字是实体惟一性的表现,没有关键字就没有实体.所有关键字不能是空值。这是实体存在的最基本的前提,所以称之为实体完整性。
参照完整性:参照完整性规则也可称为引用完整性规则。这条规则是对关系外部关键字的规定,要求外部关键字的取值必须是客观存在的,即不允许在一个关系中引用另一个关系不存在的元组。
用户定义完整性:由用户根据实际情况,对数据库中数据的内容所作的规定称为用户定义的完整性规则。通过这些限制数据库中接受符合完整性约束条件的数据值,不接受违反约束条件的数据,从而保证数据库的数据合理可靠。
唯一性索引列允许空值,而主键列不允许为空值。
主键列在创建时,已经默认为空值 + 唯一索引了。
主键可以被其他表引用为外键,而唯一索引不能。
(乱入的计算机网络)
私网地址是:不能在公网出现,所有路由器不能往目标地址为私网地址的数据报,ABC类各保留3个区域作为私网地址
A类地址:10.0.0.0~10.255.255.255
B类地址:172.16.0.0 ~172.31.255.255
C类地址:192.168.0.0~192.168.255.255
题目中的B选项10.128.10.1符合题意A类范围内。
DDL:数据库模式定义语言,关键字:create DML:数据操纵语言,关键字:Insert、delete、update
DCL:数据库控制语言 ,关键字:grant、remove DQL:数据库查询语言,关键字:select
外模式(子模式),是数据库用户能够看见和使用的局部数据的逻辑结构和特征的描述,是数据库用户的数据视图,是数据的逻辑表示;
内模式(存储模式),它是数据物理结构和存储方式的描述,是数据在数据库内部的表示方式。
在关系模式R<U,F>中为F所逻辑蕴含的函数依赖的全体叫做F的闭包。
-
函数依赖
若对于R(U)的任意一个可能的关系r,r中都不可能存在两个元组在X上的属性值相等,而在Y上的属性值不相等。 -
逻辑蕴含
F能推出原本不存在于F中的函数依赖,则该函数依赖为F所逻辑蕴含的函数依赖
闭包就是由一个属性直接或间接推导出的所有属性的集合,例如:
f={a->b,b->c,a->d,e->f}
由a可直接得到b和d,间接得到c,则a的闭包就是{a,b,c,d}
参照完整性共分四种模式:不执行操作、级联、置空、设置默认值。
解析:case when经常和聚合函数配合使用
case when result=‘F’ then 1 else 0 end
考察点:count(),sum();
1):sum()配合使用,满足条件返回1,表示进行+1 else 0表示+0
2):count()配合使用,返回的值只要不是null,就进行一次计数,所以使用count()必须注意:若满足条件想进行一次计数,不满足条件不计数。
SQL中存储过程和函数的区别:
- 只是函数有只能返回一个变量的限制。而存储过程可以返回多个。
- 函数是可以嵌入在sql中使用的,可以在select中调用,而存储过程不行。
- 一般来说,存储过程实现的功能要复杂一点,而函数的实现的功能针对性比较强。
- 对于存储过程来说可以返回参数,而函数只能返回值或者表对象。
- 存储过程一般是作为一个独立的部分来执行(EXEC执行),
而函数可以作为查询语句的一个部分来调用(SELECT调用),由于函数可以返回一个表对象,因此它可以在查询语句中位于FROM关键字的后面。 - 当存储过程和函数被执行的时候,SQL Manager会到procedure cache中去取相应的查询语句,如果在procedure cache里没有相应的查询语句,SQL Manager就会对存储过程和函数进行编译。