MYSQL

一、MYSQL

1、配置MySql

第一步安裝服務器(apache)。
第二部安裝MySql界面程序

2、MySql數據庫的數據類型簡單介紹常用的幾種

 整形:int
小數:floatdoubledecimal
 字符串:varchar、char(他倆的區別是創建的長度與具體長度的問題)
 bool類型:bit
日期時間:datetime

3、創建表及約束

創建表語句:
create table InFo(
Pwd varchar(50),
Name varchar(50),
 Nation varchar(50),
foreign key(Nation) references Nation(Code) );
  建表及寫sql語句是注意的事項:
·創建表時最後一列不要加逗號
每個表創建完之後加分號
搜友sql語句中的符號必須是英文狀態下的
如果多條語句一起執行,注意在語句之間加分號
·創建表要先分類,再根據關係具體分類,添加主外鍵及約束條件
約束:
創建表中的列時需要確定列名、列的類型、長度、是否爲空,是否有默認值、是否爲外鍵、主鍵、是否自增長(自增長必須是主鍵,主鍵可以不自增長)等:

4、數據庫的CRUD操作

·添加數據:
 insert into Info values('',''......);
 可以添加表中色所有列的信息,也可以添加指定列的信息
 insert into Info(code) values('p001');
 自增長列的內容可以空,但必須留位置
·刪除數據:
delete from Info;        刪除所有數據
delete frohttp://www,sdyle.comm Info where code = 'n001'; 根據條件刪除指定數據
·修改數據:
 update Info set code='',...where code = '';
根據where條件修改一行數據中的一個或多個列
 ·查詢數據:
 (1)簡單查詢
 select * from Info
select Code as '代號',Name as '姓名'from Info

 (2)條件查詢
select * from Car where Code='c002'
select * from Car where Brand='b001' and Powers=130 或者用 or

(3)模糊查詢
select * from Car where Name like '%奧迪%' %代表任意多個字符_代表一個字符

(4)排序查詢
 select * from Car order by Brand,Powers desc

(5)範圍查詢
select * from Car where Price>=40 and Price<=60
select * from Car where Price between 40 and 50


(6)離散查詢
select * from Car where Code in ('c001','c003','c005','c007')
select * from Car where Code not in('c001','c003','c005','c007')

 (7)聚合函數,統計查詢
 select sum(Price) from Car #查詢所有價格之和 sum()求和
 select count(Code) from Car #查詢數據條數
 select max(Code) from Car #求最大值
select min(Brand) from Car #求最小值
select avg(Price) from Car #求平均值

 (8)分頁查詢
#####每頁顯示5條數據,取第2頁的數據
 select * from Car limit (n-1)*5,5
 (9)去重查詢
 select distinct Brand from Car


(10)分組查詢
select count(*),Brand from Car group by Brand
select Brand from Car group by Brand having count(*)>3 #分組之後根據條件查詢使用having 不使用where

(11)連接查詢
select * from Info,Nation #形成笛卡爾積
select Info.Code,Info.Name,Info.Sex,Nation.Name,Info.Birthday from Info,Nation where Info.Nation = Nation.Code                        


 select * from Info join Nation 
 select * from Info join Nation on Info.Nation = Nation.Code
 (12)聯合查詢
select Code,Name from Info
 union
select Code,Name from Nation
 (13)子查詢
(1)無關子查詢

外層查詢 (裏層查詢)
子查詢的結果當做父查詢的條件


子查詢:select Code from Nation where Name='漢族'
 父查詢:select * from Info where Nation = ''
select * from Info where Nation = (select Code from Nation where Name='漢族')
(2)相關子查詢
查詢汽車表中油耗低於該系列平均油耗的所有汽車信息
 父查詢:select * from Car where Oil<(該系列平均油耗)
子查詢:select avg(Oil) from Car where Brand = '某個系列'

select * from Car a where Oil<(select avg(Oil) from Car b where b.Brand = a.Brand )
5、數據庫常用函數 
數學函數
RAND()    返回0->1的隨機數  
SELECT RAND() --0.93099315644334


RAND(x) 返回0->1的隨機數,x值相同時返回的隨機數相同  
 SELECT RAND(2) --1.5865798029924


·字符串函數
 CHAR_LENGTH(s)    返回字符串s的字符數
 SELECT CHAR_LENGTH('你好123') -- 5
CONCAT(s1,s2,...)   將字符串s1,s2等多個字符串合併爲一個字符串
SELECT CONCAT('12','34') -- 1234
·日期時間函數
NOW()  返回當前日期和時間
SELECT NOW()  ->2014-12-17 15:59:02

二、PHP基礎

1、基礎語法
·註釋://單行註釋        /*多行註釋*/
·輸出語句:echo、print、print_r,var_dump
 echo是語句只負責輸出
print、print_r是函數,有返回值
print只能打印簡單類型變量的值,如int,string類型
 print_r可以打印複雜類型的值,如數組,對象
var_dump可以打印詳細信息。
·數據類型及變量
PHP是弱類型語言,變量沒有明確的類型
定義變量:
$a = 10;
$b = 'hello'; //單引號不能解析裏面的內容,容易報錯
c = "wo{c="wo{a}rd";  //雙引號可以解析
$d = >>AA //完整輸出內容,不需要解析
 "hello","word"
AA;
 isset($a); //判斷變量是否定義
 unset($a); //清除變量
empty($a); //判斷變量是否爲空

運算符

關係運算符:其中數字與字符串相加,字符串爲零計算,字符串與字符串相加爲零
整數除整數可以爲小數,因爲PHP爲弱類型語言
比較運算符:
邏輯運算符:
錯誤抑制符:@
·語句
分支:
循環:
·函數
函數四要素,返回類型,函數名,參數列表,函數體
PHP中不需要返回類型,使用function關鍵字
普通函數:funtion Show(a)functionShow( a = “MySql”){}
可變參數函數:funtion Show(){},參數列表可以爲任意個參數,
使用方法func_get_args();返回列表以數組的形式
使用方法fun_num_args();獲得傳入參數的個數
兩個常用函數:
生成隨機數:rand();生成隨機數
rand(1,10);參數只能不填或填兩個,兩個代表最大最小值
日期時間函數:
time(); //取當前時間的UNIX時間戳
//設置時區
ate.timezone = Europe/Paris改爲Etc/GMT-8 //每個需要的頁面都設置,治標不治本
date_default_timezone_set(‘PRC’) //在PHP的配置文件中改

2、字符串操作

字符串長度:strlen(string $a)

判斷是否相同,相同返回0,不同返回1,區分大小寫:strcmp(str a,stra,strb);
判斷是否相同,相同返回0,不同返回1,不區分大小寫:strcasecmp(str a,stra,strb);
字符串轉小寫:strtolower(str a);strtoupper(str a);
拆分字符串,返回數組:explode(“拆分符”,str a);implode(,str a);
截取替換:substr_replace(str a,/,,)strrepiace(,,str a);
去空格:trim(str a);echosubstr(a,0,strlen(a,0,strlen(a)1);//vardump(strsplit( a,2));//根據長度拆分字符串
echo strstr(a,|);// a.trim();//JS沒有,但是Jquery有

3、數組

定義數組:
PHP中數組分索引數組,關聯數字
定義索引數組:1、st=array(1,2,3);2、st=array(1,2,3);2、st[] =1; st[]=2; st = array(“one” => “hello”,100); 用 => 符號,只要有一個對應關係就是關聯數組,剩下的自動添加索引(根據上一條添加索引),索引的值數字與數字字符串可以互轉
數組取值:
通過下標或key取值
遍歷數組

1、for循環遍歷數組,只適用於索引數組,數組長度用count()

for(i=0;i=0;i<count(sttr);sttr);i++){
    echo sttr[sttr[i]."<br/>";
}

2、foreach遍歷,都適用

foreach(sttrassttrasv){
    echo $v."<br/>";
}
foreach(sttrassttrask=>$v){
echo k."  ".k."  ".v."<br/>";
echo "{k}--{k}--{v}<br>";
 } 

3、使用each(),list()結合來遍歷數組

3.1 each()返回數組裏面的當前元素的詳細內容
each($sttr);    關聯數組
array(size=4)
 1=>int1
'value' =>int1
0 =>int0
'key' =>int0
 裏面有索引號所以可以使用list()方法
list()將右側數組裏面的每個元素分別賦值給list()的參數列表,右側數組必須包含索引
 list(a,a,b,c)=c)=sttr;
3.3 each()和list()結合 while(list(k,k,v) = each($sttr)){
echo k."  ".k."  ".v."<br/>";echo "{k}--{k}--{v}<br>";}

4、使用指針遍歷

$attr = array( "one"=>"aaaa", "two"=>"bbbb", "three"=>"cccc",10,10);
current($sttr);    //取得當前元素的value值
 key($sttr);    //取得當前元素的key值
 next($sttr);    //將數組裏面的指針指向下一個(向下移)
prev($sttr);    //將數組裏面的指針指向上一個(向上移)
end($sttr);    //將指針指向最後一位
reset($sttr);    //將指針復位(指向第一個元素)
數組常用函數
count($sttr);    //獲得數組元素的個數
in_array("aaaa",$sttr);    //判斷元素是否在數組裏面,返回boolear類型
 array_reverse($sttr);    //反轉數組,返回數組
array_unique($sttr);    //對數組的元素去重,返回數組
 unset($attr["two"]);    //刪除數組裏面的某個元素,不返回
 array_values($attr);    //重新建立索引,返回數組
array_merge($attr);    //合併數組,返回數組
array_push($attr,10);    //函數追加數組元素
$attr[]     = 10;    //賦值追加數組元素

4、正則表達式

用符號來描述書寫規則,定界符:/ 中間寫正則表達式 /
^ :匹配開頭, /^ve/以ve開頭的,可以不加
:匹配結尾/ve:匹配結尾/ve/以ve結尾,可以不加
\d:一個任意的數字
\w:一個任意的數字或字母
\s:一個任意的字符串
{n}:把左邊的表達式重複n遍
{m,n}:把左邊的表達式重複至少m遍,至多n遍
{m, }:把左邊的表達式重複至少m遍,,至多不限
+:左邊的表達式,至少出現一次,至多不限,相當於{1,}
*:左邊的表達式,至少出現0次,至多不限,相當於{0,}
:左邊的表達式,至少出現0次,至多出現1次,相當於{0,1}
[a,b,c]:只能取方括號中內容之一
[a-z]或[1-9]:在範圍中取其一

|:代表或者;():優先級;
\:轉義–“”這個纔是要出現的小括號,需要轉義

三、面向對象基礎

程序設計有兩種,面向過程,面向對象,
面向過程就是分析出解決問題所需的步驟,然後用函數把這些步驟一步一步實現,然後一次調用
面向對象就是把解決問題所有的步驟分解成各種對象,通過建立對象來描述某個事物在整個解決問題的步驟中的行爲
面向對象中兩個基本概念:類的對象
類是對象的抽象化,對象是類的實例化。
定義類:
使用class關鍵字,類名的首字母大寫
類中有類成員包括:成員變量,成員方法,靜態成員變量,靜態成員方法
成員變量:1、訪問修飾符
2、全局成員變量和局部成員變量
3、靜態成員變量
成員方法: 訪問修飾符
1、普通成員方法
2、靜態成員方法
3、特殊成員方法,構造方法construct,析構方法,__toString(__toString()是在直接打印對象時執行的方法,我們可以用該方法打印類的一些相關信息)、clone(直接克隆方法,活在類裏面寫方法,¥this代表複本對象)等
靜態關鍵字:static,可以在任何地方直接用類名調用,在本類中也可以用self關鍵字
普通成員是屬於對象,靜態成員是屬於類的
普通方法裏面可以調用靜態成員,靜態方法中不可以調用普通成員
this關鍵字,代表對象,可以通過this關鍵字在成員方法中調用成員變量
new關鍵字,通過new關鍵字創建對象,也就是實例化類
“->”調用符號,對象可以通過該符號調用類的成員變量,和成員方法
return關鍵字,在方法中使用,提供返回值服務
引用類、加載類

 類文件的命名:類名.class.php 
include("/wamp/www/0607/Ren.class.php");
 include "Ren.class.php";
require("Ren.class.php");
require "Ren.class.php";
 require_once("Ren.class.php");
require_once "Ren.class.php";
自動加載的方法
注意類的命名,注意路徑不然找不到,也就無法加載引用
function __autoload($classname){
require $classname.".class.php";
 }

四、面向對象三大特性:封裝、繼承、多態

1、封裝
目的:事類更加安全
做法:不讓外界直接訪問類成員
1、成員變量私有化:private關鍵字
2、爲私有成員變量提供公有方法
一是每個變量提供兩個方法,Set變量名:賦值方法,Get變量名:取值方法(每個變量兩個方法很麻煩)
二是PHP特有的方法雙下劃線:__set(),__get()方法
3、在賦值方法中加條件,達到控制安全的目的

2、繼承

目的,提高代碼的複用性,一個子類可以繼承父類的一切,一個子類只能有一個父類,一個父類可以有多個子類
做法:通過extends關鍵字繼承
方法的重寫:子類繼承父類的方法,如果想擴展就需要重寫父類的方法(方法重寫必須方法名一樣),如果想在父類方法的基礎上加就可以用 parent:: 關鍵字調用

3、多態

在PHP中多態表現不明顯:
多態的條件:1、必須集成。2、必須方法重寫。3、父類的引用指向子類的實例
多態的概念:當父類的引用指向子類的實例,由於子類對父類的方法進行了重寫,所以當父類引用調用相應的方法時表現的不同
失敗是什麼?沒有什麼,只是更走近成功一步;成功是什麼?就是走過了所有通向失敗的路,只剩下一條路!!!

發佈了23 篇原創文章 · 獲贊 28 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章