on duplicate key update
可以达到以下目的:
向数据库中插入一条记录:
- 若该数据的主键值/ UNIQUE KEY 已经在表中存在,则执行更新操作, 即UPDATE 后面的操作。
- 否则插入一条新的记录。
- 数据写进程(dbwr):负责将更改的数据从数据库缓冲区高速缓存写入数据文件
- 日志写进程(lgwr):将重做日志缓冲区中的更改写入在线重做日志文件
- 系统监控(smon):检查数据库的一致性如有必要还会在数据库打开时启动数据库的恢复
- **进程监控(pmon):**负责在一个Oracle进程失败时清理资源
- **检查点进程(chpt):**负责在每当缓冲区高速缓存中的更改永久地记录在数据库中时,更新控制文件和数据文件中的数据库状态信息。
- **归档进程(arcn):**在每次日志切换时把已满的日志组进行备份或归档
- **作业调度器(cjq):**负责将调度与执行系统中已定义好的job,完成一些预定义的工作.
- 恢复进程(reco):保证分布式事务的一致性,在分布式事务中,要么同时commit,要么同时rollback;
聚集索引:
有存储实际数据
物理上连续
可以用B树实现
创建数据库: CREATE DATABASE, CREATE SCHEMA
1NF:每个属性不可再分
2NF:非主属性对候选码没有部分依赖
3NF:非主属性对候选码没有传递依赖
BCNF:不论是主属性还是非主属性都没有对候选码的传递依赖
- Charindex():返回字符或字符串在另一个字符的起始位置CHARINDEX(查找字符,被查字符,开始位置)
- SubString():截取字符串中的一部分字符。SUBSTRING(字符串,开始位置,截取长度)
- Stuff():删除指定长度的字符,并在指定的起点处插入另一组字符。
- STUFF(列名,开始位置,长度,替代字符串)
- Soundex():返回表示字符串声音(发音)的一串字符。
关系完备的系统是指(支持关系数据结构和所有关系代数操作)。
if(条件exp,表达式1,表达式2) 如果(exp不等于0且exp不为空),条件成立(true)执行表达式1,否则,执行表达式2. 这里exp为值-1,条件成立执行表达式1,
CHANGE 用来修改字段名字以及类型
modify 用来修改字段类型
alter column … set 用来修改字段数据
(来自百度)数据库中删除约束的方法:
1、sql server中删除约束的语句是:
alter table 表名 drop constraint 约束名
sp_helpconstraint 表名 找到数据表中的所有列的约束
2、oracle中删除约束的语句:
先找到表的约束名称,执行:
select * from user_constraints; 其中 CONSTRAINT_NAME 为表的约束名称
然后删除约束:
alter table 表名 drop constraint 约束名 cascade;
3、mysql中删除约束的语句是:
1)删除主键约束:
alter table 表名 drop primary key;
2)删除外键约束:alter table 表名 drop foreign key 外键(区分大小写);
数据库恢复的基础是利用转储的冗余数据,这些转储的冗余数据包括:日志文件,数据库后备副本
Mysql(版本8.0.25)不支持full join,执行报错【1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'full outer join 】
自由表:不属于任何数据库的表
候选索引同主索引一样,不允许索引关键字中出现重复值,这种索引是主索引的候选者。
许多DBMS禁止在视图查询中使用ORDER BY子句;
一个视图中可以嵌套另一个视图;
NULL表示遗漏的未知数据或者无数据不填入。
无法比较 NULL 和 0;它们是不等价的。
无法使用比较运算符来测试 NULL 值,比如 =, <, 或者 <>。
空值的判断用IS NULL或IS NOT NULL
常用的数据模型:概念模型、逻辑模型、物理模型
常用的逻辑模型:层次模型、网状模型、关系模型;
概念模型是按用户的观点对现实世界的客观对象所建立的模型,不依赖于具体的计算机系统,是现实世界到信息世界的第一层抽象,是用户与数据库设计人员之间交流的语言。因此,概念模型与数据模型无关,也与硬件设备和DBMS无关。
CASCADE表示表的删除没有限制条件,在删除基本表的同时,相关的依赖对象(如视图)都将被删除。
RESTRICT表示表的删除是有条件限制的,要删除的基本表不能被其他表的约束所引用,不能有视图,不能有触发器,不能有存储过程或函数等。如果存在这些依赖该表的对象,则表不能被删除;
虽然没有明说,但是目前看来union是高于order by和limit的
(摘)
BTREE索引和 HASH 索引的差异:
(1)HASH索引只用于使用 = 或 <=> 操作符的等式比较。如果一定要使用范围查询 的话,只能使用BTREE索引。
(2)优化器不能使用 Hash 索引来加速 order by 操作。
(3)使用 Hash 索引时 MySQL 不能确定在两个值之间大约有多少行。如果将一 个MyISAM表改为的 Hash 索引 memory 表,
会影响一些查询的执行效率。
(4)Hash索引只能使用整个关键字来搜索一行。
一个表只能有一个聚集索引,但是可以有多个非聚集索引;
层次模型:有且仅有一个节点无父节点,此节点为根节点,其他节点有且仅有一个父节点
网状模型:允许有一个以上的无双亲的节点,一个节点可以有多于一个的双亲;
子查询为表时,需要赋予别名
where中不能有聚合函数,若用可以用having
(摘)
with grant option : 表示用户可以权限传递;一般用在创建一个用户的时使用,表明这个用户具有自己给其他用户进行权限赋予的权限。没有的话,用户就不可以 使用GRANT命令创建用户或者给其它用户授权。