第三十二套

第1题:统计北京企业的平均注册资金

sql

SELECT AVG(rcapital) AS 平均注册资金

FROM tb_entp

WHERE ecity = ‘北京’;

解析:

AVG(rcapital):计算注册资金的平均值

WHERE ecity = ‘北京’:筛选所在城市为北京的企业

结果保存到 sj11.txt 文件中

第2题:添加法人记录

sql

INSERT INTO tb_jperson (jno, jname, jid, jbirth, edu)

VALUES (‘J600’, ‘马六’, ‘110101198012125678’, ‘1980-12-12’, NULL);

解析:

日期格式:’1980-12-12’(标准日期格式)

文化程度 edu 未提供,设为 NULL

注意:身份证号是字符串类型,需加引号

第3题:添加备注字段

sql

ALTER TABLE tb_item

ADD COLUMN memo VARCHAR(30) DEFAULT ‘无’;

解析:

ADD COLUMN:添加新字段

memo VARCHAR(30):备注字段,可变长字符型,长度30

DEFAULT ‘无’:缺省值为“无”

第4题:创建视图

sql

CREATE VIEW v_sj14 AS

SELECT e.ename AS 企业名称,

       j.jname AS 法人姓名,

       e.rdate AS 注册时间

FROM tb_entp e

JOIN tb_jperson j ON e.jno = j.jno;

解析:

视图名:v_sj14

字段别名:企业名称、法人姓名、注册时间

连接条件:企业表与法人表通过 jno 关联

第5题:授予用户权限

sql

GRANT SELECT, UPDATE

ON db_enterprise.tb_jperson

TO ‘zhang’@’localhost’, ‘tong’@’localhost’;

解析:

GRANT SELECT, UPDATE:授予查看和修改权限

ON db_enterprise.tb_jperson:指定数据库和表

TO ‘zhang’@’localhost’, ‘tong’@’localhost’:同时授权两个用户

DELIMITER $$

CREATE  PROCEDURE sp_entp(IN _____ CHAR(20),IN indate  DATE)

BEGIN

   SELECT e.ename,iname,rdate,rcaptial

   FROM tb_entp e JOIN tb_scope s ON e.eno=s.eno JOIN tb_item i ON s.ino=i.ino

   WHERE e.ecity=incity  AND e.rdate_____indate;

END $$

DELIMITER ;

CALL sp_entp(‘北京’,_____ );

第1个空:incity

sql

复制下载

CREATE PROCEDURE sp_entp(IN incity CHAR(20), IN indate DATE)

第2个空:<

sql

复制下载

WHERE e.ecity = incity AND e.rdate < indate;

解析

题目要求:检索指定日期之前注册的企业

所以使用小于号 <

e.rdate < indate 表示注册日期早于输入的日期

第3个空:‘2018-10-10’

sql

复制下载

CALL sp_entp(‘北京’, ‘2018-10-10’);

解析

调用存储过程时,传入第二个参数(日期)

题目要求:检索 2018年10月10日之前 在北京注册的企业

日期格式:’YYYY-MM-DD’(标准日期格式)

必须用引号括起来

CREATE TRIGGER tr_item  AFTER UPDATE

  ON ______ FOR EACH ROW

  UPDATE  ______

  SET ino=______

  WHERE tb_scope.ino=______;

二、逐空详解

第1个空:tb_item

答案:tb_item

解析:

触发器要绑定在业务项目信息表上

当这个表中的业务项目编号被更新时,触发器的动作才会执行

题目要求:当更新业务项目信息表中的业务项目编号时触发

第2个空:tb_scope

答案:tb_scope

解析:

触发器要更新的目标表是企业业务表

这个表存储了企业和业务项目的关联关系(eno, ino)

当业务项目编号改变时,需要同步更新这个表中的关联记录

第3个空:NEW.ino

答案:NEW.ino

解析:

NEW 是触发器中的特殊变量,代表更新后的新值

NEW.ino 是业务项目表更新后的新编号

将企业业务表中的业务编号更新为新值

第4个空:OLD.ino

答案:OLD.ino

解析:

OLD 是触发器中的特殊变量,代表更新前的旧值

OLD.ino 是业务项目表更新前的旧编号

找到企业业务表中所有使用旧编号的记录进行更新

<html >
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> 
<body>

<?php
	$con=mysql_connect("localhost:3306","root","")
   		 or die("no database!<br>");
//*********Found********
 		mysql_select_db ("_________",$con) or die( "database fail!<br>");
		mysql_query("SET NAMES gb2312");   
	if(isset($_GET['jno']))
	{
		$jno=$_GET['jno'];
		$sql_en="select ename,ecity,rdate from tb_entp e join tb_jperson j on e.jno=j.jno where  e.jno='$jno'";
//*********Found********
		$result_en=mysql_query(_________,$con);
?>
		<table border='1px'>
		  <caption>企业概况</caption>
		  <tr>
			<td>企业名称</td>
			<td>所在城市</td>
			<td>注册日期</td>
		  </tr>
<?php

//*********Found********
  while($row_en=mysql_fetch_array(__________,MYSQL_NUM)){
?>
  <tr> 
    <td><?php echo $row_en[0];?></td>
    <td><?php echo $row_en[1];?></td>
    <td><?php echo $row_en[2];?></td>
  </tr>
<?php
  }
?> 
</table>
   <a href="sj3.php">Back</a>
 <?php
	}
	else{
		$sql_person="SELECT jno,jname FROM tb_jperson";
//*********Found********
		$result_person=___________($sql_person,$con);
?>
		<table border='1px'>
		<caption>所有法人</caption>
		  <tr>
			<td>法人编号</td>
			<td>法人姓名</td>
			<td>关联企业</td>
		  </tr>
<?php
//*********Found********
  while(___________=mysql_fetch_array($result_person)){
?>
  <tr> 
    <td><?php echo $rows_person[0];?></td>
    <td><?php echo $rows_person[1];?></td>
    <td><a href="/sj3.php?jno=<?php echo $rows_person[0];?>">查看</a></td>
  </tr>
<?php
	}
	?> 
	</table><br/><br/>
	
<?php	
  }

  mysql_close( $con); ?>
</body>
</html>

第1个空:db_enterprise

php复制下载

mysql_select_db ("db_enterprise",$con) or die( "database fail!<br>");

解析

  • mysql_select_db() 用于选择要操作的数据库
  • 题目中明确数据库名为 db_enterprise
  • 第1个参数是数据库名称

第2个空:$sql_en

php复制下载

$result_en=mysql_query($sql_en,$con);

解析

  • mysql_query() 执行SQL查询
  • 第1个参数:要执行的SQL语句
  • 前面已经定义了 $sql_en 存储SQL语句
  • 需要将 $sql_en 作为参数传入

SQL语句内容

sql复制下载

select ename,ecity,rdate 
from tb_entp e 
join tb_jperson j on e.jno=j.jno 
where e.jno='$jno'

第3个空:$result_en

php复制下载

while($row_en=mysql_fetch_array($result_en, MYSQL_NUM)){

解析

  • mysql_fetch_array() 从结果集中取一行
  • 第1个参数:结果集资源
  • 第2个参数 MYSQL_NUM 指定返回索引数组
  • 后面代码使用 $row_en[0]$row_en[1]$row_en[2] 索引访问

MYSQL_NUM 常量说明

常量返回类型访问方式
MYSQL_NUM索引数组$row[0]$row[1]
MYSQL_ASSOC关联数组$row['字段名']
MYSQL_BOTH两者都支持两种方式都可以

第4个空:mysql_query

php复制下载

$result_person=mysql_query($sql_person,$con);

解析

  • 执行SQL查询获取所有法人信息
  • $sql_person 是SQL语句:SELECT jno,jname FROM tb_jperson
  • 第1个参数:SQL语句
  • 第2个参数:数据库连接资源 $con

第5个空:$rows_person

php复制下载

while($rows_person=mysql_fetch_array($result_person)){

解析

  • 循环遍历结果集
  • 将当前行数据赋值给 $rows_person 变量
  • 后面代码使用 $rows_person[0] 和 $rows_person[1] 访问数据
  • 变量名需要与后面使用的一致

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注