+++++++php组件、SQL基础知识

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介:

一、php基本应用

Hypertext Preprocessor 嵌入thml文档的脚本编程语言,动态网站的开发语言

源码获取:

www.php.net

动态网站开发

php, asp, ruby, c, bash<有程序功能的解释器>

"php通过库调用完成操作文件"

"bash通过内部程序"

配置文件

  • php包:为Httpd提供模块 PHP scripting language for creating dynamic web sites

      # rpm -ql php
      /etc/httpd/conf.d/php.conf          //为模块提供的配置
      /usr/lib/httpd/modules/libphp5.so   //为prefork提供的模块
      /var/lib/php/session
      /var/www/icons/php.gif
  • php-common为php提供运行环境

      # rpm -ql php-common
      /etc/php.ini
      /etc/php.d/*.ini

配置格式

[Foo]
directive = value
[MYSQL|MYSQLI] 连接mysql驱动的配置
    持久:基于tcp连接发起mysql协议请求,不断开,需要维持一个连接
    非持久:每次建立都需要拆除连接
php.ini核心配置选项:"http://php.net/manual/zh/ini.core.php"
php.ini配置选项列表:"http://php.net/manual/zh/ini.list.php"

配置读取

CGI, CLI //每次httpd调用程序,启动子进程时,读取配置

FastCGI/module //在启动web程序读取一次

php添加模块实现加速:

[EPEL]php-xcache提供php的驱动

执行php代码: scan[语法] -->parsing[词法-->表达式] --> complie[表达式-->opcode] --> exec

php-xache能实现,缓存opcode,进程间能相互使用opcode

二、存储与协议

  • 存储

    • 文件:syscall

    • SQL存储:(Mysql分支、oracle、mssql) 驱动

      MYSQL分支:mysql, mariadb, percona-server, pgsql(enterpriseDB)

    • NoSQL: mongodb, hbase, redis

    • NewSQL: 分布式模式管理存储引擎

  • 协议:关系模型、RDMBS、SQL协议、数据存储协议

  1. 关系模型:表(row: 2NF, column:1NF )

    实现: DBMS(Mysql, MariaDB)

    数据结构:层次、网状、关系模型

    关系模型的分类:

     基本-关系模型
    
     实体-关系模型
    
     基于对象-关系模型
    
     半结构化-关系模型
         支持xml解析数据
  2. RDBMS: 满足关系型数据库的设计范式

    实现:SQL存储(MYSQL分支、Oracle、MSSQL)

     MYSQL分支:mysql官方, mariadb开源, percona-server著名, pgsql皮(enterpriseDB)
     Oracle: 传统公司:在智能手机普级的时候,在高级的收音机又有什么用呢?
     MS_SQL:微软

    设计范式:

     "1NF": 原子性 Atomicity,
         例如:一个字段包含班级和专业,不被允许
    
     "2NF":行内有有限个字段惟一标识此行, 
    
     "3NF":2个表有相同的字段时,1张表字段必须是主键
          例如:
              表1: 专业:非主键
              表2: 专业:主键

    满足范式:

      "拆表":将一个大的数据集拆分为小表,表必须满足范式
      "联合":join, 基于index,算法
      "数据集":一个库、方案、集合内

    表:先定义column, 后row

      可以没有row, 必须有column

    结构:

     SQL引擎: 
     执行[scan]、分析[parsing]、求解[解决方案]、优化[选择路径|修改路径结果不变]
     "事务:
     多个操作都完成或都不完成(Atomicity原子性, Consistency一致性, Isolating隔离性, Durability持久性)
     恢复:
     将事务日志中的数据同步至数据区
     锁:
     写(自己rw,其它人:-)读(自己:r,其它人:r)
     空间管理、缓冲、文件存取接口

    wKioL1nPWpzDv3-iAAAz5saAoY0066.png

  3. SQL协议:Structure Query Language结构化查询语言

    实现: SQL引擎或SQL解释器 SQL引擎(SQL协议): 命令运行、函数、变量

  4. 数据存储协议:

    C/S架构,mysql协议, mariadb协议, oracle协议, mssql协议(sql server)

    实现

     Client:
         程序:CLI(mysql), GUI(phpMyadmin)
         API:  SQL接口, php-mysql, ODBC(底层库)
             **API:写程序面向的对象:硬件规格、汇编、syscall、libcall
     Server: 
         监听socket,接收、处理、响应用户的请求

三、MySQL/MariaDB基本知识

开源RDBMS的实现

MariaDB

MariaDB的来源

作者研发SQL接口:成立AB(瑞典公司),MySQL

MySQL-->Google,facebook改进-->SUN收购-->Oracle收购SUN-->

MySQL读音:‘My' 'SQL'

作者不乐意:另起一摊:MariaDB Maria:女儿的名字

Oracle收购SUN的原因

Oracle不能提供硬件到软件到系统一体化的解决方案,而IBM(BIG BLUE)可以,为了比肩IBM,就收购了SUN

约束:插入的数据要遵守的限制

约束类型:

  • 主键约束:插入数据,惟一标识本行。Not NULL,惟一

  • 惟一键: 插入数据,惟一标识本行。NULL,不惟一

  • 外键约束:此表插入内容,取决于另一个表的主键

  • 检查性约束:字段定义表达式,插入数据必须满足表达式

索引:抽取数据子集,排序

稠密、稀疏:1对1 or 1对多

简单、组合: 索引字段是1个或多个

聚簇、非聚簇:索引字段与数据是否在一起

关系运算:抽取数据集

选择、选择row,WHERE

投影、选择column, SELECT

连接、join

数据抽象:按视角

视图层:view,只能看到数据库的部分内容:提升用户体验

逻辑层:元数据, 依赖关系

物理层:据存储格式:表和文件的对应关系

MySQL安装:

源码 rpm

程序官方/项目官方:源码和二进制程序

OS Vendor系统安装光盘: rpm 稳定 

感激

  • 瑞哥QQ,博客

  • QQ: 2580259468

  • 博客

wKiom1nPLnDSJM8yAABpHaLUCWY511.png










本文转自 lccnx 51CTO博客,原文链接:http://blog.51cto.com/sonlich/1969965,如需转载请自行联系原作者
相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
打赏
0
0
0
0
234
分享
相关文章
|
10月前
|
【PHP开发专栏】Symfony框架核心组件解析
【4月更文挑战第30天】本文介绍了Symfony框架,一个模块化且高性能的PHP框架,以其可扩展性和灵活性备受开发者青睐。文章分为三部分,首先概述了Symfony的历史、特点和版本。接着,详细解析了HttpFoundation(处理HTTP请求和响应)、Routing(映射HTTP请求到控制器)、DependencyInjection(管理依赖关系)、EventDispatcher(实现事件驱动编程)以及Security(处理安全和认证)等核心组件。
184 3
框架源码私享笔记(02)Mybatis核心框架原理 | 一条SQL透析核心组件功能特性
本文详细解构了MyBatis的工作机制,包括解析配置、创建连接、执行SQL、结果封装和关闭连接等步骤。文章还介绍了MyBatis的五大核心功能特性:支持动态SQL、缓存机制(一级和二级缓存)、插件扩展、延迟加载和SQL注解,帮助读者深入了解其高效灵活的设计理念。
|
4月前
|
PHP开发中防止SQL注入的方法,包括使用参数化查询、对用户输入进行过滤和验证、使用安全的框架和库等,旨在帮助开发者有效应对SQL注入这一常见安全威胁,保障应用安全
本文深入探讨了PHP开发中防止SQL注入的方法,包括使用参数化查询、对用户输入进行过滤和验证、使用安全的框架和库等,旨在帮助开发者有效应对SQL注入这一常见安全威胁,保障应用安全。
136 4
20 PHP如何捕获sql错误
路老师带你深入学习PHP,掌握技术干货。本文介绍了PDO中捕获SQL错误的三种模式:默认模式、警告模式和异常模式,以及如何使用errorCode()和errorInfo()方法进行错误处理。
141 2
php如何开启COM组件
请注意,上述步骤可能根据您的具体环境(如操作系统版本、PHP版本或服务器类型)有所变化。在操作过程中遇到困难时,建议直接咨询您的托管服务提供商或查阅等专业平台提供的详尽文档与解决方案,以获取个性化的技术支持。
67 1
|
7月前
|
PHP代码审计示例(一)——淡然点图标系统SQL注入漏洞审计
PHP代码审计示例(一)——淡然点图标系统SQL注入漏洞审计
155 4
代码审计-PHP原生开发篇&SQL注入&数据库监控&正则搜索&文件定位&静态分析
代码审计-PHP原生开发篇&SQL注入&数据库监控&正则搜索&文件定位&静态分析
101 6
|
10月前
|
【PHP 开发专栏】PHP 防止 SQL 注入的方
【4月更文挑战第30天】本文介绍了PHP防止SQL注入的策略,包括理解SQL注入的原理和危害,如数据泄露和系统控制。推荐使用参数化查询(如PDO扩展)、过滤和验证用户输入,以及选择安全的框架和库(如Laravel)。此外,强调了保持警惕、定期更新维护和开发人员安全培训的重要性,以确保应用安全。
276 3