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万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章