

第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]访问数据 - 变量名需要与后面使用的一致
发表回复