MYSQL数据库的下载以及安装
MySQL是一个小型的数据库管理系统,由于其体积小,速度快,尤其是开放源代码等优点,使得其在开发中得到广泛的使用,本文主要介绍MySQL数据库从下载到安装及通过命令行的使用等。点击打开链接,这里面的安装过程十分详细大家可以参考。
数据库:PHP三阶段
基本阶段:mysql数据库的基本操作(增删改查),高级操作(视图,触发器,函数,存储过程),PHP操作,mysql数据库。
优化阶段:如何提高数据库效率,如索引、分表等。
部署阶段:如何搭载真实的环境系统,如服务器集群、负载均衡。
数据库基础
1、什么是数据库?
数据库:database,存储数据的仓库。(简单通俗来说)
数据库:高效的存储和处理数据的介质。(介质分为两种:磁盘和内存(RAM))
2、数据库的分类:
基于存储介质的不同分为两类:关系型数据库(SQL)和非关系型数据库(NOSQL:Not only SQL)
3、不同数据库阵营中的产品有哪些?
关系型数据库:
大型:Oracle,DB2
中型:SQL-SERVER,mysql等
小型:access等
非关系型数据库:memcached,mongodb,redis(同步到磁盘)
4、两种数据库阵营的区别?
关系型数据库:优点(安全保存磁盘文件不丢失)缺点(比较浪费空间,以二维表的形式)
非关系型数据库:效率高但是不够安全,断电丢失。
关系型数据库
1、什么是关系型数据库?
关系型数据库:是一种建立在关系模型(数学模型)的数据库。
关系模型:一种所谓建立在关系上的模型,关系模型包括三个方面
1、数据结构:数据存储的问题,二维表(有行和列)。
2、操作指令集合:所有的SQL语句操作。
3、完整性约束:表内数据约束(字段与字段),表与表之间约束(外键)
例如:w3c规范约束点击打开链接
2、关系型数据库的设计
关系型数据库:从需要存储的数据需求中分析,如果是一类数据(实体)应该设计成一张二维表:表头(字段名:用来规定数据的名字)和数据部分组成(实际存储的数据单元)
二维表由行和列组成:
表头 | 字段名1 | 字段名2 |
数据单元 | 数据1 | 数据2 |
接下来给大家分析一个实际案例:分析一个教学系统,其中讲师负责教学,教学生,在教师教学生。
1、找出系统中所有存在的实体:讲师表,学生表,班级表。
2、找出实体中应该存的数据信息:
讲师:姓名、性别、年龄、工资
学生:姓名、性别、学号、学科
班级:名字、班级编号
关系型数据库:维护实体内部,实体与实体之间的联系。
实体内部联系:每个学生都有姓名学号,性别,学科信息。
举例如下:表格一
姓名 | 性别 | 学号 | 学科 | 年龄 |
迪丽热巴 | 女 | 06151088 | PHP | 18 |
唐艺昕 | 女 | 06151077 | PHP | 20 |
胡歌 | 男 | 05151099 | UI | 21 |
第二行的所有字段,都是在描述迪丽热巴这个学生(内部联系),第二列来看只可以放性别(内部约束)
关系型数据库的特点之一:如果表内对应的某个字段没有数值(数据),但是系统依然要分配空间,关系型数据库比较浪费空间。
实体与实体之间的联系:每个学生可定属于某个班级(一对一)每个班级可定有很多学生(一对多)
表格二:班级表
班级名称 | 班级编号 |
PHP1505 | B220 |
PHP1503 | A107 |
知道了表格一和表格二之后,我们并不知道学生所对应的班级,这显然是不合理的,所以我们需要在学生表中添加一个班级字段(必须能够唯一的找到一个班级信息),同样可以在班级表中添加学生,但是太多学生了会比较凌乱,结果如下:
姓名 | 性别 | 学号 | 学科 | 年龄 | 班级名称 |
迪丽热巴 | 女 | 06151088 | PHP | 18 | PHP1505 |
唐艺昕 | 女 | 06151077 | PHP | 20 | PHP1503 |
胡歌 | 男 | 06151099 | UI | 21 | UI1602 |
这样我们就可以找到唯一的对应关系。学生实体与班级实体的关联关系:实体与实体的关系。
关键字说明:
数据库:database
数据库:(database system)DBS:是一种虚拟系统,将多种内容关联起来的称呼。
DBS=DBMS+DB
DBMS:database management system数据库管理系统,专门管理数据库。
DBA:database administractor数据库管理员
行/记录:row/record,本质是一个东西,都是指表中的一行(一条记录),行是从结构角度出发,记录是从数据角度出发。
列/字段:coclumn/field,本质也相同。
SQL:structured language结构化查询语言(数据主要以查询为主,99%是在进行查询操作)
SQL分为三个阶段:
DDL:data definition language数据定义语言,用来维护存储数据的结构(数据库、表)
代表指令:create,drop,alter等。
DML:data manipulation language数据操作语言,用来对数据进行操作(数据表中的内容)。
代表指令:insert,delete,update等。其中DML内部又单独进行了一个分类DQL(data query language数据查询语言,如select)。
DCL:data control language数据控制语言,主要是负责权限管理(用户)。
代表指令:grant,revoke(分配回收权限)等。
SQL是关系型数据库的操作指令,SQL是一种约束,但不强制(类似于w3c)不同数据库的产品(如Oracle和mysql)可能内部会有一些细微的区别。
Mysql数据库
mysql数据库是一种c/s结构的软件,客户端/服务端,若想访问服务器必须通过客户端(服务器是一直运行的,客户端是需要使用的时候运行)
扁平化:也即不进行区分服务端和客户端。点击打开链接
交互方式:
1、客户单连接认证:连接服务器认证身份
例如:mysql.exe -h pup
2、发送SQL指令
3、服务器接收SQL指令:处理SQL指令,返回操作结果。
4、客户端接受结果,显示结果
5、断开连接(释放资源,服务器并发限制)退出方式exit/quit/\q都可以退出。
Mysql的服务器对象
我们没有办法完全了解服务器内部的内容,只能粗略的去分析数据库服务器内部的结构,将mysql服务器内部对象分成了四层:系统(DBMS)>数据库(DB)>数据表(Table)>字段(field)
SQL的基本操作:增删改查。
将SQL的基本操作根据操作对象进行了分类,分为以下几类:库操作、表操作(字段)、数据操作。
库操作,对数据进行增删改查。
新增数据库
基本语法:
create database 数据库名字(字母数字下划线,但是不可以数字开头) 【库选项】;
库选项:用来约束数据库,分为两个选项。
1、字符集设定:charset/character set具体字符集(数据存储的编码格式)常用字符集:GBK和UDF8
2、校对集设定:collate具体校对集(数据比较的规则)
-- 双中划线加空格表示注释,单行注释也可以用#号
注意事项:1、数据库名字不能用关键字(以境内使用的字符)或者保留字(将来可能会用到的字符)
3、如果用关键字进行命名会报错,SQL语句报错,只会告诉用户错误的大概位置,不会说明报错原因。
4、如果非要使用关键字或者保留字,那么必须使用反引号(键盘esc按键下面的键在英文状态下的输出:`)
5、中文数据库也是可以的,但是有前提条件,保证服务器能够识别(不建议大家用中文)
5、解决方案就是,告诉服务器当前的中文字符集。
当创建数据库的 SQL语句执行之后发生了什么?
1、在数据库系统中,增加了对应的数据库信息。
2、会在保存数据的文件夹下:data目录创建一个对应数据库名字的文件。3、每个数据库下面都有opt文件,保存了库选项。
第一行表示字符集。
第二行校对集:校对集依赖字符集。