php面试mysql数据库题_PHP面试题 - MySQL数据库

1. 写出下面2个PHP操作Mysql函数的作用和区别(新浪网技术部)

mysql_num_rows()

mysql_affected_rows()

这两个函数都作用于mysql_query($query)操作的结果,mysql_num_rows()返回结果集中行的数目。mysql_affected_rows()取得前一次MySQL操作所影响的记录行数。mysql_num_rows()仅对SELECT语句有效,要取得被INSERT,UPDATE或者DELETE查询所影响到的行的数目,用mysql_affected_rows()。

相关题目:取得查询结果集总数的函数是? mysql_num_rows()

2. sql语句应该考虑哪些安全性?(新浪网技术部)

防止Sql注入,对特殊字符进行转义、过滤或者使用预编译的sql语句绑定变量。

最小权限原则,特别是不要用root账户,为不同的类型的动作或者组建使用不同的账户。

当sql运行出错时,不要把数据库返回的错误信息全部显示给用户,以防止泄露服务器和数据库相关信息。

3. 简单描述mysql中,索引,主键,唯一索引,联合索引的区别,对数据库的性能有什么影响(从读写两方面)(新浪网技术部)

索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针。

普通索引(由关键字KEY或INDEX定义的索引)的唯一任务是加快对数据的访问速度。

普通索引允许被索引的数据列包含重复的值。如果能确定某个数据列将只包含彼此各不相同的值,在为这个数据列创建索引的时候就应该用关键字UNIQUE把它定义为一个唯一索引。也就是说,唯一索引可以保证数据记录的唯一性。

主键,是一种特殊的唯一索引,在一张表中只能定义一个主键索引,主键用于唯一标识一条记录,使用关键字PRIMARYKEY来创建。

索引可以覆盖多个数据列,如像INDEX(columnA,columnB)索引,这就是联合索引。

索引可以极大的提高数据的查询速度,但是会降低插入、删除、更新表的速度,因为在执行这些写操作时,还要操作索引文件。

4. 有一个留言板,用mysql做数据库,用户信息包括:用户名,密码,email,留言内容包括:留言ID,标题,内容,发表时间,状态(审核,未审核)(新浪网技术部)

请实现下列需求:

(1).数据库结构。无需写建表语句,用类似下面的表格,描述清楚即可,注意,要在索引栏中注明是否需要创建索引,以及要创建的索引的类型

表名

table_aaa

字段名

字段说明

字段类型

索引

name

姓名

varchar(64)

唯一索引

gender

性别

enum('M','F')

(2).用一个sql语句查询出发表留言数量大于10条的用户名及其留言数量,查询结果按文章数量降序排列

参考答案:

用户表结构如下:

表名

user

字段名

字段说明

字段类型

索引

user_id

用户编号

int unsigned

主键

name

用户名

varchar(30)

password

密码

char(32)

email

邮箱

varchar(50)

留言表结构如下:

表名

message

字段名

字段说明

字段类型

索引

message_id

留言编号

int unsigned

主键

title

标题

varchar(100)

content

内容

text

user_id

用户id

int unsigned

普通索引

pubtime

发表时间

int unsigend

state

状态

tinyint 0 未审核 1 审核

查询语句如下:

SELECT u.name,COUNT(*) AStotalFROM user AS u INNER JOIN message ASmON u.user_id = m.user_id

GROUP BYu.nameHAVING total > 10

ORDER BY total DESC

5. 如何用命令把mysql里的数据备份出来(酷讯PHP工程师笔试题)

(1).导出一张表

mysql dump -u 用户名 -p 密码 库名 表名 > 文件名(如D:/a.sql)

(2).导出多张表

mysql dump -u 用户名 -p 密码 库名 表名1 表名2 表名3 > 文件名(如D:/a.sql)

(3).导出所有表

mysql dump -u 用户名 -p 密码 库名 > 文件名(如D:/a.sql)

(4).导出一个库

mysql dump -u 用户名 -p 密码 -B 库名 > 文件名(如D:/a.sql)

6. 两张表city表和province表。分别为城市与省份的关系表。

city:

id

city

provinceid

1

广州

1

2

深圳

1

3

惠州

1

4

长沙

2

5

武汉

3

province:

id

province

1

广东

2

湖南

3

湖北

(1).写一条sql语句关系两个表,实现:显示城市的基本信息。

显示字段:城市id,城市名,所属省份。如:

id(城市id)cityname(城市名)privence(所属省份)

……

SELECT c.id AS id,c.city AScityname,p.provinceFROM city c LEFT JOIN provincep ON c.provinceid = p.id

(2).如果要统计每个省份有多少个城市,请用groupby查询出来。

显示字段:省份id,省份名,包含多少个城市。

SELECT p.id,p.province,count(c.id) ASnumFROM cityc LEFT JOIN provincep ON c.provinceid =p.id

GROUPBY p.id;

7. MySQL数据库中的字段类型varchar和char的主要区别是什么?哪种字段的查找效率要高,为什么?

区别一,定长和变长

char表示定长,长度固定,varchar表示变长,即长度可变

当所插入的字符串超出它们的长度时,视情况来处理,如果是严格模式,则会拒绝插入并

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值