PHP學習總結(三)

一.MySQL數據庫管理系統概述
1.mysql -h localhost -u root -p 123456//鏈接數據庫
2.show databases
  create databese name
  drop database name
  create database if not exists name
  drop database if not exists name
  use name
  show tables
  desc tablename
  drop table if exists tablename
  create table if not exists tablename


二.創建數據表
1.create table [if not exists] tablename(
  字段1 列類型 [屬性] [索引],
  字段2 列類型 [屬性] [索引],
  。。。。。。
  字段n 列類型 [屬性] [索引] 
  )[表類型] [表字符集];
2.char//固定長度
  varchar//可變長度,內容+1個字節
  text//文本數據(文章)
  blob//二進制數據(相片,壓縮包)
  ENUM//枚舉,一次只能有一個值
  SET//集合,一次可以用多個集合中的值,中間使用','分開
3.數據字段屬性
  unsigned//可以讓空間增加一倍。-128-127 0-255只能用在數值型字段
  zerofill//該字段自動應用unsigned,前導0
  auto_increment//只能整數,自動增加1,字段值不允許重複
  null 0 留空
  null和not null//在意在插入每個字段都不要插入null
  default//缺省值
4.創建索引
  主鍵索引//primary key
  唯一索引//unique
  常規索引//index
  全文索引//fulltext類型索引,MyISAM表類型使用
5.數據表類型及存儲位置
  MyISAM和InnoDB(共有12種)
  create table() type InnoDB;
  create table() engine InnoDB;
  MyISAM表類型是默認的
  MyISAM表類型
  optimize table tablename//強調快速讀取操作,有一些功能不支持
  InnoDB表類型//支持一些MyISAM不支持的功能,佔用空間大
  
  功能               MyISAM            InnoDB
  事物處理           不支持             支持
  數據行鎖定         不支持             支持
  外鍵約束           不支持             支持
  表空間佔用         相對小        相對大,最大兩倍  
  全文索引            支持             不支持


6.MySQL默認字符集
  GBK 2字節=1漢字,UTF8 3字節=1漢字
7.修改表
  alert table


三.SQL語言設計與編寫
1select[all|distinct]
 like// _(任意一個字符)和%(0個或多個任意字符)
2.order by 字段[asc正序] desc倒敘
  having是分組後的篩選條件


四.設計SQL語句時常用的MySQL內置函數
1.字符串函數
  concat(s1,s2,s3......sn)//把傳入字符串連接成一個字符串
  insert(str,x,y,str1)//將str從x開始計數y個字符爲str2
  lower(),upper()//大小寫轉換。
  left(str,x),right(str,x)//分別返回最左邊的x字符和最右邊的x個字符,如


果第二個參數爲空,則什麼也不返回
  lpad(str,n,pad),rpad(str,n,pad)//對左邊或者右邊進行填充,直到爲n個字


符爲止。
  trim(str),ltrim(),rtrim()//去掉空格
  replace(str,a,b)//用字符串b替換str中出現的所有字符串a
  strcmp(s1,s2)//如果s1比s2小,返回-1,如果s1比s2大,則返回1,如果相等


,則返回0
  substring(str,8,9)//韓慧字符串中第x起y個字符串長度的字符。
2.數值型函數
  abs(x)//返回絕對值
  ceil(x)//返回大於x的最小整數
  floor(x)//返回小於x的最大整數
  mod(x,y)//返回x/y的餘數
  rand()//0-1之間的隨機
  round(x,y)//返回參數x的四捨五入的有y位小數的值
  truncate(x,y)//返回數字x截斷爲y爲小數的結果
3.時間函數
  curdate()
  curtime()
  now()
  unix_timestamp(date)
  from_unixtime
  week()
  year()
  hour()
  minute
4.流程控制函數
  if(value,t)
  ifnull(value1,value2)
  case when[value1] then [result1] else[default] end
5.其他函數
  database()
  version()
  user()
  inet_aton(ip)
  inet_ntoa()
  password()
  mod()


五.在PHP中使用mysql擴展庫操作數據庫
1.$link=mysql_connect("localhost","root","password");
2.mysql_select_db("database",$link);
3.mysql_close();
4.mysql_errno(),mysql_error()//錯誤信息
5.語句分爲兩類select(返回結果集)和非select(返回影響行數)
6.myqsql_insert_id//最後自動增長的id
7.mysql_affected_rows//影響函數


六.在PHP使用MySQL擴展庫處理結果集
1.從結果集中將記錄取出
  mysql_fetch_row()//返回索引數組
  mysql_fetch_assoc()//返回關聯數組
  mysql_fetch_array()//返回索引和關聯兩個數組
  mysql_fetch_object()//將一條記錄以對象的形式返回
  一次從結果集中取出一條記錄
  將指針移動到下一條記錄(默認是第一行記錄)
  再取就是下一條記錄,如果到結尾則返回false
  mysql_data_seek($result,row)//移動 內部的指針
  mysql_free_result()//釋放結果集
  mysql_num_rows()//獲取結果集總數


七.使用PHP製作分頁類
1.$_SERVER["REQUEST_URI"]//獲取URI 
2.strpos($_SERVER["REQUEST_URI"],'?')
3.$parse=parse_url($url);//解析URI
  $parse["query"]//查詢字符串


八.PHP的mysqli擴展庫操作MySQL數據庫
1.mysqli和鏈接有關的類
2.musqli_result表達數據庫返回的結果集
3.mysqli_stmt
4.$mysqli=new mysqli()
  mysqli_connect_errno(),mysqli_connect_error()
  $mysql->close()


九.使用PHP中mysqli擴展處理結果集
1.mysqli_result
  處理記錄:
  屬性:num_rows
  方法:data_seek()
        fecth_assoc()
        fecth_row()
fecth_array()
fetch_object()

free() close(0 free_result()
2.處理字段信息
  file_count


十.使用PHP的mysqli擴展完成市區處理和一次執行多條SQL語句
1.使用mysqli執行多條語句
  $mqli=new mysqli();
  $sqls="";//多條用分號隔開
  mysqli->multi_query(); 
  $result=$mysqli->store_result();//獲取結果集
  mysqli->next_result();//調用下一個結果集
  mysqli->more_result()//查詢是否還有結果集
  mysqli->close()
2.使用mysqli完成事物處理
  a.關閉自動提交,set autocommit=0
  b.開啓事物,starttransaction
  c.commit,rollback
  d.打開自動提交
3.設置字符集
  mysqli->set_charset("utf-8");
  mysql_query("set name utf-8");


十一.使用PHP的mysqli擴展中預處理語句
mysqli_stmt預處理類(推薦你使用的類)
和mysqli和mysqli_result相比優點:
a.mysqli,mysqli_result能完成的他都能完成
b.效率高,只有數據不同
c.安全上:防止SQL注入


mysqli=new mysqli();


//準備一條語句在服務器中保存
{$stmt-$mysqli->stmt_init();}
$sql="insert into table() value(?,?,)"
$stmt->prepare($sql);
//給佔位符號每個?傳值(綁定參數)
$stmt->bind_param("s",varible)//i,d,s,b對應四種類型
//執行
$stmt->execute()
$stmt->data_seek();//移動指針
$stmt->fetch()//獲取結果集
$stmt->bind_result(value1,value2...)//綁定結果集
$stmt->store_result()//一次性都取出結果


十二.php中使用MySQL的視圖
1.創建視圖
  create [or replace] [algorithm={temptable|undefined}]
  view view_name[(column_list)]
  as select_statement[with [cascaded|local] check option]
  
  wiht local check option [local]只要滿足本視圖的條件就可以更新
  with cascaded check option [cascaded]則是必須滿足所有針對視圖的條件


,纔可以更新
2.視圖的三種類型
  merge: 
  Temptable:
  undefined:
  algorithm=merge
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章