15158846557 在线咨询 在线咨询
15158846557 在线咨询
所在位置: 首页 > 营销资讯 > 网站运营 > 《PHP和MySQL Web 开发》 第9章 创建Web数据库

《PHP和MySQL Web 开发》 第9章 创建Web数据库

时间:2023-07-10 04:36:01 | 来源:网站运营

时间:2023-07-10 04:36:01 来源:网站运营

《PHP和MySQL Web 开发》 第9章 创建Web数据库:

封面人物

刘承羽

前言

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

  1. 如果有幸有人看到这个学习笔记了,你要结合着书看,不要光看这个笔记。
  2. 在笔记里我会记录一些我学习中遇到的问题和解决办法与注意事项。
  3. 为了方便管理和查找,文章或者说笔记的目录我就按照书里的排了,方便对比着看。
  4. 不是教学!重要的事说一遍!我是PHP和MySQL 的初学者,我本身是个前端,为了面向工资编程,拓宽知识面才学的。
  5. 其实还是有一些私心得,因为都说教学相长 和 小黄鸭调试法,我这个是小老虎学习法,对着小老虎讲知识点,保证自己学的扎实,能挣钱。
  6. 欢迎探讨和指教,须知一山更比一山高,但是拒绝杠精!



本章主要是介绍了:

开篇说了介绍了数据库安装的一部分,你可能会遇到很多错误,网上太多的安装教程了,我就不贴了,如果你整不明白这一块呢。

我有俩办法,一个呢,是安装个 xammp集合,php,mysql都有,傻瓜式的,还是中文的,你看看教程应该能搞懂。

另一个呢,是,自己按照书里研究去,安上在接着看。

到这里我默认你是安装完毕了啊~

刚说了,你可能会遇到各种问题,报错啥的。很正常,编程也就这点难度了,再难得没有了,你要克服!要坚持!想想你喜欢的姑娘,想想你微薄的收入!

好,下面我们来看这一题。

有个错误是你在启用命令行时(微软键+R 键 ,弹出运行框,输入CMD你就能看见这个黑框了),输入MySQL 命令它会提示错误:'mysql' 不是内部或外部命令,也不是可运行的程序或批处理文件。

当然,这句错误是英文,你自己复制出错误到在线翻译中翻译成中文,和我这个错误对一下。(这里说一下,英语不好没关系,你得学知道不,不认识的你就复制出来翻译成中文,多复制几遍,错误见多了,那几个单词你也就认识了,大致一看也就能明白是大概是哪的问题了,不要一看一大段的英文就懵逼,就烦躁,就不想看,你复制出来,翻译呗,就当学英语了,是不是?)

解决办法如下:

1.打开我的电脑(我的是win10系统),右键属性,点击左侧“高级系统设置”。

2.点击“高级”标签,“环境变量”。

3.从李重楼(此处是电脑的用户名,我的用户名就叫李重楼,你找你的) 的用户变量中单击 PATH 。

4.点 浏览,选择 mysql安装目录中的bin 文件,然后确定保存。重启命令行工具输入mysql ,显示welcome。

9.1使用MySQL监视程序

俩重点:

1.SQL语句不区分大小写,但数据库和表名是区分大小写。

我个人是用小写的,因为不知道为啥,大写的单词我就不认识了,233333。

2.每个命令都用分号(;)分开。

9.2登录到MySQL

mysql -h hostname -u username -p
-h 命令选项用于指定所希望连接的主机,即运行mySQL服务器的机器。
如果正在该MySQL服务器所运行的机器上运行该命令,可以忽略该选项和hostname参数。
如果不是,必须用运行mySQL服务器的主机名称来代替主机名称参数。
你如果你使用的MySQL在你电脑上,(你先粗浅的这么理解着)你可以省略 -h 命令变成如下命令也可以,一样能登录上的,因为默认就是访问你本地的MySQL服务器了。

mysql -u username -p-u 命令用于指定链接数据库时使用的用户名。

-p 命令告诉服务器要使用一个密码来链接它。

这里有个注意事项:-p 后面不加分号!!!直接回车输入密码就行!加分号提示 ERROR 1045 (28000): Access denied for user 'username '@'hostname ' (using password: YES) 的错误!!!!别问咋知道,我还按照这个错误去解决呢!根本不是错误的事,是命令打错了!!打错了!!!不加分号!!!

再说一下,一般情况下,你是第一次安装,用户和密码可能都是 root。

正常登陆了之后,你会看见下方这个提示,证明你链接成功了,此时请输入 ( quit;)然后回车。

Welcome to the MySQL monitor. Commands end with ; or /g.Your MySQL connection id is 98267Server version: 5.6.25 MySQL Community Server (GPL)Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.Oracle is a registered trademark of Oracle Corporation and/or itsaffiliates. Other names may be trademarks of their respectiveowners.Type 'help;' or '/h' for help. Type '/c' to clear the current input statement.你会发现你退出了...

我是为了让你熟悉一下,再敲一遍命令行登陆MySQL。

我当时学的时候,我是敲了大概十来遍,只多不少的,不带骗你的。

我都有肌肉记忆了。

这样能保证你睡一觉起来,还能想起来这个命令,当然以后敲多了自然就不会忘了。

9.3创建数据库和用户

create database dbname;书中的 mysql> 表示是运行在MYSQL监视程序下的命令,也就是你已经登陆了。

create(创建) database (数据库) 创建数据库 dbname ,其中 dbname 是你希望创建数据库的名称。

这里说一下:创建的是数据库!库 就是能包含 表 的库!!!!我接触这里的时候产生了疑惑,就是我链接了数据库,我已然是在数据库里了,为啥还要创建数据库,我直接创建表不就行了吗?

通俗的解释一下,MySQL就是一块地,你登录链接MySQL,就是把地买了,而刚才这步创建数据库,就是在MySQL这块地上盖数据库,你可以在这块地上盖N多个数据库。

9.3设置用户与权限

一个MySQL系统可能有多个用户。为了安全起见,root 用户通常只用作管理目的。对于每个需要使用该系统的用户,应该为他们创建一个账号和密码。
一个MySQL系统可能有多个用户。

还说回来你买了MySQL这块地的事,你是一个公司老板,买了MySQL这一亩三分地,盖仓库,蔬菜大棚啥的。

你肯定不能自己去看仓库,搬货吧?

所以进出仓库的就有了门房赵大爷和搬运工小刘。

算上你,这个仓库一共三个可以进出的人,也就是用户,所以一个MySQL系统可能有多个用户。(只不过目前看来,这三个人都是你扮演的,你缓一会儿,理解一下。)

root 用户通常只用作管理目的。

你这个公司,买了地,盖了仓库,牛逼的不行,公司老板是你,你有权安排赵大爷和小刘的工作,让他们干啥和不许干啥,你都给规定的明白儿的。

你,就是 root 用户。

做管理滴,牛皮不?

具体的活都是赵大爷和小刘的!

对于每个需要使用该系统的用户,应该为他们创建一个账号和密码。

你公司盖这个仓库吧,引进了高科技,指纹识别!你得给小刘和赵大爷录个信息啊。

小刘的指纹能刷开仓库门,以便进出搬卸货物。

赵大爷指纹能刷开大门和拦车杆让送货拉货的车进来,不能给小刘这个权限,是因为怕小刘自己开了仓库门,拉上货物,开了大门,把货偷跑了。

当然赵大爷也打不开仓库的门。

而你的指纹能全干!

这个小例子介绍了为啥要单独创建账号和什么是权限。

9.5MySQL权限系统介绍

权限是对特定对象执行特定操作的权力,它与特定用户相关。
想想你的门房赵大爷。

9.5.1最少权限原则

一个用户(或者进程)应该拥有能够执行分配给他的任务的最低级别的权限。
再想想搬运工小刘。

9.5.2创建用户:GRANT命令

grant 和 revoke 命令分别用来授予和取消 MySQL用户的权限。
这里呢,说一下这一节,这一节内容挺多的,足足一页多的书上内容,不要烦躁好好的看,这个很重要的!在你看书的时候,我讲讲其他的非知识点,开心一下。

grant 授予、准许 的意思,读快了就是“干它!”,开玩笑的,读 [grɑ:nt] 。

revoke 废除、撤销、取消 的意思,读 [rɪˈvəʊk]] 。

方括号里的是音标,我百度翻译来的。

为啥此处单独标了他俩的读音?

因为这俩单词我在以前开发中没接触过,在MySQL中,第一次,哎呀呀脸红的不行。

这些命令啦,方法啦,这啦,那啦,反正就是书中出现的关键的英文,你最好都要看到了知道他中文意思,和会读。

因为,怎么说呢,程序员英语发音,都很迷~有的时候聊技术方案,对方说个词,说是能干啥干啥,或者你问他某某怎么弄啊?他就回你一个发音贼迷的单词,你根本听不懂!但是大家一把这个词打出来,都一脸的哦~恍然大悟。

别觉得不可能,你想,你是自学的MySQL,也没人教过你这些单词都咋读,都是凭感觉去蒙着读,而且你还都学会了还贼6,去了大公司当老大,有一天你告诉你的小弟:“大数据分析部的夏禾需要使用数据库,账号密码按照工号初始化,你 干她 一下!”。你的小老弟儿一脸通红的告诉你:老哥你是不是傻B!那读[grɑ:nt]!你心里话说出声的毛病该改改了!

知识点来了!grant命令的常见形式如下:

GRANT privileges [columns]
ON item
TO uesr_name [IDENTIFIED by 'password '] ;

和书上不太一样,因为我偷懒了,这都是我手敲的啊!敲的我手都是血啊!

下面我用我沾满鲜血的双手来给你解释一下:(其实你好好看书的话,这节你都可以跳过的。)

上面形式中,红色的都是可选的,既然是可选就是非必填的,这个你懂,稍后再说。

privileges 特权的意思。话说看到这个绿色有没有让你想起,你某个醉酒的,痛哭流涕的夜?

这是一个占位符,此处应该被替换为一组由逗号分隔开的权限,如:select,insert,update,delete,index,alter,create,drop;这个下一节会详细说的。

item 占位符是新权限所应用于的数据库或表。

注意:书中说可以将项目指定为 *.*,而将权限赋予所有数据库,叫做全局权限!

这个 *.* 是 “星号 点 星号”,不是给你特意标出点来!我就敲错了!

更常见的是以 dbname.* 的形式指定数据库中所有的表。

以 dbname.tablename 的形式指定单个表。

[columns] 是可选的,可以用它对每一个列指定权限。

可以看出,可以用的权限包含了:数据库,表,列。

uesr_name 是用户登录MySQL的用户名,它还可以包含一个主机名,用来区分用户。(先忽略create user 这块。)

CREATE USER 'username'@'host' IDENTIFIED BY 'password';host:指定该用户在哪个主机上可以登陆,如果是本地用户可用localhost,如果想让该用户可以从任意远程主机登陆,可以使用通配符 %

CREATE USER 'dog'@'localhost' IDENTIFIED BY '123456';CREATE USER 'pig'@'192.168.1.101_' IDENDIFIED BY '123456';CREATE USER 'pig'@'%' IDENTIFIED BY '123456';CREATE USER 'pig'@'%' IDENTIFIED BY '';CREATE USER 'pig'@'%';这些例子中,都包含了带有主机名的用户名。

[IDENTIFIED by 'password '] 是可选的,但是呢,我推荐密码是要求必须的,出于安全考虑。

这一节其他的部分,我就不说了,自己看吧。我是搞懂了,我还分别查看了mysql.host,mysql.db.mysql.user等等,这里靠你了。

最后,献上一个中文的授权格式:grant 权限 on 数据库 .* to 用户名@登录主机 identified by “密码”;

小思考:用你理解的语言,复述一遍授权格式。

9.6创建一个WEB用户

是不是好奇953,954和955哪去了?我没写,主要内容都是陈述,操作的,我就没有写。我可以不写,因我学会了,你不能不敲不看啊,也是好好好看书学习的。

9.6内容开始。

这一节到了真正开始要敲命令的时候了,而我呢,为了学习,为了体验错误,我把之前按照书中授予的权限全部删除了重新做人啦~

有个小注意,我输入的命令是第二段的命令,就是特权挺多的那个。

grant select,insert,update,delete,index,alter,create,dropon books.*to bookorama identified by 'bookorama123';如果你没有敲错的话,你会看见 Query OK, 0 rows affected (0.00 sec) 这句话的。

而此时,数据库mysql.db 和mysql.user 中都会有 bookorama这个User了。

如果出现错误呢,就看看错误在哪一行,看看是不是哪个单词敲错了,或者没加分号?

大部分错误都是单词敲错了,因为我经常犯这个毛病。实在不行的话,把我这段复制进命令行回车。

然后请输入 quit;(这个是不是很眼熟?)退出登录状态。

然后以bookorama 的身份登录MySQL。密码是 'bookorama123';

如果一切顺利的话,你就以新身份(门房赵大爷?)登录数据库了~

9.7使用正确的数据库

我承认我从来没看过附录A,咋地吧。所以我没有写附录A的有关笔记,而且短时间也不打算写...

到这一节的时候,检验你看书仔细不仔细的时候到了,其实在9.6的时候你在 on books.* 的时候可能就遇到问题。

你没建立名为 books的数据库,而这一块在哪写了呢?在9.3节创建数据库和用户中有一句“我们要创建一个名为books的数据库 ”。

如果你没建立,那么开动你的小脑瓜,怎么才能建立呢?

好,到这里已经是完成全部准备工作了,现在说使用数据库的事。

use dbname;没了,就这一句,书里还有一种方法,在登录的时候就指定要使用的数据库,你也可以试一下。

注意:在登录时就指定数据库,不能省略 hostname。我试了一下会报错的。

成功了的话,会显示 Database changed 提示的。

而此时你输入如下命令。会显示你已有的数据库列表。databases 要加S!!!!

show databases;+--------------------+| Database |+--------------------+| books |+--------------------+

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月份写完笔记。。。)

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

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数据库的架构。

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

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

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

关键词:创建,数据

74
73
25
news

版权所有© 亿企邦 1997-2025 保留一切法律许可权利。

为了最佳展示效果,本站不支持IE9及以下版本的浏览器,建议您使用谷歌Chrome浏览器。 点击下载Chrome浏览器
关闭