总结一下了最近看的书,结合面试中经常问到的问题,记录一下,以便自己以后能温故而知新。知识点顺序比较杂乱,看到哪就记录到哪。
从本质上讲,数据库系统不过就是一套对大量信息数据进行管理的高效管理办法而已。
使用数据库系统能带来的优势主要有以下几点:
1、快速记录和灵活快捷的检索。
2、灵活的输出格式,比如支持报表打印、作为其他程序的数据输入、汇总信息等等
3、信息资料能共享
数据库就是用来存放信息的仓库,结构简单,遵守一定的规则:
1、数据库里的数据集合都存放在数据表(Table)里
2、数据表由数据行和数据列构成
3、一个数据行就是数据表里的一条记录
MySQL的体系结构:
mysql采用的就是客户服务器结构。当你使用mysql的时候,你实际上是在使用两个程序。第一个是MySQL服务器程序,指的是mysqld程序,运行在存放着你数据库的服务器上。它负责在网络上监听并处理来自客户的服务请求,根据这些请求去访问数据库的内容,再把有关信息回传给客户。第二个程序就是MySQL客户程序,负责连接到数据库服务器,并通过向服务器发出查询命令来告知它们需要哪些信息。
这个客户服务器体系结构好处:
1、并发控制由服务器提供,因此不会出现两个用户同时修改同一记录的想象。
2、你不必非得在存放着你的数据库的那台机器上登录。
MySQL数据里面的NULL值
NULL是一个特殊的值,不能用来与有数据的值进行运算或者比较。如果需要对NULL值进行查找,不能使用!=、<>、=来测试它们是否相等,必须使用is NULL或者is NOT NULL来判断。如果设定按升序排序,它们将出现在查询结果的开头,按降序排序,则会出现在查询结果的结尾。
count(*)和count(字段)的区别:
count(*) 查出来的是:结果集的总条数
count(字段名) 查出来的是: 结果集中‘字段名’不为空的记录的总条数
char和varchar的区别:
(1) char的长度是不可变的;
而varchar的长度是可变的,也就是说,定义一个char[10]和varchar[10],如果存进去的是‘csdn’,那么char所占的长度依然为10,除了字符‘csdn’外,后面跟六个空格,而varchar就立马把长度变为4了,取数据的时候,char类型的要用trim()去掉多余的空格,而varchar是不需要的,尽管如此,char的存取数度还是要比varchar要快得多,因为其长度固定,方便程序的存储与查找;但是char也为此付出的是空间的代价,因为其长度固定,所以难免会有多余的空格占位符占据空间,可谓是以空间换取时间效率,而varchar是以空间效率为首位的。
(2)char的存储方式是,对英文字符(ASCII)占用1个字节,对一个汉字占用两个字节;而varchar的存储方式是,对每个英文字符占用2个字节,汉字也占用2个字节,两者的存储数据都非unicode的字符数据。
delete与drop的区别:
DELETE
DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROMtbl_name[PARTITION (partition_name,...)] [WHEREwhere_condition] [ORDER BY ...] [LIMITrow_count]
delete是DML,执行delete操作时,每次从表中删除一行,并且同时将该行的的删除操作记录在redo和undo表空间中以便进行回滚(rollback)和重做操作,但要注意表空间要足够大,需要手动提交(commit)操作才能生效,可以通过rollback撤消操作。
有where条件删除where条件中所限制的数据;没有where条件则删除所有的数据
如果有order by从句,则根据order by的排序顺序依次删除,如果有limit 从句则只删除limit限制的数量
执行速度最慢,但是安全性最高
DROP
DROP [TEMPORARY] TABLE [IF EXISTS]tbl_name[,tbl_name] ... [RESTRICT | CASCADE]
直接删除表结构的文件和数据文件,执行速度最快