# 第十五章 MySQL 数据库
**学习要点:**
1.Web 数据库概述
2.MySQL 的操作
3.MySQL 常用函数
4.SQL 语句详解
5.phpMyadmin
**一.Web数据库概述**
现在,我们已经熟悉了PHP 的基础知识,这是我们想暂时离开PHP 一章,来重点介绍
一下关系型数据库,让大家了解数据库比文件储存的有点。这些优点包括:
1.关系型数据库比普通文件的数据访问速度更快。
2.关系型数据库更容易查阅并提取满足特定条件的数据。
3.关系型数据库更具有专门的内置机制处理并发访问,作为程序员,不需要为此担心。
4.关系型数据库可以提供对数据的随即访问。
5.关系型数据库具有内置的权限系统。
关系数据库的概念
至今为止,关系数据库是最常用的数据库类型。在关系代数方面,它们具有很好的理论
基础。当使用关系数据库的时候,并不需要了解关系理论(这是一件好事),但是还是需要
理解一些关于数据库的基本概念。
1)表格
关系数据库由关系组成,这些关系通常称为表格。顾名思义,一个关系就是一个数据的
表格。电子数据表就是一种表格。
![](https://box.kancloud.cn/2016-05-17_573b0676db032.png)
2)列
表中的每一列都有惟一的名称,包含不同的数据。此外,每一列都有一个相关的数据类
型。
3)行
表中的每一行代表一个客户。每一行具有相同的格式,因而也具有相同的属性。行也成
为记录。
4)值
每一行由对应每一列的单个值组成。每个值必须与该列定义的数据类型相同。
5)键
每一条数据所对应的唯一的标识。
6)模式
数据库整套表格的完整设计成为数据库的模式。
7)关系
外键标识两个表格数据的关系。
如何设计Web 数据库
1)考虑要建模的实际对象。
2)避免保存冗余数据。
3)使用原子列值(对每一行的每个属性只存储一个数据。)
4)选择有意义的键。
5)考虑需要询问数据库的问题。
6)避免多个空属性的设计
Web 数据库架构
浏览器和Web 服务器之间的通信:
![](https://box.kancloud.cn/2016-05-17_573b0676f0490.png)
浏览器和PHP&MySQL 服务器之间的通信
![](https://box.kancloud.cn/2016-05-17_573b06770fd25.png)
1)用户的Web 浏览器发出HTTP 请求,请求特定Web 页面。
2)Web 服务器收到.php 的请求获取该文件,并将它传到PHP 引擎,要求它处理。
3)PHP 引擎开始解析脚本。脚本中有一条连接数据库的命令,还有执行一个查询的命令。
PHP 打开通向MYSQL 数据库的连接,发送适当的查询。
4)MYSQL 服务器接收数据库查询并处理。将结果返回到PHP 引擎。
5)PHP 以你去哪干完成脚本运行,通常,这包括将查询结果格式化成HTML 格式。然
后再输出HTML 返回到Web 服务器。
6)Web 服务器将HTML 发送到浏览器。
**二.MySQL操作**
登录到MySQL
1)打开MySQL Command Line Client
2)输入root 的设置密码
MySQL 常规命令
1)显示当前数据库的版本号和日期。
SELECT VERSION(),CURRENT_DATE();
2)通过AS 关键字设置字段名。
SELECT VERSION() AS version; //可设置中文,通过单引号
3)通过SELECT 执行返回计算结果
SELECT (20+5)*4;
4)通过多行实现数据库的使用者和日期
>SELECT
>USER()
>,
>NOW()
>;
5)通过一行显示数据库使用者和日期
>SELECT USER();SELECT NOW();
6)命令的取消
>\c
7)MySQL 窗口的退出
>exit;
MySQL 常用数据类型
整数型:TINYINT,SMALLINT,INT,BIGINT
浮点型:FLOAT,DOUBLE,DECIMAL(M,D)
字符型:CHAR,VARCHAR
日期型:DATETIME,DATE,TIMESTAMP
备注型:TINYTEXT,TEXT,LONGTEXT
![](https://box.kancloud.cn/2016-05-17_573b067720d10.png)
![](https://box.kancloud.cn/2016-05-17_573b067730a89.png)
![](https://box.kancloud.cn/2016-05-17_573b067746012.png)
![](https://box.kancloud.cn/2016-05-17_573b06775ab3e.png)
![](https://box.kancloud.cn/2016-05-17_573b067770f23.png)
MySQL 数据库操作
1)显示当前存在的数据库
>SHOW DATABASES;
2)选择你所需要的数据库
>USE guest;
3)查看当前所选择的数据库
>SELECT DATABASE();
4)查看一张表的所有内容
>SELECT * FROM guest; //可以先通过SHOW TABLES;来查看有多少张表
5)根据数据库设置中文编码
>SET NAMES gbk; //set names utf8;
6)创建一个数据库
>CREATE DATABASE book;
7)在数据库里创建一张表
>CREATE TABLE users (
>username VARCHAR(20), //NOT NULL 设置不允许为空
>sex CHAR(1),
>birth DATETIME);
8)显示表的结构
>DESCIRBE users;
9)给表插入一条数据
>INSERT INTO users (username,sex,birth) VALUES ('Lee','x',NOW());
10)筛选指定的数据
> SELECT * FROM users WHERE username = 'Lee';
11)修改指定的数据
>UPDATE users SET sex = '男' WHERE username='Lee';
12)删除指定的数据
> DELETE FROM users WHERE username='Lee';
13)按指定的数据排序
> SELECT * FROM users ORDER BY birth DESC; //正序
14)删除指定的表
>DROP TABLE users;
15)删除指定的数据库
>DROP DATABASE book;
**三.MySQL常用函数**
![](https://box.kancloud.cn/2016-05-17_573b067785e30.png)
![](https://box.kancloud.cn/2016-05-17_573b0677a0ed5.png)
![](https://box.kancloud.cn/2016-05-17_573b0677c5078.png)
![](https://box.kancloud.cn/2016-05-17_573b067814b7b.png)
![](https://box.kancloud.cn/2016-05-17_573b06782801b.png)
**四.SQL语句详解**
1.创建一个班级数据库school,里面包含一张班级表grade,包含编号(id)、姓名(name)、
邮件(email)、评分(point)、注册日期(regdate)。
mysql>CREATE DATABASE school; //创建一个数据库
mysql> CREATE TABLE grade (
//UNSIGNED 表示无符号,TINYINT(2) 无符号整数0-99,NOT NULL 表示不能为
空,AUTO_INCREMENT 表示从1 开始没增加一个字段,累计一位
-> id TINYINT(2) UNSIGNED NOT NULL AUTO_INCREMENT,
-> name VARCHAR(20) NOT NULL,
-> email VARCHAR(40),
-> point TINYINT(3) UNSIGNED NOT NULL,
-> regdate DATETIME NOT NULL,
-> PRIMARY KEY (id) //表示id 为主键,让id 值唯一,不得重复。
-> );
2.给这个班级表grade 新增5-10 条学员记录
mysql> INSERT INTO grade (name,email,point,regdate) VALUES
('Lee','yc60.com@gmail.com',95,NOW());
3.查看班级所有字段的记录,查看班级id,name,email 的记录
mysql> SELECT * FROM grade;
mysql> SELECT id,name,email FROM grade;
![](https://box.kancloud.cn/2016-05-17_573b06783fd80.png)
4.姓名等于'Lee'的学员,成绩大于90 分的学员,邮件不为空的成员,70-90 之间的成员
mysql> SELECT * FROM grade WHERE name='Lee';
mysql> SELECT * FROM grade WHERE point>90;
mysql> SELECT * FROM grade WHERE email IS NOT NULL;
mysql> SELECT * FROM grade WHERE point BETWEEN 70 AND 90;
mysql> SELECT * FROM grade WHERE point IN (95,82,78);
5.查找邮件使用163 的学员,不包含yc60.com 字符串的学员
mysql> SELECT * FROM grade WHERE email LIKE '%163.com';
mysql> SELECT * FROM grade WHERE email NOT LIKE '%yc60.com%';
6.按照学员注册日期的倒序排序,按照分数的正序排序
mysql> SELECT * FROM grade ORDER BY regdate DESC;
mysql> SELECT * FROM grade ORDER BY point ASC;
7.只显示前三条学员的数据,从第3 条数据开始显示2 条
mysql> SELECT * FROM grade LIMIT 3;
mysql> SELECT * FROM grade LIMIT 2,2;
8.修改姓名为'Lee'的电子邮件
mysql> UPDATE grade SET email='yc60.com@163.com' WHERE name='Lee';
9.删除编号为4 的学员数据
mysql> DELETE FROM grade WHERE id=4;
![](https://box.kancloud.cn/2016-05-17_573b06785855d.png)
10.过一遍以上的分组函数
略。
11.检查这个表的信息
mysql> SHOW TABLE STATUS \G;
12.优化一张表
mysql> OPTIMIZE TABLE grade;
**五.PhpMyAdmin**
phpMyAdmin(简称PMA)是一个用PHP 编写的,可以通过互联网在线控制和操作
MySQL。他是众多MySQL 管理员和网站管理员的首选数据库维护工具,通过phpMyAdmin
可以完全对MySQL 数据库进行操作。
创建数据库scholl
创建一个数据库->选择utf8 字符集
导出另一个数据库SQL
1.选择另一个数据库->导出
2.选择需要导出的表->全选
3.选择Add DROP TABLE / DROP VIEW (基本表一旦删除,表中的数据以及相应建立
的索引和视图都将自动被删除)
4.选择另存为文件
5.选择执行,保存sql 文件
导入数据库
1.选择被导入的数据库
2.选择Import(导入),选择sql 文件
3.执行即可
![](https://box.kancloud.cn/2016-05-17_573b06786cacb.png)
重建表
1.找到sql 文件中的刚才输出的建表语句.
2.复制建表语句
3.然后选择sql,选择粘贴,执行即可
修复数据表
1.选择要修复的表
2.在选中项中,选择修复表,即可
优化数据表
1.选择要优化的表
2.在选中项中,选择优化表,即可
修改,删除,插入表记录
执行SQL 语句
** 注:文章出自李炎恢PHP视频教程,本文仅限交流使用,不得用于商业用途,否则后果自负。**
- 介绍
- HTML/CSS 教程
- 第 1 章 HTML5 概述
- 第 2 章 基本格式
- 第 3 章 文本元素
- 第 4 章 超链接和路径
- 第 5 章 分组元素
- 第 6 章 表格元素
- 第 7 章 文档元素
- 第 8 章 嵌入元素
- 第 9 章 音频和视频
- 第 10 章 表单元素[上]
- 第 10 章 表单元素[中]
- 第 10 章 表单元素[下]
- 第 11 章 全局属性和其他
- 第 12 章 CSS 入门
- 第 13 章 CSS 选择器[上]
- 第 14 章 CSS 颜色与度量单位
- 第 15 章 CSS 文本样式[上]
- 第 15 章 CSS 文本样式[下]
- 第 16 章 CSS 盒模型[上]
- 第 16 章 CSS 盒模型[下]
- 第 17 章 CSS 边框与背景[上]
- 第 17 章 CSS 边框与背景[下]
- 第 18 章 CSS 表格与列表
- 第 19 章 CSS 其他样式
- 第 20 章 CSS3 前缀和 rem
- 第 21 章 CSS3 文本效果
- 第 21 章 CSS3 文本效果
- 第 23 章 CSS3 边框图片效果
- 第 24 章 CSS3 变形效果[下]
- 第 25 章 CSS3 过渡效果
- 第 26 章 CSS3 动画效果
- 第 27 章 CSS 传统布局[上]
- 第 27 章 CSS 传统布局[下]
- 第 28 章 CSS3 多列布局
- 第 29 章 CSS3 弹性伸缩布局[上]
- 第 29 章 CSS3 弹性伸缩布局[中]
- 第 29 章 CSS3 弹性伸缩布局[下]
- 第 30 章 使用 Emmet 插件
- Bootstrap 教程
- 第 1 章 Bootstrap 介绍
- 第 2 章 排版样式
- 第 3 章 表格和按钮
- 第 4 章 表单和图片
- 第 5 章 栅格系统
- 第 6 章 辅组类和响应式工具
- 第 7 章 图标菜单按钮组件
- 第 8 章 输入框和导航组件
- 第 9 章 路径分页标签和徽章组件
- 第 10 章 巨幕页头缩略图和警告框组件
- 第 11 章 进度条媒体对象和 Well 组件
- 第 12 章 列表组面板和嵌入组件
- 第 13 章 模态框插件
- 第 14 章 下拉菜单和滚动监听插件
- 第 15 章 标签页和工具提示插件
- 第 16 章 弹出框和警告框插件
- 第 17 章 按钮和折叠插件
- 第 18 章 轮播插件
- 第 19 章 附加导航插件
- 第 20 章 项目实战--响应式导航[1]
- 第 20 章 项目实战--响应式轮播图[2]
- 第 20 章 项目实战--首页内容介绍[上][3]
- 第 20 章 项目实战--首页内容介绍[下][4]
- 第 20 章 项目实战--资讯内容[5,6]
- 第 20 章 项目实战--案例和关于[7]
- javaScript 教程
- javascript快速入门1--JavaScript前世今生,HelloWorld与开发环境
- javascript快速入门2--变量,小学生数学与简单的交互
- javascript快速入门3--分支判断与循环
- javascript快速入门4--函数与内置对象
- javascript快速入门5--数组与对象
- javascript快速入门6--Script标签与访问HTML页面
- javascript快速入门7--ECMAScript语法基础
- javascript快速入门8--值,类型与类型转换
- javascript快速入门9--引用类型
- javascript快速入门10--运算符,语句
- javascript快速入门11--正则表达式
- javascript快速入门12--函数式与面向对象
- javascript快速入门13--BOM——浏览器对象模型(Browser Object Model)
- javascript快速入门14--DOM基础
- javascript快速入门15--节点
- javascript快速入门15--表单
- javascript快速入门16--表格
- javascript快速入门17--事件
- javascript快速入门18--样式
- javascript快速入门19--定位
- javascript快速入门20--Cookie
- javascript快速入门21--DOM总结
- javascript快速入门22--Ajax简介
- javascript快速入门23--XHR—XMLHttpRequest对象
- javascript快速入门24--XML基础
- javascript快速入门25--浏览器中的XML
- javascript快速入门26--XPath
- javascript快速入门27--XSLT基础
- PHP 教程
- 第一章 如何加载运行已发布的PHP项目
- 第二章 PHP基础
- 第三章 操作符与控制结构
- 第四章 数学运算
- 第五章 数组
- 第六章 目录与文件
- 第七章 自定义函数
- 第八章 字符串处理
- 第九章 正则表达式
- 第十章 日期与时间
- 第十一章 表单与验证
- 第十二章 会话控制
- 第十三章 上传文件
- 第十四章 处理图像
- 第十五章 MySQL 数据库
- 第十六章 PHP 操作MySQL
- 第十七章 面向对象基础
- 第十八章 面向对象的特性
- 第十九章 面向对象的工具