为了账号安全,请及时绑定邮箱和手机立即绑定

关于数据库的一些常识


"空值" 和"NULL"的概念:
  1:空值('')是不占用空间的,判断空字符用 = '' 或者 <> '' 来进行处理;
  2: NULL值是未知的,且占用空间,不走索引;判断 NULL 用 IS NULL 或者 is not null , SQL 语句函数中可以使用 ifnull ()函数来进行处理.
注:在进行 count ()统计某列的记录数的时候,如果采用的 NULL 值,会别系统自动忽略掉,但是空值是统计到其中


数据库产生死锁:
产生死锁的原因主要是: 
(1) 因为系统资源不足。 
(2) 进程运行推进的顺序不合适。 
(3) 资源分配不当等。 
产生死锁的四个必要条件: 
(1)互斥条件:一个资源每次只能被一个进程使用。 
(2)请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。 
(3)不可剥夺条件:进程已获得的资源,在末使用完之前,不能强行剥夺。 
(4)循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系


MySql常用的两种数据库引擎:MyISAM和InnoBD

  1. 构成上的区别:
      InnoDB :基于磁盘的资源是InnoDB表空间数据文件和它的日志文件,InnoDB 表的大小只受限于操作系统文件的大小,一般为 2GB。

MyISAM:每个MyISAM在磁盘上存储成三个文件。第一个文件的名字以表的名字开始,扩展名指出文件类型。

  .frm文件存储表定义。

  数据文件的扩展名为.MYD (MYData)。

  索引文件的扩展名是.MYI (MYIndex)。


2. 事务处理上方面 :
 InnoDB提供事务支持事务,外部键(foreign key)等高级数据库功能.
 MyISAM类型的表强调的是性能,其执行数度比InnoDB类型更快,但是不提供事务支持.


3.  SELECT   UPDATE,INSERT , Delete 操作
 1.如果你的数据执行大量的INSERT 或 UPDATE,出于性能方面的考虑,应该使用InnoDB表

  2.DELETE   FROM table时,InnoDB不会重新建立表,而是一行一行的删除。

  3.LOAD   TABLE FROM MASTER操作对InnoDB是不起作用的,解决方法是首先把InnoDB表改成MyISAM表,导入数据后再改成InnoDB表,但是对于使用的额外的InnoDB特性(例如外键)的表不适用
4.如果执行大量的SELECT,MyISAM是更好的选择


4. 表的具体行数
InnoDB 中不保存表的具体行数,也就是说,执行select count() from table时,InnoDB要扫描一遍整个表来计算有多少行.
select count(
) from table,MyISAM只要简单的读出保存好的行数,注意的是,当count(*)语句包含   where条件时,两种表的操作是一样的


5. 锁
InnoDB:提供行锁(locking on row level),提供与 Oracle 类型一致的不加锁读取(non-locking read in SELECTs),另外,InnoDB表的行锁也不是绝对的,如果在执行一个SQL语句时MySQL不能确定要扫描的范围,InnoDB表同样会锁全表, 例如update table set num=1 where name like “%aaa%”
MyISAM:表锁


关于数据库触发器
A、 触发程序与表相关,当对表执行INSERT、DELETE或UPDATE语句时,将激活触发程序。可以将触发程序设置为在执行语句之前或之后激活。例如,可以在从表中删除每一行之前,或在更新了要想创建触发程序或舍弃触发程序,可使用CREATE TRIGGER或DROP TRIGGER语句

B、触发程序不能调用将数据返回客户端的存储程序,也不能使用采用CALL语句的动态SQL(允许存储程序通过参数将数据返回触发程序)。

C、使用OLD和NEW关键字,能够访问受触发程序影响的行中的列(OLD和NEW不区分大小写)。
在INSERT触发程序中,仅能使用NEW.col_name,没有旧行。在DELETE触发程序中,仅能使用OLD.col_name,没有新行。在UPDATE触发程序中,可以使用OLD.col_name来引用更新前的某一 行的列,也能使用NEW.col_name来引用更新后的行中的列。

D、 触发程序不能使用以显式或隐式方式开始或结束事务的语句,如START TRANSACTION、COMMIT或ROLLBACK。


数据库事务并发带来的问题有:更新丢失、脏读、不可重复读、幻象读。
1、更新丢失:一个事务的更新覆盖了另一个事务的更新。
2、脏读:一个事务读取了另一个事务未提交的数据。
3、不可重复读:一个事务两次读取同一个数据,两次读取的数据不一致。
4、幻象读:一个事务两次读取一个范围的记录,两次读取的记录数不一致。


点击查看更多内容
4人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消