最新消息:

PHP面试题:第二回

PHP huayuguoji 97浏览 0评论

PHP面试题:第二回

华育国际暖心奉献PHP面试题—— 第二回

1.Include和require区别?

require 的使用方法如 require(“MyRequireFile.php”); 。这个函数通常放在 PHP 程序的最前面,PHP 程序在执行前,就会先读入 require 所指定引入的文件,使它变成 PHP 程序网页的一部份。常用的函数,亦可以这个方法将它引入网页中。

include 使用方法如 include(“MyIncludeFile.php”); 。这个函数一般是放在流程控制的处理部分中。PHP 程序网页在读到 include 的文件时,才将它读进来。这种方式,可以把程序执行时的流程简单化。

他们两个的用途是完全一样的,不一定非得哪个放在最前面哪个放在中间。他们最根本的区别在于错误处理的方式不一样。

require一个文件存在错误的话,那么程序就会中断执行了,并显示致命错误

include一个文件存在错误的话,那么程序不会中端,而是继续执行,并显示一个警告错误。

2.写出下列代码的执行结果:

<?php

$a=”First”;

$b=&$a;

$c=$a;

$a=”Second”;

$d=’$a,’.$b.’,’.$c;

print(“\$d=$d”);

//代码输出结果:$d=$a,Second,First

?>

3、写出下列代码输出结果:

<?php

$a=2;

$b=”1.2SBC3″;

$c=”EFC”;

$result1=$a.$b;

$result2=$a*$b;

$result3=$a*$c;

print(“$result1,$result2,$result3 <br>”);

//代码执行结果:21.2SBC3,2.4,0

?>

4、.myisam和innodb的最大区别?

Innodb:支持事务;

Myisam:不支持事务;

5、.有一张成绩表,如下:

学生姓名 科目类别 成绩

王明 语文 90

王明 化学 95

王明 英语 85

王明 物理 93

王明 数学 88

王明 政治 91

赵军 语文 92

。。。 。。。 。。。

写出最少有三门科目大于90分的学生的所有成绩的SQL.

答案如下:

drop database student;

create database student character set gbk;

set names gbk;

use student;

create table xuesheng(

id int auto_increment primary key,

name varchar(10),

kemu varchar(10),

chengji varchar(10)

);

insert into xuesheng values(‘ ‘,’王明’,’语文’,90);

insert into xuesheng values(‘ ‘,’王明’,’化学’,95);

insert into xuesheng values(‘ ‘,’王明’,’英语’,85);

insert into xuesheng values(‘ ‘,’王明’,’物理’,93);

insert into xuesheng values(‘ ‘,’王明’,’数学’,88);

insert into xuesheng values(‘ ‘,’王明’,’政治’,91);

insert into xuesheng values(‘ ‘,’赵军’,’语文’,90);

insert into xuesheng values(‘ ‘,’赵军’,’化学’,95);

insert into xuesheng values(‘ ‘,’赵军’,’英语’,85);

insert into xuesheng values(‘ ‘,’赵军’,’物理’,81);

insert into xuesheng values(‘ ‘,’赵军’,’数学’,88);

insert into xuesheng values(‘ ‘,’赵军’,’政治’,21);

insert into xuesheng values(‘ ‘,’大牛’,’语文’,90);

insert into xuesheng values(‘ ‘,’大牛’,’化学’,95);

insert into xuesheng values(‘ ‘,’大牛’,’英语’,85);

insert into xuesheng values(‘ ‘,’大牛’,’物理’,93);

insert into xuesheng values(‘ ‘,’大牛’,’数学’,88);

insert into xuesheng values(‘ ‘,’大牛’,’政治’,91);

select * from xuesheng;

[查询结果如下]

mysql> select * from xuesheng;

+—-+——–+——–+———+

| id | name | kemu | chengji |

+—-+——–+——–+———+

| 1 | 王明 | 语文 | 90 |

| 2 | 王明 | 化学 | 95 |

| 3 | 王明 | 英语 | 85 |

| 4 | 王明 | 物理 | 93 |

| 5 | 王明 | 数学 | 88 |

| 6 | 王明 | 政治 | 91 |

| 7 | 赵军 | 语文 | 90 |

| 8 | 赵军 | 化学 | 95 |

| 9 | 赵军 | 英语 | 85 |

| 10 | 赵军 | 物理 | 81 |

| 11 | 赵军 | 数学 | 88 |

| 12 | 赵军 | 政治 | 21 |

| 13 | 大牛 | 语文 | 90 |

| 14 | 大牛 | 化学 | 95 |

| 15 | 大牛 | 英语 | 85 |

| 16 | 大牛 | 物理 | 93 |

| 17 | 大牛 | 数学 | 88 |

| 18 | 大牛 | 政治 | 91 |

+—-+——–+——–+———+

18 rows in set (0.00 sec)

select name,kemu, chengji from xuesheng where name in (select name from xuesheng where chengji>=90 group by name having count(kemu)>=3);

mysql> select name,kemu, chengji from xuesheng where name in (select name from xuesheng where chengji>=90 group by name having count(kemu)>=3);

+——–+——–+———+

| name | kemu | chengji |

+——–+——–+———+

| 王明 | 语文 | 90 |

| 王明 | 化学 | 95 |

| 王明 | 英语 | 85 |

| 王明 | 物理 | 93 |

| 王明 | 数学 | 88 |

| 王明 | 政治 | 91 |

| 大牛 | 语文 | 90 |

| 大牛 | 化学 | 95 |

| 大牛 | 英语 | 85 |

| 大牛 | 物理 | 93 |

| 大牛 | 数学 | 88 |

| 大牛 | 政治 | 91 |

+——–+——–+———+

12 rows in set (0.00 sec)

6.有以下三张表,销售主表(SALE)、销售子表(PRODUCT_SALE)、产品表(PRODUCT)

SALE(order_id,salesman,customer,contract_date)

分别表示:订单号,业务员,客户名称,合同日期

PRODUCT_SALE(order_id,product_id,sale_count,sales_amount)

分别表示:订单号,产品编号,销售数量,销售金额

PRODUCT(product_id, product_name,number)

分别表示:产品编号,产品名称,产品数量

请根据以下条件,写出分别sql语句

1.统计合同日期为2016年10月的各业务员的销售数量和销售金额

2.统计合同日期为2016年10月的各产品的销售数量和销售金额

3.计算业务员‘张三’销售的产品为”维生素b”的平均价格

4.显示所有产品的库存,要求显示产品名称和库存数量(用一条SQL)

5.显示所有产品库存,要求显示产品名称,库存数量,库存状态(用一条SQL语句)

当库存数>=10000时,库存状态显示库存积压;

当库存数<=1000时,库存状态显示库存不足;

其他情况,库存状态显示库存正常。

答案如下:

create database xiaoshou character set gbk;

use xiaoshou;

#销售主表

create table sale(

order_id varchar(20), #订单号

salesman varchar(50), #业务员

customer varchar(50), #客户名称

contract_date varchar(20) #合同日期

);

insert into sale values( 20160123,’张三’,’李四’,201610) ;

insert into sale values(20164562,’王五’,’赵六’,201609) ;

insert into sale values(20164585,’张三’,’田七’,201607) ;

insert into sale values(20167845,’赵四’,’王二’,201603) ;

insert into sale values(20164512,’张三’,’李四’,201606) ;

insert into sale values(20167854,’张三’,’李四’,201608) ;

insert into sale values(20169658,’张非’,’李四’,201602) ;

insert into sale values(20163258,’张三’,’田三’,201604) ;

insert into sale values(20166541,’孙子’,’李四’,201605) ;

insert into sale values(20166541,’佰康’,’吴东’,201610) ;

#销售子表

create table product_sale(

order_id int references sale(order_id), #订单号

product_id int references product(product_id), #产品编号

sale_count varchar(20), #销售数量

sales_amount varchar(20), #销售金额

primary key(order_id,product_id)

);

insert into product_sale values(20166541,1111,6584,9000);

insert into product_sale values(20160123,2222,4000,4000);

insert into product_sale values(20163258,3333,498,5670);

insert into product_sale values(20164512,4444,5321,9874);

insert into product_sale values(20167845,5555,4000,9874);

insert into product_sale values(20169658,6666,4000,9874);

#产品表

create table product(

product_id int auto_increment primary key,#产品编号

product_name varchar(20), #产品名称

number varchar(20) #产品数量

);

insert into product values(1111,’维生素a’,20000);

insert into product values(2222,’维生素b’,30000);

insert into product values(3333,’维生素c’,40000);

insert into product values(4444,’维生素d’,50000);

insert into product values(5555,’维生素e’,4099);

insert into product values(6666,’维生素f’,7000);

1.统计合同日期为2016年10月的各业务员的销售数量和销售金额

select a. salesman ,b.sale_count ,b.sales_amount from

(select * from sale where contract_date=201610) as

a ,product_sale b where a.order_id =b.order_id ;

+———-+————+————–+

| salesman | sale_count | sales_amount |

+———-+————+————–+

| 张三 | 4000 | 4000 |

| 佰康 | 6584 | 9000 |

+———-+————+————–+

2.统计合同日期为2016年10月的各产品的销售数量和销售金额

select c.product_name ,b.sale_count ,b.sales_amount from

(select * from sale where contract_date=201610) as

a ,product_sale b,product c where

a.order_id =b.order_id and

b.product_id=c.product_id

order by product_name;

+————–+————+————–+

| product_name | sale_count | sales_amount |

+————–+————+————–+

| 维生素a | 6584 | 9000 |

| 维生素b | 4000 | 4000 |

+————–+————+————–+

3.计算业务员‘张三’销售的产品为”维生素b”的平均价格

select b.sales_amount/b.sale_count ‘平均价格’ from

(select * from sale where contract_date=201610) as a ,

product_sale b,product c

where a.order_id =b.order_id and

c.product_name=’维生素b’ and

a. salesman=’张三’;

+————–+

| 平均价格 |

+————–+

| 1 |

+————–+

4.显示所有产品的库存,要求显示产品名称和库存数量(用一条SQL)

select c.product_name ‘产品名称’, c.number-b.sale_count ‘库存数量’ from

sale a ,product_sale b,product c

where a.order_id =b.order_id

and b.product_id=c.product_id

group by c.product_name;

+————–+————–+

| 产品名称 | 库存数量 |

+————–+————–+

| 维生素a | 13416 |

| 维生素b | 26000 |

| 维生素c | 39502 |

| 维生素d | 44679 |

| 维生素e | 99 |

| 维生素f | 3000 |

+————–+————–+

5.显示所有产品库存,要求显示产品名称,库存数量,库存状态(用一条SQL语句)

当库存数>=10000时,库存状态显示库存积压;

当库存数<=1000时,库存状态显示库存不足;

其他情况,库存状态显示库存正常。

select product_name ‘产品名称’, c.number-b.sale_count ‘库存数量’ , case when c.number-b.sale_count>=10000 then ‘库存积压’ when c.number-b.sale_count<=1000 then ‘库存不足’ else ‘库存正常’ end as ‘库存情况’

from product_sale b,product c where b.product_id =c.product_id group by b.product_id ;

+————–+————–+————–+

| 产品名称 | 库存数量 | 库存情况 |

+————–+————–+————–+

| 维生素a | 13416 | 库存积压 |

| 维生素b | 26000 | 库存积压 |

| 维生素c | 39502 | 库存积压 |

| 维生素d | 44679 | 库存积压 |

| 维生素e | 99 | 库存不足 |

| 维生素f | 3000 | 库存正常 |

+————–+————–+————–+

CREATE TABLE product (

pro_id varchar(10) NOT NULL,

pro_name varchar(50) DEFAULT NULL,

pro_count int(10) DEFAULT NULL,

PRIMARY KEY (pro_id)

)

CREATE TABLE product_ss (

id int(11) NOT NULL AUTO_INCREMENT,

pro_id varchar(10) DEFAULT NULL,

sale_count int(6) DEFAULT NULL,

ss_date datetime DEFAULT NULL,

PRIMARY KEY (id),

FOREIGN KEY (pro_id) REFERENCES product (pro_id)

);

2.select * from product where pro_id like ‘12%’;

3.insert into product_sale values(null,’67890′,2000,CURRENT_TIMESTAMP); commit;

4. select p.pro_name ,(p.pro_count-s.sale_count) as ‘库存’ from product p,product_sale s where p.pro_id=s.pro_id;

5.select pro_name, case when p.pro_count-s.sale_count>=10000 then ‘库存积压’ when p.pro_count-s.sale_count<=1000 then ‘库存不足’ else ‘库存正常’ end as ‘库存情况’

from product p,product_sale s where p.pro_id=s.pro_id group by p.pro_id ;

更多专业内容可关注华育国际公众号;浏览华育官网

转载请注明:PHP学习 » PHP面试题:第二回

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址