PHP测试题
1.什么是MySQL范式?
简言之就是,数据库设计对数据的存储性能,还有开发人员对数据的操作都有莫大 的关系。所以建立科学的,规范的的数据库是需要满足一些规范的来优化数据数据存 储方式。在关系型数据库中这些规范就可以称为范式。
2.MySQL的范式一共有几种,每种范式的概念是什么?
第一范式:1NF:字段不可分,否则就不是关系数据库;
第二范式:2NF:有主键,非主键字段依赖主键,唯一性一个表只说明一个事物;
第三范式:3NF:非主键字段不能相互依赖,每列都与主键有直接关系,不存在传递 依赖(间接关系)
3.MySQL的数据类型有几种,分别是什么?
数值类型
日期与时间类型
字符串类型
4.Crul_init函数的作用是什么?具体使用中可以有哪些参数?
新建一个会话,可使用url参数,url参数为会话地址。
5.curl_setopt函数的作用是什么?具体使用中可以有哪些参数并说明哪个选项是必要。
设置会话选项,ch :会话句柄;name :选项名称;value :选项值; CURLOPT_URL选项是必要的。
6.innodb弓|擎与MyIASM引擎的区别是什么?
区别于其他数据库的最重要的特点就是其插件式的表存储引擎。切记:存储引 擎是基于表的,而不是数据库。
InnoDB 与 MylSAM 的区别:
InnoDB 存储引擎:主要面向 OLTP(Online Transaction Processing,在线事务 处理)方面的应用,是第一个完整支持ACID事务的存储引擎(BDB第一个支持事务 的存储引擎,已经停止开发)。
特点:
行锁设计、支持外键;
支持类似于Oracle风格的一致性非锁定读(即:默认情况下读取操作不会产生 锁);
InnoDB将数据放在一个逻辑的表空间中,由InnoDB自身进行管理。从 MySQL4.1版本开始,可以将每个InnoDB存储引擎的表单独存放到一个独立的ibd 文件中;
InnoDB通过使用MVCC(多版本并发控制:读不会阻塞写,写也不会阻塞读)来 获得高并发性,并且实现了 SQL标准的4种隔离级别(默认为REPEATABLE级别);
InnoDB还提供了插入缓冲(insert buffer)、二次写(double write)、自适应哈希 索引(adaptive hash index)、预读(read ahead)等高性能和高可用的功能;
InnoDB采用了聚集(clustered)的方式来存储表中的数据,每张标的存储都按 主键的顺序存放(如果没有显式的在建表时指定主键,InnoDB会为每一行生成一个 6字节的ROWID,并以此作为主键);
InnoDB表会有三个隐藏字段:除了上面提到了 6字节的DB_ROW_ID外,还 有6字节的DB_TX_ID(事务ID)和7字节的DB_ROLL_PTR(指向对应回滚段的地 址)。这个可以通过innodb monitor看到;
MyISAM存储引擎:是MySQLphp调用mysql数据库官方提供的存储引擎,主要面向OLAP(Online Analytical Processing,在线分析处理)方面的应用。
特点:
不支持事务,支持表所和全文索引。操作速度快;
MyISAM存储引擎表由MYD和MYI组成,MYD用来存放数据文件,MYI用来 存放索引文件。MySQL数据库只缓存其索引文件,数据文件的缓存交给操作系统 本身来完成;
MySQL5.0版本开始,MylSAM默认支持256T的单表数据;
7.innodb引擎与MylASM引擎所使用的索引的数据结构是什么?
B+树
MylASM引擎,B+树的数据结构中存储的内容实际上是实际数据的地址值。也就是说它的索 引和实际数据是分开的,只不过使用索引指向了实际数据。这种索引的模式被称为非聚集索引
Innodb引擎的索引的数据结构也是B+树,只不过数据结构中存储的都是实际的数据,这种索 引有被称为聚集索引。
8.MySQL事务是什么,写明事务的四大特性
事务(transaction)是作为一个单元的一组有序的数据库操作。如果组中的所有操作 都成功,则认为事务成功,即使只有一个操作失败,事务也不成功。如果所有操作完 成,事务则提交,其修改将作用于所有其他数据库进程。如果一个操作失败,则事务 将回滚,该事务所有操作的影响都将取消。ACID四大特性,原子性、隔离性、一致性、 持久性。
9.优化数据库的八大方法[3分]
・选取最适用的字段属性,尽可能减少定义字段宽度,尽量把字段设置NOTNULL,例 如省份'、性别'最好适用ENUM
・使用连接(JOIN)来代替子查询
・适用联合(UNION)来代替手动创建的临时表
・事务处理
・锁定表、优化事务处理
・适用外键,优化锁定表
・建立索引
・优化查询语句
10.简单描述mysql中,索引,主键,唯一索引,联合索引的区别,对数据库的性能有 什么影响(从读写两方面)?
索引是一种特殊的文4%InnoDB数据表上的索引是表空间的一个组成部分),它们包含
着对数据表里所有记录的引用指针。
普通索弓1(由关键字KEY或INDEX定义的索弓I)的唯一任务是加快对数据的访问速度。 普通索引允许被索引的数据列包含重复的值。如果能确定某个数据列将只包含彼此各 不相同的值,在为这个数据列创建索引的时候就应该用关键字UNIQUE把它定义为一 个唯一索引。也就是说,唯一索引可以保证数据记录的唯一性。
主键,是一种特殊的唯一索引,在一张表中只能定义一个主键索引,主键用于唯一标 识一条记录,使用关键字PRIMARY KEY来创建。
索引可以覆盖多个数据列,如像INDEX(columnA, columnB)索引,这就是联合索 引。
索引可以极大的提高数据的查询速度,但是会降低插入、删除、更新表的速度,因为 在执行这些写操作时,还要操作索引文件。
11. SQL注入漏洞产生的原因?如何防止?
SQL注入产生的原因:程序开发过程中不注意规范书写sql语句和对特殊字符进行 过滤,导致客户端可以通过全局变量POST和GET提交一些sql语句正常执行。
防止SQL注入的方式:
1)开启配置文件中的 magic_quotes_gpc 和 magic_quotes_runtime 设置
2)执行sql语句时使用addslashes进行sql语句转换
3)Sql语句书写尽量不要省略双引号和单引号。
4)过滤掉 sql 语句中的一些关键词:update、insert、delete、select、*。
5)提高数据库表和字段的命名技巧,对一些重要的字段根据程序的特点命名,取 不易被猜到的。
6)Php配置文件中设置register_globals为off,关闭全局变量注册
7)控制错误信息,不要在浏览器上输出错误信息,将错误信息写到日志文件中。
12.什么是面向对象?主要特征是什么?几大原则是什么?
面向对象是程序的一种设计模式,它利于提高程序的重用性,使程序机构更加 清晰。主要特征是:封装、继承、多态。
五大基本原则:单一职责原则;开放封闭原则;替换原则;依赖原则;接口 分离原则。
13. Myql中的事务回滚机制概述
事务是用户定义的一个数据库操作序列,这些操作要么全做要么全不做,是一 个不可分割的工作单位,事务回滚是指将该事务已经完成的对数据库的更新操作撤 销。
要同时修改数据库中两个不同表时,如果它们不是一个事务的话,当第一个表 修改完,可能第二个表修改过程中出现了异常而没能修改,此时就只有第二个表依 旧是未修改之前的状态,而第一个表已经被修改完毕。而当你把它们设定为一个事 务的时候,当第一个表修改完,第二表修改出现异常而没能修改,第一个表和第二 个表都要回到未修改的状态,这就是所谓的事务回滚。
14.什么是类,什么是对象,类和对象之间的关系
类的概念:类是具有相同属性和服务的一组对象的集合,通俗讲就是对类 似或相同业务代码归类,对不同业务代码进行分类的体现。
对象的概念:对象是系统中用来描述客观事物的一个实体,通俗讲就是一个 业务程序使用时的实例。
类与对象的关系就如模具和铸件的关系。
15.写出调用对象中的方法与属性的实例,写出调用内部的方法与属性的实例
调用对象中的方法:$Object->functionname();
调用对象中的属性:$Object->name;
调用内部的方法:$this->functionname();
调用内部的属性:$this->name;
16.请写出构造函数与析构函数的名称,并阐述函数的具体作用或概念。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论