前言:这个学期学校里在学php。学习了两个多月,php给我的感觉没有c++严谨,很多都是嵌入在html中,它的各种语法没有特别的规范。然后11月份开始学习mysql。也许是老师认为之前开过一门数据库的课,所以没有特别多讲mysql的基础操作。这里主要通过研究《php和Mysql Web开发》(原书第四版)第二篇:使用Mysql,来回顾和精研mysql数据库的基础知识。
进入正题:
(一)设计web数据库
首先要介绍数据库里的一些基本概念,表格,列,行,值,键。这些概念都比较简单,比较要重视的是主键和外键。键,是表中的标志列。一个键可能由几列组成。主关键字(primary key)是表中的一个或多个字段,它的值用于唯一地标识表中的某一条记录。在两个表的关系中,主关键字用来在一个表中引用来自于另一个表中的特定记录。主关键字是一种唯一关键字,表定义的一部分。一个表的主键可以由多个关键字共同组成,并且主关键字的列不能包含空值。主关键字是可选的,并且可在 CREATE TABLE 或 ALTER TABLE 语句中定义。外键,用我的理解来说,就是表A的主键在表B出现,那么这个主键就是表B的外键。
第二介绍关系数据库的基本三种关系类型,一对一,一对多,多对多。(类似UML建模中的多重性)。
第三,分析如何建表。这里要考虑到避免保存冗余数据。如果你把所有的信息都建在一张表上,那么保存冗余的数据库设计将占用额外的空间,并且可能引起数据异常。这里,需要避免3中情况的更新不规则:修改,插入,删除不规则。理解起来很简单: 修改:同一个数据在数据库各个表出现了多次,你改了一个其他的没改就会出现数据不一致。 插入:插入一个数据在表中,其他位置没有插入或信息不一致。 删除:删除了表中某一个位置的信息,但数据库中其他位置没有删除导致信息不一致。
第四,web数据库框架。流程大概是:浏览器到web服务器到PHP引擎到Mysql服务器,返回是从Mysql服务器到php引擎到web服务器到浏览器。
(二)创建web数据库
首先是登录。打开运行输入cmd,进入dos。输入mysql -hlocalhost -uroot -proot.
这里要说的是,要直接在dos下输入mysql需要改环境变量。把mysql.exe的位置添加到环境变量中才行。
本人使用的是phpstudy集成环境,你也可以直接在phpstudy里登录。选择mysql命令行。输入密码root即可。(WAMP密码是123)
然后是用户权限的设置。这里要遵循 “ 最少权限原则"。一个用户(或一个进程)应该拥有能够执行分配给他的任务的最低级别的权限。
权限的四个级别:全局,数据库,表,列。
创建用户:GRANT命令
形式:GRANT privileges [columns]
ON item
TO user_name [IDENTIFIED BY 'password']
[REQUIRE ssl_options]
[WITH [GRANT OPTION | limit_options] ]
例子:
mysql> grant all
-> on *
-> to fred identified by "mnb123"
-> with grant option;
以上代码授予用户名为fred,密码为mnb123的用户使用所有数据库的所有权限,并允许他向其他人授予这些权限。
需要注意的是一定要先进入数据库中才可以操作。
用户的权限除了基本的增删查改,还有INDEX(创建拖动特定表),ALTER(改变现存表的结构),create,drop.
与GRANT相反的操作是 REVOKE.具体格式和操作与GRANT相同,不重复介绍。
接下来是创建数据库表。
这里用书上的例子:
需要理解的一些关键字:
NOT NULL表示所有行的此属性必须有一个值。如果没有指定可以为空(NULL)。
AUTO_INCREMENT表示如果改字段设置为空,那么MYSQL将自动产生一个唯一的标识符值。一个表只能有一个这样的值。
PRIMARY_KEY表示主键。
UNSIGNED表示只能是0或者是一个正数。