文档章节

《PHP和MySQL Web 开发》 第9章 创建Web数据库 (9.8-9.10)

十万猛虎下画山
 十万猛虎下画山
发布于 2018/07/26 11:58
字数 2877
阅读 25
收藏 1

LCL WARNING

  1. 这是我学习《PHP和MySQL Web 开发》的读书笔记,一些重要的知识点我会记录下来,当然只会写我觉得重要的。

  2. 如果有幸有人看到这个学习笔记了,你要结合着书看,不要光看这个笔记。

  3. 在笔记里我会记录一些我学习中遇到的问题和解决办法与注意事项。

  4. 为了方便管理和查找,文章或者说笔记的目录我就按照书里的排了,方便对比着看。

  5. 不是教学!重要的是说一遍!我是PHP和MySQL 的初学者,我本身是个前端,为了面向工资编程,拓宽知识面才学的。

  6. 其实还是有一些私心得,因为都说教学相长 和 小黄鸭调试法,我这个是小老虎学习法,对着小老虎讲知识点,保证自己学的扎实,能挣钱。

  7. 欢迎探讨和指教,须知一山更比一山高,但是拒绝杠精!

前情提要

《PHP和MySQL Web 开发》 第8章 设计Web数据库 (8.1)

《PHP和MySQL Web 开发》 第8章 设计Web数据库 (8.2)

《PHP和MySQL Web 开发》 第9章 创建Web数据库 (9.1-9.7)

 

李重楼

9.8创建数据库表

create table tablename;

创建表的常见形式(命令)就是这样的,翻译成中文就是 创建表 表名。呃,好像翻译不翻译没啥大区别。

create table tablename (columns);

这段代码是和书中一模一样的,其中 columns 就是你在创建数据库时同时创建的列,看例子是怎么用的。

创建数据库大致分两种,一是先创建数据库,然后向数据库内插入列,另一种就是创建数据库时同时指定数据库的列,这个看个人喜好吧

书中给了bookorama.sql 的程序清单,我推荐你手动输入敲一遍。

熟悉下码感。我学到这的时候真的敲的错误百出~所以你也敲敲看,我最近才顿悟,作为一个程序员,要拥抱错误,漠视警告。

敲的时候仔细看,首先看表的模式,看着表模式,能够知道哪个是主键,外键,列名字段吗?是不是都忘了?忘了回去翻书,再看一遍。然后对应的着代码敲,敲的时候你会发现有好多不认识的,没关系,你就按照书中代码敲,别怀疑,一直敲,敲完后面会讲你不认识的都是啥的。

我决定了,以后啰嗦的话用绿色标出来,重点才用红色。话说,看到这个颜色,你有没有想起你的前女友?

如果你成功创建了一个数据表,你可以输入如下命令,查看数据表,注意:tables 要加S!!!!

show tables;

输出的数据表是这样的:

+-----------------+
| Tables_in_books |
+-----------------+
| customers       |
+-----------------+

这个是第一个数据表,customers 顾客表, 注意表头,写的是 Tables_in_books  意思是 在books 数据库中的表,不是书在桌子上!

 

9.8.1理解其他关键字的意思

其实你在敲命令,创建数据表的时候,应该看完这一节的才对,包括下一节。没看也没关系,现在看,然后结合着前面理解。

NOT NULL 的意思是表中所有行的此属性必须有一个值。

这里是从行(记录)角度说的,其实从列角度说就是此列对应的输入不得为 NULL,结合后面一句看“如果没指定,该列可以为空(NULL)”。

有点懵逼?没关系,我给你解释。

先理解一个概念,空值,它也是。只不过该为空。(var a=''; var b=null; a!=b//true; js代码,看明白没?

NOT NULL 的意思是表中所有行的此属性必须有一个,这个可以是你主动输入的123,什么的,也可以是

但不能是NULL,因为NULL这个值,是没有主动指定NOT NULL时填充进去的。

妈蛋,我写完了,也搜到解释了,如果我上述表述不清晰,可查看:MySQL null与not null和null与空值''的区别 。

 

AUTO_INCREMENT  书中已经说的很明白了,我介绍一下课外知识吧。

increment 读作 [ˈɪnkrəmənt, ˈɪŋ-]  增量 的意思,auto_increment自动增量的意思,也可叫自增量

还有一条是:指定 AUTO_INCREMENT 的列必须是索引列。

(书中貌似对什么是索引没有解释,这是我搜索到的索引解释:索引用于快速找出在某个列中有一特定值的行,不使用索引,MySQL必须从第一条记录开始读完整个表,直到找出相关的行,表越大,查询数据所花费的时间就越多,如果表中查询的列有一个索引,MySQL能够快速到达一个位置去搜索数据文件,而不必查看所有数据,那么将会节省很大一部分时间。

例如:有一张person表,其中有2W条记录,记录着2W个人的信息。有一个Phone的字段记录每个人的电话号码,现在想要查询出电话号码为xxxx的人的信息。

如果没有索引,那么将从表中第一条记录一条条往下遍历,直到找到该条信息为止。

如果有了索引,那么会将该Phone字段,通过一定的方法进行存储,好让查询该字段上的信息时,能够快速找到对应的数据,而不必在遍历2W条数据了。其中MySQL中的索引的存储类型有两种:BTREE、HASH。 也就是用树或者Hash值来存储该字段,要知道其中详细是如何查找的,就需要会算法的知识了。我们现在只需要知道索引的作用,功能是什么就行。全文请查看:MySQL中的索引详讲

 

9.8.2理解列类型

现在是2018年7月30日13:27 我收回之前吹牛B说七月底写完笔记的的话,上手写的时候我才发现自己的无知,之前很多觉得会了的,当要写笔记的时候,才发现模棱两可,表述不清,所以一直在阅读展开相关知识带你,还有就是我懒...我争取8月份写完笔记。。。

主要写的是列数据类型,整节的数据类型如下:

  • unsigned 无符号的
  • char  字符串数据类型。是指使用指定固定长度表示的字符串,比如char(8),则数据库会使用固定的1个字节(八位)来存储数据,不足8位的字符串在其后补空字符。
  • amount 浮点类型数据(float)类型。如果你之前没有接触过数据类型,你可以暂且记为包含小数点的数字类型
  • Date 日期数据类型。这个不解释了。
  • text 字符串数据类型。但是这个用于长文本,如文章什么的。

9.8.3用show和describe来查看数据库

这个之前说过了。再来一遍吧。

查看数据库(databases 注意加S)

show databases;

使用数据库 (目前可使用的是books,use books;)

use dbname;

查看数据表(记得加s)

show tables;

输入完了你会看到如下数据表的,再次注意看表头Tables_in_books ,显示当前的数据表是在哪个数据库。

+-----------------+
| Tables_in_books |
+-----------------+
| book_reviews    |
| books           |
| course          |
| customers       |
| order_items     |
| orders          |
+-----------------+

 

查看某个特定表的详细信息.(书中举例说明的是books 表,是books数据库中的books表,别搞混乱了啊。)

describe tablename;

我也显示了一下:

+--------+------------+------+-----+---------+-------+
| Field  | Type       | Null | Key | Default | Extra |
+--------+------------+------+-----+---------+-------+
| isbn   | char(13)   | NO   | PRI | NULL    |       |
| author | char(50)   | NO   |     | NULL    |       |
| title  | char(100)  | NO   |     | NULL    |       |
| price  | float(4,2) | NO   |     | NULL    |       |
+--------+------------+------+-----+---------+-------+

 

9.8.4创建索引

这里的内容略过了,我就不写我笔记了,因为我没啥可记的。推荐查看我上文提到过的文章:MySQL中的索引详讲。你先了解原理就行,具体操作先不必上手,专心看书。

 

9.9理解MySQL的标识符

略。

9.10选择列数据类型

MySQL中3种基本的列数据类型:数字,日期和时间、字符串。

一般来说,选择列数据类型的时候,基本原则是选择可以满足数据的最小类型

 

9.10.1数字类型

数字类型分为整型浮点型两类。

我只能用我浅薄的小学数学水平,狭隘的解释一下这两类了。

整型:整数,正整数负整数都是整型,不包含小数点的。

浮点型:就是小数,是不是浮点型,就看有没有小数点就行了。

然后看表9-5,9-6吧。

 

9.10.2日期和时间类型

唯一值得提的是TIMESTAMP类型。因为它有两个特性:

1.不手动指定时,TIMESTAMP列将被设置为最近修改该行的日期和时间。(设想一下这个特性能做什么?)。

2.它有多种的可显示类型,参见表9-8。

 

9.10.3字符串类型

字符串类型分了三大类,其中第二类为text和blob类型。

BLOB全称为大二进制对象。它支持任何数据,例如,图像或声音数据。

 

 

数据库三大类型介绍完毕了,是不是觉得很多很繁琐记不清?

其实很好记得,同一类型,比如说字符串类型,它很多的类型都是对当前类型的描述,长文本类型(langtext),中等文本类型(mediumtext),小文本类型(tinytext)。其实都是对一种类型,不同范围的描述。如果你这么理解了,就容易记得多了,可参看MySQL 数据类型文档。

我其实根本就没记,主要的类型我还记了的,随用随查,用的多了自然就记着了。

 

结语:

回想第八章,我们学习了数据库的基本知识,学习了是么是表格,列,行(记录),值,键(主键/外键)

学习了关系数据库的都是啥关系?一对一,一对多,多对多

学习了数据库的基本设计规范(三个不规则)。

什么是原子列?还扩展的学习了第一二三范式

web数据库的架构

 第九章的内容是实践偏结合,学习了如何登陆,创建数据库,创建用户,设置用户权限

学习了数据表的创建,查看,关键字都是什么意思。扩展了学习了一下索引列的三大数据类型

说起来没多少,如果你也是一步一步看过来,并且还保证自己学会理解,还是很多的。努力吧,我也在学习。在此之前,我对数据库只有个简单的认识与了解,学习完这两章之后。对数据库也是有个粗浅的了解了,共同学习,共同进步,为了爱我的人,和我爱的人,努力学习挣钱花。

请看下集:

《PHP和MySQL Web 开发》 第10章 使用Web数据库 

 

 

© 著作权归作者所有

共有 人打赏支持
十万猛虎下画山
粉丝 4
博文 120
码字总数 90697
作品 0
朝阳
程序员
私信 提问
《PHP和MySQL Web 开发》 第10章 使用Web数据库

LCL WARNING 这是我学习《PHP和MySQL Web 开发》的读书笔记,一些重要的知识点我会记录下来,当然只会写我觉得重要的。 如果有幸有人看到这个学习笔记了,你要结合着书看,不要光看这个笔记。...

十万猛虎下画山
2018/07/30
0
0
现货!《PHP7实践指南:o2o网站与App后台开发》京东天猫有售

终于发售了,啥也不想说了,喜欢的或需要的就点击 链接 进去购买吧。 另外此书将作为 2017 PHP全球开发者大会 现场活动用书 天猫购书 包邮 PHP7实践指南:O2O网站与App后台开发 数据库设计 PH...

szxy1234
2017/11/02
0
0
《PHP和MySQL Web 开发》 第8章 设计Web数据库 (8.2)

LCL WARNING 这是我学习《PHP和MySQL Web 开发》的读书笔记,一些重要的知识点我会记录下来,当然只会写我觉得重要的。 如果有幸有人看到这个学习笔记了,你要结合着书看,不要光看这个笔记。...

十万猛虎下画山
2018/07/20
0
0
企业生产环境之 50-100 台规模高并发网站集群 架构搭建(期中)实战

第1章 PHP 开源产品介绍1.1 CMS 主站产品介绍官方网站:http://www.dedecms.com/1.2 discuz 论坛产品介绍官方网站:http://www.discuz.net/1.3 wordpress 博客产品介绍官方网站:http://cn.w...

欧文俊plus
2017/12/21
0
0
nfs

项目一、 (1) nfs server导出/data/application/web,在目录中提供wordpress; (2) nfs client挂载nfs server导出的文件系统至/var/www/html; (3) 客户端(lamp),部署wordpress,并让其正常访...

Vincent一马
2017/11/15
0
0

没有更多内容

加载失败,请刷新页面

加载更多

grafana安装使用及与zabbix集成

grafana简介 Grafana是一个完全开源的度量分析与可视化平台,可对来自各种各种数据源的数据进行查询、分析、可视化处理以及配置告警。 Grafana支持的数据源: 官方:Graphite,InfluxDB,Ope...

阿dai学长
32分钟前
6
0
带你看数据挖掘与机器学习-厦大EDP上课出勤预测

带你看数据挖掘与机器学习-厦大EDP上课出勤预测 标签: 数据挖掘 特征工程 机器学习 出勤预测 write by xmhexi 2019/3/22 内容提要 首先说明本文是一篇科普文章,通过一个实际案例,帮助理解什...

xmhexi
今天
73
0
IOS  学习记录

1.StackView=>IOS 9及以上支持 2.布局方式: AutoLayout / StackView 堆布局 (线性布局) 3.屏幕适配 (资源分辨率、设计分辨率、屏幕分辨率) Size Class技术 可以针对 屏幕的方向进行设置...

萨x姆
今天
5
0
第四次工业革命:自主经济的崛起

https://36kr.com/p/5170370.html

shengjuntu
昨天
5
0
Cloud Native 与12-Factor

12-Factor(twelve-factor),也称为“十二要素”,是一套流行的应用程序开发原则。Cloud Native架构中使用12-Factor作为设计准则。 12-Factor 的目标在于: 使用标准化流程自动配置,从而使...

waylau
昨天
10
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部