博主信息
Sky
博文
291
粉丝
0
评论
0
访问量
6685
积分:0
P豆:617

关于数据库的一些常识

2021年10月21日 19:07:12阅读数:14博客 / Sky

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

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

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

构成上的区别:
  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、幻象读:一个事务两次读取一个范围的记录,两次读取的记录数不一致。

版权申明:本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!

全部评论

文明上网理性发言,请遵守新闻评论服务协议

条评论
  • 后端开发需要学内容有:1、编程语言,例如Java、PHP语言等;2、;3、开发框架;4、http协议
    系统中使用结构是二维表。在系型系统中,所有都采用二维表结构来表示,通将这二维表称为系。在系型中,每系都是个二维表。
    中能够唯地标个元组属性或属性组合称为键字。是存放,它存储空间很大,可以存放非。但是并不是随意存放,是有定规则
    MongoDB是个介和非之间产品,是非当中功能最丰富,最像。他支持结构非松散,是类似jsonbson格式,因此可以存储比较复杂类型。
    本文为大家分享了php基本语法,对初学者非有参考价值,希望能够帮助到大家。
    tp6框架需要使用mysql,那对mysql有还是需要知道,今天带大家去学习集,有需要小伙伴可以看看。
    产品有:1、Oracle,是系型;2、DB2,是系型;3、SQL Server,是款功能全面;4、PostgreSQL,是款开源
    什么是wireshark就不多说了,简而言之,个强大包捕获工具。 我们经用它来抓取包,然后来分析这包。
    java工程师需要掌握技术:1、CoreJava,可以直接看源代码;2、多线程并发编程;3、I/O,Socket编程;4、JVM;5、设计模式;6、Oracle、MySQL
    中,索引是种单独、物理表中列或多列值进行排序种存储结构,它是某个表中列或若干列值集合和相应指向表中物理标逻辑指针清单。
    microsoft visual c++是微软组件,里面包括C++标准、原始等相信息;microsoft visual c++可以删除,但不建议删除,因为会影响部分软件使用。
    有mysql、oracle、sqlserver、sqlite等。mysql性能较好,适用所有平台,是当前最流行系型
    系型有:1、mongodb;2、cassandra;3、redis;4、hbase;5、neo4j;其中mongodb是非著名NoSQL,它是个面向文档开源
    access中表和系是:可以包含多个表。
    java面试题及答案:本文为大家分享了面试题,具有参考价值,希望可以帮助到大家。
    除了最和缓存之外,之前我们已经介绍了在Spring Boot中如何配置和使用MongoDB、LDAP这存储案例。
    PHP中经需要和打交道,所以对每次连接信息要比较了解,PHP中利用PDO方式连接话,可以使用getAttribute()方法获取信息,本文就带大家起来看看。
    SQL语言是系型标准语言。SQL语言是种特殊目编程语言,是查询和程序设计语言,用存取以及查询、更新和管理系统。
    mysql栏目为大家介绍MySQL锁与事物隔离级别起学习。
    管理软件有:1、MySQL,是管理系统;2、SQL Server,是Web上最流行存储;3、Oracle,世界上使用最广泛系统之