php+mysql

php筆記

導(dǎo)讀

  • wamp
    • 集成開發(fā)環(huán)境
    • w:windows 操作系統(tǒng) mamp lamp
    • a:apache 服務(wù)器 // 提供某種特定功能的代碼塊 web服務(wù)器 發(fā)送/接收請(qǐng)求
    • m:mysql 數(shù)據(jù)庫(kù)服務(wù) // 關(guān)系型/非關(guān)系型 (MongoDB) 關(guān)系模型
    • p: php 是運(yùn)行在服務(wù)器端的腳本語言
  • 靜態(tài)網(wǎng)頁(yè)
    • 沒有鏈接數(shù)據(jù)庫(kù)的網(wǎng)頁(yè)
  • 動(dòng)態(tài)網(wǎng)頁(yè)
    • 鏈接數(shù)據(jù)庫(kù),數(shù)據(jù)庫(kù)中獲取數(shù)據(jù)

服務(wù)器如何處理用戶請(qǐng)求

當(dāng)在地址欄鍵下地址的時(shí)候喷好,瀏覽器會(huì)結(jié)合我們的軟硬件,將http請(qǐng)求發(fā)送到網(wǎng)絡(luò)中搁料,服務(wù)器接收到我們的請(qǐng)求,開始處理我們的請(qǐng)求庆聘,請(qǐng)求的資源分為靜態(tài)資源和動(dòng)態(tài)資源锐借,靜態(tài)資源像:.html, .css, .js等這些后綴名的文件,動(dòng)態(tài)資源像.php,.java等這些資源疗杉,服務(wù)器碰到請(qǐng)求是靜態(tài)資源會(huì)直接返回阵谚,碰到動(dòng)態(tài)資源會(huì)先解析,php文件最終輸出的內(nèi)容將會(huì)交給服務(wù)器烟具,最后服務(wù)器返回輸出的內(nèi)容梢什,當(dāng)瀏覽器接收到返回的內(nèi)容,開始繪制朝聋,碰到href,src,url這些東西的時(shí)候嗡午,會(huì)再次向服務(wù)器發(fā)送請(qǐng)求,最終呈現(xiàn)整個(gè)頁(yè)面

靜態(tài)資源 .html .css .js .jpg .gif .png 以字符串的形式直接返回玖翅,不做處理
動(dòng)態(tài)資源 .php .jsp (php)解析器處理文件 把echo的東西返回

php

php是什么翼馆?

超文本預(yù)處理語言,運(yùn)行在服務(wù)器端金度,能和html進(jìn)行嵌套用于制作動(dòng)態(tài)網(wǎng)頁(yè)的語言

php特點(diǎn)

  • 運(yùn)行在服務(wù)器端的腳本語言
  • 能支持絕大部分的操作系統(tǒng)
  • 能支持大部分的服務(wù)器 apache IIS
  • 能支持大部分的數(shù)據(jù)庫(kù) mysql sql sever Access
  • 能操作數(shù)據(jù)庫(kù)
  • 能操作文件
  • 能操作圖片
  • ...

php基本語法

exit 結(jié)束運(yùn)行 可以用來調(diào)錯(cuò)

die() 結(jié)束運(yùn)行

變量和常量

輸出php的兩種方式
1. echo              輸出字符串
2. var_dump()   輸出類型和值
錯(cuò)誤的幾種情況
  1. error 致命性的錯(cuò)誤  停止執(zhí)行
  2. notice   錯(cuò)誤  繼續(xù)執(zhí)行
  3. warning  錯(cuò)誤  繼續(xù)執(zhí)行
定義變量
    $str = '123';
    var_dump($str);  //string '123' (length=3)
定義常量
    // define("PI", 3.14);
    const PI = 3.14;
    var_dump(PI);
常量和變量的區(qū)別
  • 常量的值不能再改變或者是被刪除
  • 常量不加$
  • 常量只能用const或者是define來定義
  • 常量可以在任何位置去訪問
  • 常量的值不能延遲求值,只能是標(biāo)量(const 不可以严沥,define可以)
判斷變量和常量是否被定義
  • 判斷一個(gè)變量有沒有定義用isset()
  • 判斷一個(gè)常量有沒有定義用defined()
  • 當(dāng)一個(gè)變量值為null的時(shí)候猜极。被認(rèn)為是沒有定義
    var_dump($nub = null); 
    var_dump(isset($nub)); 
    const PI = 123; 
    var_dump(defined('PI')); 
刪除變量

unset()

  $num = 200;
  // $num = null;
  unset($num);  
  var_dump($num);  //notice  null
變量引用 &
  $nub1 = 200;
  $nub2 = $nub1;
  $nub1 = 300;
  echo $nub2; //200
-----------------------------------------------------------
  $nub1 = 200;
  $nub2 = &$nub1;
  $nub1 = 300;
  echo $nub2; //300
可變變量
  $nub = "age";
  $$nub = "123";
  var_dump($$nub);   // string '123' (length=3)

數(shù)據(jù)類型

4種標(biāo)量 2種復(fù)合類型 2種特殊類型

4種標(biāo)量
  • 整型 int
  • 浮點(diǎn)型 float 也作double
  • 字符串 string
    • . 表示連接 //可以連接兩個(gè)標(biāo)量類型,連接成字符串
    • ""可以解析變量
    •    $nub = 200;
         $str1 = "這是一個(gè)數(shù)字{$nub}nub"; //""可以解析變量
         $str2 = '這是一個(gè)數(shù)字'.$nub;  //. 表示連接,可以連接兩個(gè)標(biāo)量類型消玄,連接成字符串
         var_dump($str1, $str2)  //string '這是一個(gè)數(shù)字200nub' (length=24)
          //string '這是一個(gè)數(shù)字200' (length=21)
      
  • 布爾類型 boolean
2種復(fù)合類型
數(shù)組
  • 數(shù)組的長(zhǎng)度

        $arr = array('a', 'b', 'c');
        var_dump(count($arr)) ;//數(shù)組的長(zhǎng)度
    
  • 索引數(shù)組

        echo "<pre>";
        $arr = array("a", "b", "c");
        var_dump($arr);  /*array (size=3)
                           0 => string 'a' (length=1)
                           1 => string 'b' (length=1)
                           2 => string 'c' (length=1)
        print_r($arr);  /*Array
                            (
                                  [0] => a
                                  [1] => b
                                  [2] => c
                           )
    
  • 關(guān)聯(lián)數(shù)組

        $crr = array(
            'name' => 'lisi', 
            'age' => 13
        ); /* array (size=2)
             'name' => string 'lisi' (length=4)
             'age' => int 13
    
  • 二維數(shù)組

      $brr = array(
        'name' => array(
          'lisi' => '13',
          'zhangsan' => '24'
          ),
        'age' => 18
      ); 
    
  • 遍歷方式

      for ($i=0; $i < count($arr); $i++) { 
          var_dump($arr[$i]);
      }
    
    $arr = array('name' => 'lisi', 'age' => 13);
    foreach ($arr as $key => $value) {
        var_dump($arr[$key]); //lisi   13
        var_dump($key);   //name age
        var_dump($value); //lisi 13
    }
    
對(duì)象
2種特殊類型
  • null //函數(shù)默認(rèn)返回值 變量未定義 unset()
  • resource
    • 引用
    • is_resource() //判斷是否是資源
獲取跟伏、判斷、轉(zhuǎn)化類型的方式
  • 獲取類型

    • gettype()
  • 判斷類型

    • is_int
    • is_integer
    • is_float
    • is_double
    • is_string
    • is_bool
    • is_array
    • is_object
    • is_null
    • is_resource
  • 類型轉(zhuǎn)化

    • val

      • intval()
      • floatval()
      • doubleval()
      • strval() // 將true轉(zhuǎn)化為1翩瓜,將false轉(zhuǎn)化為'';
      • boolval() // false 0 '0' '' null 空數(shù)組
    • 強(qiáng)制類型轉(zhuǎn)化

      $nub = '123';
      $result = (int) $nub;
      var_dump($result);  //int 123
      
    • settype //不建議 因?yàn)闀?huì)改變?cè)瓉淼念愋?/p>

對(duì)象

js:屬性和方法
PHP:成員變量和成員方法

面向過程\對(duì)象編程

  • 面向過程編程

    一個(gè)功能對(duì)應(yīng)一個(gè)函數(shù)受扳,需要什么樣的功能,寫什么樣的函數(shù)

  • 面向?qū)ο缶幊?/p>

    將整個(gè)項(xiàng)目中的每一部分抽象為一個(gè)對(duì)象兔跌,只需關(guān)注對(duì)象和對(duì)象之間的聯(lián)系,然后實(shí)現(xiàn)對(duì)象的成員方法勘高,從而構(gòu)建整個(gè)項(xiàng)目

對(duì)象和類的關(guān)系

類是對(duì)象的抽象

我們將具有某種相似特征的對(duì)象的基礎(chǔ)上,抽象為一個(gè)用來描述或者用來創(chuàng)建這些對(duì)象的類坟桅,所以我們說類是對(duì)象的抽象华望,比如說,我們將所有的人的特征抽象為人類的這個(gè)概念

對(duì)象是類的實(shí)例化

有了包含一些特征的抽象出來的類以后仅乓,那么我們可以通過這個(gè)類赖舟,去創(chuàng)建對(duì)象,所以說對(duì)象是類的實(shí)例化夸楣,比如說小明是人類的一個(gè)實(shí)例

封裝宾抓、繼承子漩、多態(tài)

封裝

我們將對(duì)象的成員變量或者成員方法通過一些關(guān)鍵字,比如 public private protected 等去封裝在類的內(nèi)部石洗,只留和外界的接口

  • 強(qiáng)內(nèi)聚 //我們傾向于將更多的方法或者是變量封裝在類的內(nèi)部
  • 低耦合 //我們傾向于將更少的方法暴露在外部
繼承

一個(gè)類繼承于另外一個(gè)類幢泼,從而獲取這個(gè)類的成員變量和方法,通過 extends 去繼承
子類 父類

多態(tài)

不同的對(duì)象調(diào)用同一個(gè)方法劲腿,或者是相同的操作旭绒,結(jié)果不同,就是多態(tài)

實(shí)例


常用方法

字符串方法

方法 描述 例子
strlen() 字符串長(zhǎng)度 $result = strlen('length'); var_dump($result); // 6
explode() 把字符串分割成數(shù)組 $result = explode('.' , 'aa.jpg'); var_dump($result); // array('aa', 'jpg')
substr() 從當(dāng)前字符串截取指定位置到指定長(zhǎng)度的新字符串 $str = 'dfsdg'; $result = substr($str,-3,1); var_dump($result); // 's'
mb_substr() 字符數(shù) 可以轉(zhuǎn)化編碼 $str = '字符串';$result = mb_substr($str,3,1,'utf8'); var_dump($result); // '符串'
strstr() 返回從當(dāng)前字符串中匹配到的第一個(gè)字符之后的字符串 $str = 'fghg'; $result = strstr($str,'h',true); var_dump($result); // 'hg'
strpos() 查找指定字符首次出現(xiàn)的位置焦人,返回索引值
strrpos() 查找指定字符最后一次出現(xiàn)的位置挥吵,返回索引值
str_replace() 替換 (字符串和字符串,數(shù)組和字符串)
str_ireplace() 替換花椭,不區(qū)分大小寫
md5() 計(jì)算字符串的 MD5 散列 用于加密
strrev() 反轉(zhuǎn)字符串順序
strtolower() 小寫
strtoupper() 大寫
trim() 去兩端空格
rtrim() 去右端空格
ltrim() 去左端空格

數(shù)組方法

方法 作用 例子
array_push() 在數(shù)組后面推入新項(xiàng) ``````
array_pop() 刪除數(shù)組最后一項(xiàng)
array_shift() 刪除數(shù)組前面一項(xiàng)
array_unshift() 在數(shù)組前面推入新項(xiàng)
array_sum() 數(shù)組項(xiàng)求和
array_merge() 合并數(shù)組 如果有相同的鍵值那么后者就會(huì)覆蓋前者
array_unique() 去重
array_rand() 隨機(jī)取鍵 在一個(gè)數(shù)組中取隨機(jī)的鍵忽匈,如果取多個(gè),返回的是鍵組成的數(shù)組
in_array() 判斷某個(gè)值在不在數(shù)組里 是否啟用全等
array_search() 查找某個(gè)值對(duì)應(yīng)的鍵 返回索引值 若找不到返回false
array_key_exists() 判斷某個(gè)值是不是數(shù)組的鍵矿辽,在返回true丹允,不在返回false
array_filter() 篩選 返回值是新數(shù)組,接收回調(diào)函數(shù)
array_walk() 遍歷 將每一個(gè)值都執(zhí)行一個(gè)函數(shù)
array_map() 映射
array_keys() 鍵組成數(shù)組 如果有第二個(gè)參數(shù)袋倔,那么只會(huì)返回與第二個(gè)參數(shù)匹配的鍵
array_values() 返回 值組成的數(shù)組
sort() 升序 會(huì)影響原數(shù)組
rsort() 降序
asort() 升序 鍵不重排
arsort() 降序 鍵不重排
ksort() 按鍵 升序
krsort() 按鍵 降序

?

Math方法

方法 作用
abs()
ceil()
floor()
max()
min()
round()
mt_rand 隨機(jī)數(shù)
pow() 返回 x 的 y 次方

函數(shù)

參數(shù)

  • 如果定義了形式參數(shù)雕蔽,必須傳實(shí)際參數(shù)
  • 檢測(cè)函數(shù)是否存在
  • 可變函數(shù)

作用域

  • 全局變量只能在全局訪問,局部變量只能在局部訪問
  • 常量在任何位置都可以訪問
  • 超全局變量在任何位置都可以訪問
    • $_GLOBALS
    • $_GET
    • $_POST
    • $_REQUEST //get()方法 post()方法 都可以接受
    • $_FILES
    • $_SERVER
    • $_SESSION 服務(wù)器端session
    • $_COOKIE
  • 在函數(shù)內(nèi)部訪問全局變量的三種方式
//第一種方式
    $nub = 200;
    function fun(&$aa)
    {
        $aa = 300;
        echo $aa; //300
    }
    fun($nub);
    echo $nub; //300

//第二種方式
    $nub = 200;
    function fun()
    {
        global $nub;
        $nub = 300;
        echo $nub; //300
    }
    fun();
    echo $nub; //300

//第三種方式
    $nub = 200;
    function fun()
    {
        $GLOBALS['nub'] = 300;
        echo $GLOBALS['nub'];  // 300
    }
    fun();

注意

//
  header(string: 'content-type:text/html;charset=utf8');
//   
  echo true;          //1
  echo false;         //null
  var_dump((int) 'a');     //0

// 實(shí)現(xiàn)代碼塊復(fù)用
    include '';         //不建議用
    include_once '';    //報(bào)warning
    require_once '';    //報(bào)error

// 回調(diào)函數(shù)
    function callback()
    {
        return 3;
    }
    function fun($callback)
    {
        echo($callback());
    }
    fun('callback'); //3

// 靜態(tài)變量
    function fun()
    {
        static $nub = 200;  //靜態(tài)變量
        $nub += 1;
        echo $nub;
    }
    fun(); //201
    fun(); //202
    fun(); //203

時(shí)間函數(shù)

北京時(shí)間 = GMI + 8

方法

  • date_default_timezone_get()

    • var_dump(date_default_timezone_get());  // string 'UTC' (length=3)
      
  • date_default_timezone_set()

    • date_default_timezone_set('Asia/Shanghai');
      
  • time() // 距離1970年的秒數(shù)

    •  var_dump(time())      //int 1506652819
      
      
      
  • microtime(true) // 微秒

    • var_dump(microtime())        //string '0.04552800 1506652891' (length=21)
      
      var_dump(microtime(true))    //float 1506652947.956
      
  • getdate() // 當(dāng)前時(shí)間的細(xì)節(jié)組成的數(shù)組

    • var_dump(getdate()); 
      array (size=11)
        'seconds' => int 28
        'minutes' => int 43
        'hours' => int 2
        'mday' => int 29
        'wday' => int 5
        'mon' => int 9
        'year' => int 2017
        'yday' => int 271
        'weekday' => string 'Friday' (length=6)
        'month' => string 'September' (length=9)
        0 => int 1506653008
      
  • date() // 格式化時(shí)間

    • date_default_timezone_set('Asia/Shanghai');
      var_dump(date("Y-m-d H:i:s"));     // string '2017-09-29 11:07:48'
      
  • mktime() // 設(shè)置時(shí)間

    • var_dump(mktime(8,0,0,8,8,2008));  // int 1218182400
      
      $time = mktime(8,0,0,8,8,2008);
      $arr = getdate($time);
      var_dump($arr);
          /*
            array (size=11)
              'seconds' => int 0
              'minutes' => int 0
              'hours' => int 8
              'mday' => int 8
              'wday' => int 5
              'mon' => int 8
              'year' => int 2008
              'yday' => int 220
              'weekday' => string 'Friday' (length=6)
              'month' => string 'August' (length=6)
              0 => int 1218182400
          */
      
      $str = date('Y-m-d H:i:s', $time);
      var_dump($str);  //string '2008-08-08 08:00:00' (length=19)
      
/*a: 'am'
d: 幾日宾娜,兩位數(shù)字
D: 星期幾批狐,3個(gè)英文字母
F: 月份,英文全名
h: 12小時(shí)制的小時(shí)
H: 24小時(shí)制的小時(shí)
g: 12小時(shí)制的小時(shí) 不補(bǔ)零
G: 24小時(shí)制的小時(shí) 不補(bǔ)零
j: 幾日前塔,不足不補(bǔ)零
l: 星期幾嚣艇,英文全名
m: 月份,兩位數(shù)字
n: 月份华弓,兩位數(shù)字 不補(bǔ)零
M: 月份食零,3個(gè)英文字母
s: 秒;
S: 字尾加英文序數(shù),   ‘21th’
t: 指定月份的天數(shù)
U: 總秒數(shù)
w: 數(shù)字型的星期幾 0-6
Y: 年  四位數(shù)字
y: 年  兩位數(shù)字
z: 一年中的第幾天; 1-366*/

cookie

cookie 常用于識(shí)別用戶寂屏。cookie 是一種服務(wù)器留在用戶計(jì)算機(jī)上的小文件贰谣。每當(dāng)同一臺(tái)計(jì)算機(jī)通過瀏覽器請(qǐng)求頁(yè)面時(shí),這臺(tái)計(jì)算機(jī)將會(huì)發(fā)送 cookie凑保。通過 PHP冈爹,您能夠創(chuàng)建并取回 cookie 的值。

創(chuàng)建 Cookie

  • setcookie() 函數(shù)用于設(shè)置 cookie

  • setcookie() 函數(shù)必須位于 <html> 標(biāo)簽之前

  • 語法   setcookie(name, value, expire, path, domain);
    
    例子     setcookie("user", "runoob", time()+3600);
    

取回 Cookie 的值

  • PHP 的 $_COOKIE 變量用于取回 cookie 的值
<?php
// 輸出 cookie 值
echo $_COOKIE["user"];

// 查看所有 cookie
print_r($_COOKIE);
?>

刪除 Cookie

  • 當(dāng)刪除 cookie 時(shí)欧引,您應(yīng)當(dāng)使過期日期變更為過去的時(shí)間點(diǎn)
// 設(shè)置 cookie 過期時(shí)間為過去 1 小時(shí)
setcookie("user", "", time()-3600);
?>  

session

Filesystem 函數(shù)

魔術(shù)常量
  • _dir_ 當(dāng)前路徑
  • _file_ 全路徑 當(dāng)前路徑+文件名
  • _line_ 運(yùn)行代碼的當(dāng)前行
PHP Filesystem 函數(shù)
方法 描述 例子
basename() 從一個(gè)路徑中 返回文件名
dirname() 從一個(gè)路徑中 返回路徑
file_exists() 判斷文件或者路徑存在不存在
is_file() 判斷這是不是文件 只能識(shí)別當(dāng)前路徑
is_dir() 判斷這是不是路徑 只能識(shí)別當(dāng)前路徑
rmdir() 刪除空路徑
unlink() 刪除文件
is_file() is_dir()   如果需要認(rèn)識(shí)上一級(jí)或是下一級(jí)频伤,需要寫相對(duì)路徑

PHP Directory 函數(shù)

Directory 函數(shù)允許您獲得關(guān)于目錄及其內(nèi)容的信息

方法 描述 例子
scandir() 返回指定目錄中的文件和目錄的數(shù)組 '.' '..'

mysql

能夠永久存儲(chǔ)信息的字段

SQL 結(jié)構(gòu)化查詢語言 操作數(shù)據(jù)庫(kù)

定義語言

展示庫(kù)/表:

  • show databases;
  • show tables;
  • show create table aa; // 展示創(chuàng)建表的過程
  • show create database 206class; // 展示創(chuàng)建庫(kù)的過程
  • desc 206class // 展示表 \ 庫(kù)

創(chuàng)建庫(kù)/表

  • 創(chuàng)建庫(kù)

create  database   206class  charset utf8 ;    //建立新數(shù)據(jù)庫(kù)    數(shù)據(jù)存儲(chǔ)有很多種方式
  • 創(chuàng)建表

use 206class
mysql> create table student (
    -> id tinyint(10) unsigned not null primary key auto_increment,
    -> name char(100) not null unique key,
    -> grade float(5,2) not null default 0.00,
    -> updatetime datetime on update current_timestamp not null
    ->  ) engine=innodb default  charset = utf8;    
// 存儲(chǔ)引擎(決定存儲(chǔ)效率、安全性)innodb[安全性高芝此、效率低]   myisam[安全性低憋肖、效率高]     字符集

增加字段

alter table student add num char(20) not null;

刪除表/庫(kù)/字段

  • 刪除表 \ 庫(kù)
drop  database myclass  \   drop table student 
  • 刪除字段
alter table student drop num;

修改表名因痛、字段

  • 修改表名
use myclass;
rename table aa to user;
  • 修改字段
 alter table student change grade grades int(10) not null;
 
 alter table student modify grades float(5,2) not null;
 
 alter table student modify updatetime datetime default current_timestamp on update current_timestamp;

操作語言

1. 增

  • 插入數(shù)據(jù)
insert into student (name) values ('小馬');   
//insert into 表(字段) value (要插入的數(shù)據(jù)一一對(duì)應(yīng)); 

insert into student (name) values ('小員'),('小程');

insert into student (name,grade) values ('小黑',100);

2. 刪

  • 刪除某一行數(shù)據(jù) delete
delete from user;     //全刪除了

delete from user where  id = 7;

3. 改

  • 更新 update
update user set pass=123 ;   // 所有

update user set pass=456 where id=10;

update user set pass=789,username='newuser2' where id=10;

4. 查 80-90%

基本查詢

where group by having order by limit

where 查詢?cè)侄? having查詢篩選結(jié)果

查詢表中所有數(shù)據(jù)
use myclass;
select * from student;                      //select 字段  from 表
where篩選 原字段 查指定數(shù)據(jù)
  • = >= <= <> > <

    select * from student where id>=5; 
    
  • and or between in

    select * from student where id>4 and id<5;   or  
    
    select * from student where id between 8 and 10;
    select * from student where id>=8 and id<=10;
    select * from user where id in (1,2,10,11);
    
  • 模糊查詢

    %任意字符
    select * from goods where name like '%電';   // 所有以 電 結(jié)尾字段
    select * from goods where name like '%電%';  // 所有帶 電 的的字段
    select * from goods where name like '電%';   // 所有以 電 開頭的字段
    
     _單個(gè)字符
    select * from goods where name like '電_';   \ 電 + 一個(gè)字符  的字段
    select * from goods where name like '電__';  \ 電 + 兩個(gè)字符  的字段
    
  • 查null

    select * from goods where name is null;
    select * from goods where name is not null;
    
投影運(yùn)算
select id,name from student; 

select id,name,(shop_price-price)*count as profit from goods;
select id,name, floor((shop_price-price)*count) as profit from goods;  // 利潤(rùn)向下取整
select id,name,shop_price-price from goods where shop_price-price>200;  //利潤(rùn)超過200
having查詢
select id,name,shop_price-price from goods where shop_price-price>200; //重復(fù)查詢

select id,name,shop_price-price as profit from goods having profit>200; //having

select id,name,shop_price-price as profit from goods where id>4 having profit>200;
max、mix岸更、num鸵膏、avg、count
// 和id... 不對(duì)應(yīng)

select sum(count) as he from goods;     
select min(shop_price) as minval from goods;
select avg(shop_price) as avgval from goods;
select max(shop_price) as maxvak from goods;
select count(shop_price) as countval from goods;
分組查詢
 select * from goods group by type;
 select count(type) from goods group by type;     // 每一組的個(gè)數(shù)
 select sum(count) from goods group by type;      // 某個(gè)列的和
 select max(count) from goods group by type;      // 某個(gè)列的最大值
 select max(count),type from goods group by type;  // 某個(gè)列的最小值   // 查詢正確 
 select max(count),id from goods group by type;    // 某個(gè)列的最小值   // 查詢錯(cuò)誤
order查詢
select * from goods order by price desc;     asc desc(降序)
limit查詢
select * from goods order by count desc limit 3;

select * from goods order by count desc limit 4,2;   //隔4行取兩個(gè)   可以用于分頁(yè)
select * from goods order by count desc limit 10*n,10;   //隔10頁(yè)取10個(gè)  用于分頁(yè)
where子查詢

where型子查詢是將上一次查詢的結(jié)果作為條件

select id,name from goods where count=(select max(count) from goods);
select id,name from goods where count in (select count from goods where id>3);
from子查詢

from型子查詢是將上一次查詢的結(jié)果作為臨時(shí)的一張表

select name from (select id,name from goods) as tmp;

select name from (select id,name from goods) as tmp where id > 3 ;
select name from (select id,name from goods where id > 3) as tmp;
exists子查詢
select * from goods where exists (select * from goods where id=1);   //整個(gè)表的數(shù)據(jù)

select * from goods where exists (select * from goods where id=7);   //Empty set (0.00 sec)

連表查詢

內(nèi)鏈接

作用:根據(jù)兩個(gè)或多個(gè)表中的列之間的關(guān)系怎炊,從這些表中查詢數(shù)據(jù)谭企。

注意: 內(nèi)連接是從結(jié)果中刪除其他被連接表中沒有匹配行的所有行,所以內(nèi)連接可能會(huì)丟失信息评肆。

重點(diǎn):內(nèi)連接债查,只查匹配行。


select news.*, user.username as uname from news inner join user on news.uid=user.id;

外連接

與內(nèi)連接相比瓜挽,即使沒有匹配行盹廷,也會(huì)返回一個(gè)表的全集。

外連接分為三種:左連接久橙,右連接俄占,全連接。對(duì)應(yīng)SQL:left/right/full outer join淆衷。通常我們省略outer 這個(gè)關(guān)鍵字缸榄。寫成:left/right/full。

重點(diǎn):至少有一方保留全集祝拯,沒有匹配行用NULL代替碰凶。

1)left join,左連接

結(jié)果集保留左表的所有行鹿驼,但只包含第二個(gè)表與第一表匹配的行。第二個(gè)表相應(yīng)的空行被放入NULL值辕宏。

select * from news right join user on news.uid=user.id;  //
2)right join畜晰,右連接

右外連接保留了第二個(gè)表的所有行,但只包含第一個(gè)表與第二個(gè)表匹配的行瑞筐。第一個(gè)表相應(yīng)空行被入NULL值凄鼻。

select * from news left join user on news.uid=user.id;   
  • 權(quán)限管理
  • 主鍵 (自增) 唯一標(biāo)識(shí)信息 id
  • 內(nèi)容管理系統(tǒng) cms

MVC

1、概念

? MVC全名是Model View Controller聚假,是模型(model)-視圖(view)-控制器(controller)的縮寫块蚌,一種軟件設(shè)計(jì)典范,用一種業(yè)務(wù)邏輯膘格、數(shù)據(jù)峭范、界面顯示分離。

? MVC就是類似三層的一種架構(gòu)瘪贱,主要還是采用封裝(分層)的思想纱控,來降低耦合度辆毡,從而使我們的系統(tǒng)更加的靈活,擴(kuò)展性更好甜害。

2舶掖、內(nèi)容

? Model(模型)是應(yīng)用程序中用于處理應(yīng)用程序數(shù)據(jù)邏輯的部分。通常模型對(duì)象負(fù)責(zé)在數(shù)據(jù)庫(kù)中存取數(shù)據(jù)尔店。
? View(視圖)是應(yīng)用程序中處理數(shù)據(jù)顯示的部分眨攘。通常視圖是依據(jù)模型數(shù)據(jù)創(chuàng)建的,用來展示呈現(xiàn)數(shù)據(jù)
? Controller(控制器)是應(yīng)用程序中處理用戶交互的部分。通诚荩控制器鲫售,接收請(qǐng)求,定義要做的事情避诽。選擇相應(yīng)的模型龟虎,選擇相應(yīng)的視圖。

3沙庐、優(yōu)點(diǎn)

? (1)大大提高了代碼的可重用性鲤妥。
? (2)將整個(gè)系統(tǒng)劃分為三層,有效的實(shí)現(xiàn)了數(shù)據(jù)和視圖的分離
? (3) 提高整個(gè)系統(tǒng)的邏輯性

瀏覽器發(fā)送請(qǐng)求拱雏,控制器接收到請(qǐng)求棉安,向模型發(fā)出指令,模型對(duì)象在數(shù)據(jù)庫(kù)中存取數(shù)據(jù)后铸抑,返回給控制器贡耽,控制器再向view中發(fā)送結(jié)果,由view層輸出數(shù)據(jù)鹊汛,瀏覽器解釋執(zhí)行

Git

git是目前世界上最先進(jìn)的分布式版本控制系統(tǒng)

  • 集中式版本控制系統(tǒng)
  • 分布式版本控制系統(tǒng)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末蒲赂,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子刁憋,更是在濱河造成了極大的恐慌滥嘴,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,681評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件至耻,死亡現(xiàn)場(chǎng)離奇詭異若皱,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)尘颓,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,205評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門走触,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人疤苹,你說我怎么就攤上這事互广。” “怎么了痰催?”我有些...
    開封第一講書人閱讀 169,421評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵兜辞,是天一觀的道長(zhǎng)迎瞧。 經(jīng)常有香客問我,道長(zhǎng)逸吵,這世上最難降的妖魔是什么凶硅? 我笑而不...
    開封第一講書人閱讀 60,114評(píng)論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮扫皱,結(jié)果婚禮上足绅,老公的妹妹穿的比我還像新娘。我一直安慰自己韩脑,他們只是感情好氢妈,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,116評(píng)論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著段多,像睡著了一般首量。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上进苍,一...
    開封第一講書人閱讀 52,713評(píng)論 1 312
  • 那天加缘,我揣著相機(jī)與錄音,去河邊找鬼觉啊。 笑死拣宏,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的杠人。 我是一名探鬼主播勋乾,決...
    沈念sama閱讀 41,170評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼嗡善!你這毒婦竟也來了辑莫?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,116評(píng)論 0 277
  • 序言:老撾萬榮一對(duì)情侶失蹤罩引,失蹤者是張志新(化名)和其女友劉穎摆昧,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蜒程,經(jīng)...
    沈念sama閱讀 46,651評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,714評(píng)論 3 342
  • 正文 我和宋清朗相戀三年伺帘,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了昭躺。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,865評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡伪嫁,死狀恐怖领炫,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情张咳,我是刑警寧澤帝洪,帶...
    沈念sama閱讀 36,527評(píng)論 5 351
  • 正文 年R本政府宣布似舵,位于F島的核電站,受9級(jí)特大地震影響葱峡,放射性物質(zhì)發(fā)生泄漏砚哗。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,211評(píng)論 3 336
  • 文/蒙蒙 一砰奕、第九天 我趴在偏房一處隱蔽的房頂上張望蛛芥。 院中可真熱鬧,春花似錦军援、人聲如沸仅淑。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,699評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)涯竟。三九已至,卻和暖如春空厌,著一層夾襖步出監(jiān)牢的瞬間庐船,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,814評(píng)論 1 274
  • 我被黑心中介騙來泰國(guó)打工蝇庭, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留醉鳖,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,299評(píng)論 3 379
  • 正文 我出身青樓哮内,卻偏偏與公主長(zhǎng)得像盗棵,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子北发,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,870評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容

  • 《ijs》速成開發(fā)手冊(cè)3.0 官方用戶交流:iApp開發(fā)交流(1) 239547050iApp開發(fā)交流(2) 10...
    葉染柒丶閱讀 5,194評(píng)論 0 7
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法纹因,類相關(guān)的語法,內(nèi)部類的語法琳拨,繼承相關(guān)的語法瞭恰,異常的語法,線程的語...
    子非魚_t_閱讀 31,665評(píng)論 18 399
  • 一狱庇、php可以做什么 php是一種可以在服務(wù)器端運(yùn)行的編程語言惊畏,可以運(yùn)行在Web服務(wù)器端。 php是一門后臺(tái)編程語...
    空谷悠閱讀 3,104評(píng)論 4 97
  • 昨天是圣誕節(jié)缰盏,趕上周末假日,我也特別應(yīng)景地外出看了電影,街上人潮涌動(dòng)口猜,好不熱鬧负溪。 圣誕的氣氛,從好幾周前就開始蔓延...
    小二翻身做掌柜閱讀 182評(píng)論 0 1
  • 爸爸陪寶寶睡午覺济炎,寶寶一睡就是三個(gè)鐘頭川抡。 爸爸就跑去陽(yáng)臺(tái)收衣服了。 寶寶立馬就躺床上哭起來:“啊啊啊……” 一看爸...
    cleverdog閱讀 230評(píng)論 0 0