SQL学习笔记-七日打卡-day5

215 阅读4分钟

S Q L

基础例子

SQL

/*注1:原则上SQL关键字应该大写,但小写也没问题*/

/*注2:表名、字段名上的(`)是反引号(在键盘数字1的左侧)这个符号多数情况下可省略*/

/*插入数据*/
INSERT into `表名` (`字段1`,`2`,`3`) values ('值1','2', '3');

/*修改数据*/
UPDATE SET `表名` `字段1`='新值',`字段2`='新值' where 过滤条件;

/*删除语句*/
DELETE FROM `表名` where 过滤条件;

/*查询语句*/
SELECT * FROM `表名` where 过滤条件 ORDER BY 排序字段 DESC;

where 过滤条件

where 后面跟着过滤条件,能够帮你排除无关数据,然后配合(改、删、查)SQL语句,实现你的目的。

SQL

/*删除居住在北京的未成年(不满18)的数据*/
DELETE FROM table where age<18 and city='北京';

/*读取所有未成年(不满18或大于12)数据*/
SELECT * FROM table WHERE age<18 or age>12

以PDO 操作 MySQL 为例

PHP

//连上去
$dsn = 'mysql:dbname=php10-7;host=127.0.0.1';
$pdo = new PDO($dsn,'数据库账号', '密码');

/*******写数据(增删改,都算写)以删为例***********/
# 预定义SQL
$sth = $pdo->prepare("delete from table");
//执行SQL
$sth->execute();

/*******读数据***********/
# 预定义SQL
$sth = $pdo->prepare("select * from table");
//执行SQL
$sth->execute();

//以二维数组形式,获取所有数据,赋值给$rows
$rows = $sth->fetchAll();
//打印一下,看看都得到了什么
var_dump($rows);

可以看出,只需要连一次;读比写多了一个步骤($sth->fetchAll())。

数学运算

先看最容易看懂的,加减乘除余。

PHP

echo 1+1;   //加
echo 1-1;   //减
echo 2*2;   //乘
echo 2/1;   //除
echo 2%2;   //取余数
echo 2**2;  //求幂 (php5.6之后才有)

比较运算

这个很好理解,对两个值进行比较,并返回结果 true 或者 false

PHP

//数学运算,大于小于之类的我就懒得说了
var_dump( 1<2, 1>2, 1<>2 );

//判断两个值是否相等,用 == 号
var_dump( $a == $b );

//不仅判断值是否相等,还判断数据类型是否一致,用 === 
var_dump( $a === $b );

在看几个你可能没注意的

PHP

// = 号不是相等,而是赋值运算符
$a = 1;

// . 号是拼接字符串的运算符
$a = 'a' . 'b';

//+= 的意思是将 $a+1 的结果,再赋给$a
$a +=1;

//1 追加到 $a 的末尾(以字符串形式)
$a .= 1;

极为常用的逻辑运算

and&& 运算符,左右同时为true,则返回true。

PHP

$is = (1>2 and true);
//此时输出 false,因为 1>2为false,导致左表达式不成立
var_dump($is);

// && 和 and 运算符是一个意思,不过&&优先级更高
$is = (1>2 && true);

or|| 运算符,左右任意一个为true,则返回true。

PHP

$is = (1>2 or true);
//此时输出 true,右侧满足true的条件,所以该表达式永远返回 true
var_dump($is);

// || 和 or 运算符是一个意思,不过||优先级更高
$is = (1>2 || true);

if/switch 按照指定条件执行

PHP

/**
 * 根据表达式的计算结果,决定接下来执行的代码
 * 表达式的计算结果,只能是 truefalse
 * 如果结果是其他数据类型,会强行转为 boolean 值
 * */
if(表达式){
    echo 'a';
}else{
    echo 'b';
}

switch的功能和if类似,可自行阅读文档。

for/foreach/while 循环执行特定代码

先看 for 循环,常用于指定次数的循环,比如:循环10次

PHP

// $i变量初始为0
// 每次循环$i的值递增+1($i++)
// 如果$i<10的条件成立,则继续循环;
for($i=0; $i<10; $i++){
    //反复执行此代码,并输出不同的 $i 的值
    echo $i;
}

再看 foreach 循环,用于遍历数组的键值对、对象的属性

PHP

$arr = [1,2,3,4,5];

// 数组有多少个键值对,就执行多少次的循环
// 循环的时候,将当前的键值对,转化为 $key、$value 变量,便于使用
foreach($arr as $key=>$value){
    //输出当前循环对应的 key、values
    var_dump($key, $value);
}

*foreach*语法结构提供了遍历数组的简单方式。*foreach*仅能够应用于数组和对象,如果尝试应用于其他数据类型的变量,或者未初始化的变量将发出错误信息。有两种语法:

PHP

foreach (array_expression as $value)
 statement
foreach (array_expression as $key => $value)
 statement

第一种格式遍历给定的 array_expression 数组。每次循环中,当前单元的值被赋给 $value 并且数组内部的指针向前移一步(因此下一次循环中将会得到下一个单元)。

第二种格式做同样的事,只除了当前单元的键名也会在每次循环中被赋给变量 $key

其他的循环语句,可自行阅读文档。

break/continue 循环控制语句

  • break 跳出循环
  • cuntinue 跳过本次循环,继续下一次

PHP

//实际输出 012346789 没有5,因为5被跳过去了
for($i=0; $i<10; $i++){
    if($i == 5){
        cuntinue;
    }
    echo $i;
}

include 代码包含语句

实际开发中,我们会将频繁使用的公共代码,放在其他 .php的文件中,通过 include 来包含使用,以降低代码重复率。

先写一个函数库文件

PHP

// functions.php
function debug(){
    echo '输出调试信息';
}

在程序中包含函数库,并调用相关函数。

PHP

//先包含 functions.php 这个文件
include('functions.php');

//之后就可以调用debug函数了。
debug();

PHP 实际上提供了4个包含语句,功能类似,请参考:

  • include(文件名)
    • 包含指定文件
  • require(文件名)
    • 包含指定文件,如果包含失败,程序停止运行
  • include_once()
    • 同一个文件仅包含一次,其他功能同 include
  • require_once();
    • 同一个文件仅包含一次,其他功能同 require

函数简介

函数的意义,在于“封装”常用代码,以便重复使用。

术语

  • 定义
    • 就是编写函数
  • 调用
    • 就是使用编写好的函数。
  • 行参
    • 定义函数时填写的参数列表,比如xy($a,$b)
  • 实参
    • 调用函数时,逐一填写的参数值,比如 xy(1,2)
  • 返回值
    • 函数通过 return 输出的执行结果
  • 默认值
    • 定义函数时,给参数定义默认值 xy($a,$b=2)
    • 调用函数时,可以省略该参数 xy(1),第二个参数默认为2
  • 局部变量
    • 函数内部定义的变量(函数外不可用)
  • 全局变量
    • 函数外定义的变量(函数内不可用)

先看一个例子

PHP

// 定义函数
// 函数功能:检查a,b,c参数的有效性,并返回 $a,$b,$c 的计算结果
function xy($a, $b, $c=3){

    //如果 a,b,c 任意一个不是数字,则返回 null
    if( !is_numeric($a) || !is_numeric($b) || !is_numeric($b) ){
        return NULL;
    }

    //进行运算,并返回结果
    $x = $a+$b+$c;
    return $x;
}

// 调用函数,并传入数字进行运算
// 注意,没有传参数3,因为$c 有默认值,可省略
$r1 = xy(1,2);

// 这一次传递了参数3,
$r3 = xy(8,10,5);

//传入的参数,并非数字,会返回 null
$r4 = xy('a','b');

例子语法分解

PHP

function xy($a, $b, $c=3){
    $x = $a+$b+$c;
    return $x;
}

$r1 = xy(1,2);

逐一解释

  • function 关键字,表示你要定义函数

  • xy 是函数的唯一名字,调用时需要使用

  • ($a,$b,$c=3)
    <!--17-->
    
    - `$r1` 用于接收函数返回值的变量
    - `xy()` 调用函数
    - `1,2` 分别对应函数的 `$a`,`$b` 参数
    

局部变量 vs 全局变量

参考变量 中的说明,在函数内定义的变量为局部变量(外部不可见)反之,函数外定义的变量为全局变量,函数内也不可见。

想互通?你以为函数的参数传递、返回值,是用来解决什么问题的?