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)
邮箱
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表示变长,即长度可变
当所插入的字符串超出它们的长度时,视情况来处理,如果是严格模式,则会拒绝插入并