第一范式:当关系模式R的所有属性都不能在分解为更基本的数据单位时,称R是满足第一范式的,简记为1NF。满足第一范式是关系模式规范化的最低要求,否则,将有很多基本操作在这样的关系模式中实现不了。
第二范式:如果关系模式R满足第一范式,并且R得所有非主属性都完全依赖于R的每一个候选关键属性,称R满足第二范式,简记为2NF。
第三范式:设R是一个满足第一范式条件的关系模式,X是R的任意属性集,如果X非传递依赖于R的任意一个候选关键字,称R满足第三范式,简记为3NF。
第一范式:当关系模式R的所有属性都不能在分解为更基本的数据单位时,称R是满足第一范式的,简记为1NF。满足第一范式是关系模式规范化的最低要求,否则,将有很多基本操作在这样的关系模式中实现不了。
第二范式:如果关系模式R满足第一范式,并且R得所有非主属性都完全依赖于R的每一个候选关键属性,称R满足第二范式,简记为2NF。
第三范式:设R是一个满足第一范式条件的关系模式,X是R的任意属性集,如果X非传递依赖于R的任意一个候选关键字,称R满足第三范式,简记为3NF。
<?php
require_once 'PHPExcel.php';
require_once 'PHPExcel/IOFactory.php';
require_once 'PHPExcel/Reader/Excel5.php';
/* 以上三步加载phpExcel的类
下载地址:https://github.com/PHPOffice/PHPExcel/tree/1.8/Classes */
$filename='F:\PhpStudy\PHPTutorial\WWW\exc\test.xlsx';//指定excel文件
$file = iconv("utf-8","gb2312",$filename); //转码
if(empty($file) OR !file_exists($file)) {
die('file not exists!');
}
$extension = strtolower( pathinfo($filename, PATHINFO_EXTENSION) );
if ($extension =='xlsx') {
$objReader = PHPExcel_IOFactory::createReader('excel2007');
$objReader->setReadDataOnly(true);
$objReader->setLoadSheetsOnly(true);
$objExcel = $objReader ->load($filename);
} elseif ($extension =='xls') {
$objReader = PHPExcel_IOFactory::createReader('excel5');
$objReader->setReadDataOnly(true);
$objReader->setLoadSheetsOnly(true);
$objExcel = $objReader ->load($filename);
}
$sheet = $objExcel->getSheet(0)->toArray();
print_r($sheet);
1.函数—创建—调用—变量 (临时变量declare,用户变量set @xx=xx,系统变量@@)
创建,调用,删除
有返回值的sql语句中都不能够执行除了select 。。。into之外
2.存储过程—创建—查看—调用—删除
参数的类型 in out inout类型的参数 通过out类型的参数可以给存储过程实现返回值
存储过程中 可以执行任意的sql语句,更到的灵活,在实际开发中使用更多
相同点:减少网络流量的消耗
3.视图—创建—调用—删除
数据库中存在的虚表
4.事务:安全的更新数据库的一中方式
四大特征:原子性,一致性,隔离性,持久性
三个操作指令 begin commit rollbacl
1.手动开启事务,手动提交事务
2.成功之后,进行提交,一旦提交不能够车脚
3.失败之后,执行回滚操作,回滚去除脏数据
事务是面向当前连接的
事务更新大批量数据的时候,效率高,更新安全(脏数据)
5.索引:提高查询的效率
降低更新的效率
额外消耗磁盘的效率
/*
* 在PHP中break语句不仅可以跳出当前循环,还可以指定跳出几层循环
* break $num; num为向外跳的层数 num不能大于最大循环层数
*/
// 第三重循环
while(true) {
// 第二重
for(;;) {
// 第一重
for($i = 0; $i <= 10; $i++) {
echo "$i \n";
if($i == 7) {
echo "i=7, 跳出1重循环";
break;
}
}
echo "\n";
// 第一重
for($i = 0; $i <= 20; $i++){
echo "$i \n";
if($i == 15) {
echo "i=15, 跳出3重循环";
break 3;
}
}
echo "绝对不会输出这里";
}
}
/*
* PHP中continue只能终止本次循环而进入到下一次循环中,
* continue $num 可以指定终止第几重的当前循环 num不能大于最大循环层数
*/
$arr = array(1,2,3,4,5,6,7,8,9,10);
for($i = 0; $i < 10; $i++) {
if($i % 2 == 0){
continue;
}
for(;;){
for($j = 0; $j < count($arr); $j++) {
if($j == $i){
echo "\n";
continue 3; //终止第三层的当前循环
}else{
echo "\$arr[".$j."]:".$arr[$j]." ";
}
}
}
echo "这里也绝对不会输出";
}
isset()检查变量是否定义,而empty()检查定义的变量是否是空值:
$g = array(); echo isset($g)?"isset(g) is true \n":"isset(g) is false \n"; echo empty($g)?"empty(g) is true \n":"empty(g) is false \n";
运行结果:
isset(g) is true //$g的值为非null empty(g) is true //$g虽然已定义,但值为空
近期评论