浏览器只能够解码html格式的文档

动态网站是根据用户请求能做出对应响应甚至于对不同用户返回内容是不一样的

java:一直编译到处运行,是因为java的程序是在java的虚拟机中运行的,而底层系统的不同都让java虚拟机隐藏起来了,而不同的虚拟机向上提供的接口是统一的

CGI:能够让前端web服务器的进程根据对应程序的不同调用对应执行环境,并将程序的运行结果取回至web进程

编程语言

静态语言:编译型语言

   C C++ JAVA

   优点:性能好  操作系统,驱动程序一般用静态语言开发,比动态语言性能好30%

   缺点:每一次改动语言需要重新编译

动态语言:解释型语言 

   shell  perl python(Django专门开发web站点的框架)

   有点:编译维护  众多模块可以共享

   确定:性能差

PHP is  Hyper Preprocessor

   PHP超文本预处理器

bash解释器的分析功能:

   词法分析:分析关键字

   语法分析:判断程序中有没有语法错误  

   执行流:生成执行路径

parser:php的分析器

1997年两名以色列的程序员重写了php核心,于1999年发布并命名为zend Engline(php脚本语言解释器)1.0

    zend engline的出现将php的代码处理过程分为两个阶段,首先分析php代码将其转换成为zend opcode的二进制格式,并将其存储于内存中,第二个阶段是使用zend engline去

执行这些转换后的opcode

opcode是php脚本编译后的中间语言

php执行php代码的四个步骤:

    1、scanning(语法分析)将php代码转换为语言片段(Tokens)

2、parsing(将数值赋值给一个变量)将Tokens转换成简单而有意义的表达式

3、compilation  将表达式转化成opcode

4、Execution   顺次执行opcode,每次一条,从而实现php脚本的功能

php的缓存(加速器):每一个php进程编译好opcode不会放入此进程在内存的私有地址当中,而是存放在另外一个程序提供的缓存空间当中,这个空间可以被众多的php进程所共享

Xcache:快速而稳定的php opcode缓存,经过严格测试并且被大量运用于生产环境

zend optimizer是一个免费的,闭源的php扩展,能够直接运行由zend guard生成的加密的php代码或模糊代码

php的源码目录结构:

     bulid  主要存放一些与源码编译相关的文件,构建开始之前的buildconf脚本以及一些检查环境的脚本

ext  官方的扩展目录,包括了绝大多数php函数的定义和实现

main  存放php最为核心的文件,是实现php的基础设施

zend  zend引擎的实现目录,比如脚本的语法解析

pear  php扩展与应用仓库,包括pear的核心文件

sapi  包含了各种服务器的抽象代码

tsrm   php的线程安全是构建在tstm之上的

tests   php的测试脚本集合,包含php的各项功能的测试文件

win32   这个目录主要包括windows平台相关的一些实现

mvc:model view controller:模型-视图-控制器

嵌入式web开发语言:将php代码嵌入至html中

apache+php

     CGI:php脚本直接交给php服务器执行

Module:将php做成一个模块动态加载至apache中

FastCGI:apache是一个客户端,php是一个服务器自身创建(并管理)很多进程,这种机制我们称之为FastCGI

Nginx+fpm(fast php modules)

  phpinfo();  这是php的一个内置函数,它能够以web页的形式标记显示当前php服务器的所有信息

?>  

ODBC(open database connection)开放数据库系统互联:把各种API以统一的风格输出出来,任何一种语言都可以调用API

一般PHP和数据库的交互:php———>驱动(将php语言翻译给数据库的接口)————>API————>数据库

API 应用编程接口

数据库验证内部用户简介:

   首先只查找用户名的字段

   排序

   二分法查找:首先拿用户名跟数据最中间的值比较,如果大于中间的值那继续往下半段的中间再比较,依次最后定位到用户名

   对于没有排序的用户名查找:每生成一个数据都是随机的并不会排序。但是会存在另外一个文件存放排序的账户,并且每一个账户

都有一个指针指向没有排序的账号,然后而二分法查找排序了账号的文件在,最终找出账号,这个文件我们称之为索引文件,帮助我们查询

数据结构的文件我们称之为索引文件。

数据库管理软件并非是数据库:而是用来帮我们管理数据文件的 

DBMS

   Database Management System

RDBMS

   关系型数据库管理系统 Relation Database Management system

SQL:结构化数据查询语言(美国国家标准委员会ANSI指定标准)

提供RDBMS的软件有:

  世界三大数据库:

     ①oracle  

②Sybase:sqlserver数据库的原型

③Informix:已被oracle收购  

功能:

    数据库的创建、删除、修改

数据表的创建、删除、修改

索引的创建,删除、修改

用户和权限的管理

增、删,改、查

 数据的组织结构

     层次型:

     网状型:

     关系型(二维关系):将每一种要处理的数据定义成为一个对象(或者是一个条目),对论坛而言(账户名、帖子、回复)分别都是一个对象,并将每个对象建立关联关系

数据库名的三个类别:

    DML(Data Manipulate Language数据操纵语言)

   INSERT:插入一个数据

        INSERT  INTO tb_name (col,col2...)VALUES|VALUE ('STRING',NUM...)

INSERT INTO testtable (NAME,Gender) VALUE ('linhuochong','M'),('Xiaolongnv','F');给testtable表中的字段(NAME和Gender)插入数值

INSERT INTO testtable VALUES ('XIAOXIAOZI','LIUSHIER',57,'F');不用指定字段,每个值都对应的指定也行

   REPLACE:替换一个数据

   UPDATE:修改数据

       UPDATE tb_name SET column=valueINSERT INTO testtable VALUES ('XIAOXIAOZI','LIUSHIER',57,'F');

   UPDATE tb_name SET column=VALUE;修改某个表中某个字段的全部值

     例如:UPDATE testtable  SET class='ZTT'; 

   UPDATE tb_name SET column=VALUE WHERE NAME=VALUE;指定修改一直值对应的另一个值       WHERE就是指定选择条件的

     例如:UPDATE testtable SET class='CCY' where NAME='xiaoxiaozi';指定修改testtable中名称“xiaoxiaozi”应对的class的值                     

   DELETE:删除数据

          DELETE FROM tb_name;删除表中的所有行

              DELETE FROM tb_name WHERE NAME='XIAOXIAOZI';删除表中有XIAOXIAOZI的行   

DDL(Data Definition Language数据定义语言)

   CREATE:创建数据库创建表

      CREATE DATABASE db_name;创建数据库

  SHOW DATABASES;显示数据库

  CREATE DATABASE IF NOT EXISTS db_name;如果不存在次数据库就创建,不会出现爆错的情况

  DROP DATABASE db_name;删除一个数据库

  USE db_name;切换进一个数据库中

    CREATE TABLE tb_name(NAME CHAR{20},col2{属性},...);创建一个表,并定义表中每个字段的属性

CREATE TABLE db_name.tb_name (col1{属性},col2{属性},...)

   例如:CREATE TABLE testdb.testtable(NAME CHAR(5) NOT NULL,Age TINYINT UNSIGNED,Gender CHAR(1) NOT NULL);

         在数据库testdb中创建一个testtable表,表中的第一个字段为姓名最多可填写5个字符,第二字段为年龄不能有负数

第三个字段为性别至少一个字符不能为空

            SHOW TABLES;查看指定数据库中的表----->SHOW TABLES FORM db_name;查看某个数据库中的表

            查看表的结构:DESC tb_name;

DROP TABLE {IF EXSTIS}tb_name;删除表  ***此操作不可逆

   ALTER:修改数据库修改表    *** 在mysql中使用 help alter(command)获取命令帮助

         ALTER TABLE tb_name:修改表名称的

     MODIFY 修改某个字段的属性

   CHANGE 改变某个字段的名称

   例如改变字段名称:ALTER TABLE testtable CHANGE Class class CHAR(10) AFTER NAME;修改testtables中的字段名称,并放在name字段后面

ADD 添加字段 

   例如添加一个字段:ALTER TABLE testtable ADD (class CHAR(10)NOT NULL);在testtable表中新添加一个字段 

  DROP 删除字段

   DROP:删除数据库删除表

   也可用于索引(index)

DCL(Data controller Language数据控制语言)

   CREATE USER:创建用户

      CREATE USER 'USERNAME'@'HOST' IDENTIFIED BY 'PASSWORD';创建一个新的用户并添加密码

  DROP USER 'USERNAME'@'HOST';删除一个用户  *** jerry@localhost,[email protected]这不是同一个用户

     HOST表示法:HOST,IP,NETWORK,通配符:‘_’匹配单个字符;‘%’任意长度的任意字符

   GRANT:给用户授权

      GRANT pri1,pri2,....ON db_name.tb_name TO 'USERNAME'@'HOST' [IDENTIFIED BY 'PASSWORD'];将那个库中的那个表的多个权限赋予给用户,并设置密码;用户如果不存在将自动创建

   REVOKE:取回用户权限

      REVOKE pri1,pri2,....ON db_name.tb_name TO 'USERNAME'@'HOST';收回用户对那个表中的那个库的权限

   SHOW GRANTS FOR 'USERNAME'@'HOST'显示用户所具有的权限

      ALL PRIVILEGES:所有权限

   GRANT ALL PRIVILEGES ON testdb.* TO 'song'@0.0.0.0;将所有的权限赋予给song账号 

SELECT:搜索

    SELECT 字段  FORM tb_name WHERE column=VALUE(匹配条件)

      *:所有字段

  WHERE:没有条件,显示所有行

DBMS的优势:

    ①数据管理的独立性,数据表达和存储可以分开

②有效的完成数据存取,而不要每次的操作对整个数据做扫描

③数据的完整性和安全性

④数据的集中管理

⑤能够实现并发存储和备份恢复

⑥减少应用程序的开发时间,缩短应用程序的开发周期

关系型数据库内部应该有的基本组件有:

    ①词法语法分析

    ②计划执行器,分析的结果要生成执行计划(可能有多种执行方式)

    ③优化器执行优化

    ④文件的存取方法

⑤缓存器,将文件读进缓存器才能执行操作的

    ⑥磁盘空间管理器,定义数据的存储位置

⑦故障恢复管理器

⑧事务管理器

⑨锁管理器

Mysql关系型数据库详解:

    监听在TCP/3306端口,运行身份:mysql,mysql

   mysql分为两类:

      Community Edtion:社区版

       MySQL Cluster:mysql集群

       MySQL Workbench:mysql的语句生成器,语句执行分析器;是一个统一的图形化的工具

           MySQL Connectors:mysql的连接器

  Enterprise Edtion:企业版

mysql软件包的安装的三种方式:

       软件包管理器特有的格式

   rpm包  .exe .msi

      yum install -y mysql-server 自动解决依赖关系

     安装完有一个初始化的过程:建立mysql的源数据库的

  mysql命令

      -u  指定数据库的用户

  -p  指定密码

  -h  指定主机 如果是127.0.0.1那么使用的是本地的套接字文件/var/lib/mysql/mysql.sock链接的,所以速度快的多,别的都用TCP/IP协议链接

退出mysql的命令:exit quit \q  都行

MYSQL中的用户名是由两段组成的:用户名@指定的主机可以对后面的主机做权限设定

任何一个关系型数据库,都应该提供自己的sql接口,sql接口实现的时候都应该遵循某一中规范,并对其进行扩展

    Oralce数据库的接口:PL/SQL支持强大的编程功能

            sqlserver的数据库接口:T-SQL

mysql的客户端有两种模式:

      ①交互式模式

      客户端命令:\h显示的都是客户端的命令

  服务器端命令;需要在服务器执行的命令,所有服务器端命令必须使用语句结束符默认是(;)

     ②批处理模式:执行mysql脚本的

关系型数据库的对象:

            ①表:行和列组成;行(row)每一行是一个实体集;列(field,column),每一列是一个字段

      字段名称,数据类型(字符和数字),类型修饰(类似于约束)

  字符

      CHAR(N)占用N个空间,不管用还是没用

  VARCHAR(N)可变长度的字符:按实际的占用比

  BINARY(N)区分大小写的二进制字符

  VARBINARY(N)可变长的二进制字符

  TEXT(N)明确说明存储多大长度的文本

  BLOB(N)二进制的大对象

  数值

      精确数值

      整型

         TINYINT:微整型一个字节的变化

 SMALLINT:小整型两个字节

MEDIUMINT:三个字节

INT:四个字节

BIGINT:八个字节

修饰符:UNSIGNED,无符号

         NOT NULL 不允许为空

十进制  

     DECIMAL

  近似数值

    浮点型

     FLOAT

DOUBLE

日期时间型

        DATE

TIME

DATETIME

STAMP

布尔型

                 内置类型:ENUM(枚举类型,最多只接受集中类型,其它的都不接受),   SET  

②索引             

③视图

④约束

⑤存储过程

⑥存储函数

⑦触发器:做主动数据库

⑧游标:C语言编程用到

⑨权限、用户、事物  

   通用二进制格式

   源码编译

我们在表中完成操作的时候主要有两种操作:

    选择:指定某字段作为搜索码,做逻辑比较,筛选符合条件的行 

    投影:以列的方式显示的

www.php.net:php的官方站点