PHP-mysql数据库简介
数据:data,凡是能携带信息的媒介都是数据
硬盘数据:保存在磁盘中,以二进制形式保存
内存数据:运行在内存中
数据库:Database,高效存储和处理数据的媒介(凡是存放数据的地
数据库词汇 数据:data,凡是能携带信息的媒介都是数据 硬盘数据:保存在磁盘中,以二进制形式保存 内存数据:运行在内存中 数据库:Database,高效存储和处理数据的媒介(凡是存放数据的地方都可以称之为数据库),数据库分为两大阵营:关系型数据库,非关系型数据库。 数据库系统:Database System = DBMS +DB,DBMS(Database Management System)管理数据库 DBA:Database Administrator,DBA待遇非常好。 关系型数据库SQL 定义:建立在关系模型上的数据库。 关系模型:通过各种关系来体现数据与数据之间的联系的模型。 关系型数据库:大型(ORACLE,DB2),中型(mysql,SqlServer),小型(access) mysql:最高并发量千万级,免费 ORACLE:收费 通俗:关系型数据库就是一张二维表(具有行和列,还有表头),用来管理表内的数据关系和表与表之间的关系。 设计一个简单的教学系统 实体:entity,自然界中所看到的实物的一种分类。 实体:学生,老师,教室 学生表 体现表内数据与数据之间的关系 关系型数据库特点:如果某个数据不完整,那么数据库在磁盘空间上一样的需要分配空间来保存该数据。关系型数据库比较占磁盘空间。 班级表 学生与班级有关系 通过在学生表增加一个字段保存对应的班级名称,从而实现了学生表与班级表的关联 以上体现的就是实体与实体之间的联系 非关系型数据库 定义:所有不是关系型数据库的数据库都是非关系型数据库 NOSQL:Not Only SQL。 非关系型数据库保存数据的方式:键值对 特点: 1.运行在内存 2.使用键值对来保存和表示数据 3.运行之后,会进行数据同步(将内存的数据写入到磁盘) 关系型数据库和非关系型数据对比 1.保存数据的介质不同(关系型在磁盘,非关系型在内存) 2.非关系型数据库效率比关系型数据库高得多 3.关系型数据库比非关系型数据库安全 SQL 是一种关系型数据库操作语言,也是一种编程语言 SQL:Structured Query Language,结构化查询语言。 SQL包含三个部分: DDL:Data Definition Language,数据定义语言,库和表的维护create,drop,alter DML:Data manipulation Language,数据操作语言(DQL:Data Query Language),数据的查询,select DCL:Data Control Language,数据控制语言,用于数据库的权限管理,grant,revoke SQL的基本操作 CRUD:create(创建:增),read/retrieve(读取:查),update(更新:改),delete(删除:删) 软件结构 mysql是一种c/s软件结构。在运行之前,必须保证服务端和客户端同时运行才能正常工作。 工作流程 1.客户端发送连接请求,建立连接:mysql –h –P –u –p a)h:host,ip地址或者域名PHP数据库,默认可以没有代表localhost b)P:大写,端口默认为3306 c)u:username,用户名 d)p:password,用户密码 登录成功 2.准备SQL语句:逐行执行,以分号为结束符 3.发送SQL语句:发送给服务器 4.服务器接收SQL并执行 5.服务器发送执行结果给客户端 6.客户端解析结果 电脑反应太快,看到的结果是以上四个步骤感觉就是一步到位 7.关闭连接 a)exit b)quit c)\q mysql客户端操作服务端原理 所有的处理操作都是在服务端,客户端只是负责发送SQL语句和接收执行结果,并解析。 管理服务端 windows下有三种方式进行服务端管理 1.windows服务管理 2.通过服务命令在dos(CMD)下管理 net:管理服务 net start|stop 服务名 3.直接通过mysqld.exe启动 mysqld的执行必须要指定配置文件才能启动成功 mysqld.exe –defaults-file=d:/server/mysql/my.ini 服务端内部结构 服务器是由数据库系统在帮助运行。 在服务器端,有四个对象,分别是:数据库管理系统->数据库->数据表->数据字段->管理数据 数据库基本操作 数据库基本操作包含三个部分:库操作,表操作(字段操作),数据操作 库操作 SQL语句是以行为执行单位,每行结束都应该有结束符号分号(有特例:建议每行语句都有分号) 新增数据库:create database 数据库名字 [库选项]; 库选项: 字符集设置(charset):表示以后在当前数据库存储的数据,默认采用utf-8的字符集存储 校对集设置(collate):如何比较大小 执行以上语句,数据库管理系统做了哪些事情? 1.创建了一个叫做mydatabase的数据库(默认使用utf8来存储数据) 2.会在磁盘里开辟一块空间来存储数据(对应外部体现就是创建一个文件夹,文件夹的名字叫做mydatabase) 文件夹的路径可以通过my.ini查看 新建的数据库 3.库选项在数据库文件夹下有一个对应的文件db.opt 数据库命名规范 1.使用字母,下划线和数字构成 2.不能是关键字,如果是关键字,需要使用反引号将名字包裹 a)反引号:esc下面的波浪线按键对应的英文状态下的输出 错误 正确 3.可以使用中文作为数据库名字,但是也需要使用反引号(强烈建议:不用使用中文) 查看数据库: 查看数据库基本信息:show databases;||模糊查询:show databases like ‘pattern’ 查看所有 模糊匹配:%匹配任何内容,_表示匹配一个字符 下划线使用 查看数据库创建语句:show create database 数据库名字 修改数据库:数据库名称不可修改,只能修改数据库的库选项 语法:alter database 数据库名字 [库选项] 删除数据库:drop Database 数据库名字; 表操作 表不能脱离字段存在,字段也不能脱离表,所谓的表操作就是表和字段同时操作。 新增表:create table 表名(字段1 字段类型,字段2 字段类型)[表选项] 1.字段必须要有字段类型:字段 字段类型 2.字段与字段之间使用逗号分隔 3.最后一个字段不需要使用逗号 表选项 字符集:当前表的数据采用什么字符集保存,字符集以表的字符集为标准 存储引擎:当前表的数据采用什么样的存储引擎来存储 存储引擎:不同存储和处理数据的方式 创建数据库出现问题 注意:数据表必须存储在数据库的内部。 两种方式解决以上问题 1.显示指定数据库:在创建表名的时候使用:库.表名 2.隐式的指定数据:事先进入到某个数据库的环境:use 数据库名字 创建表语句执行之后的结果:在对应的数据库文件夹下创建两个对应的数据表的结构文件 该结构与选定的存储引擎有关系 存储引擎:InnoDB和Myisam InnoDB:只会创建一个表结构文件,其他的索引和数据存放在ibdata1文件中 Myisam:会创建三个文件,一个是结构文件,一个是数据文件,一个是索引文件 查看表: 1.查看表基本信息:show tables || show tables like ‘pattern’; 2.查看表的创建语句:show create table表名; 3.查看表结构:desc|describe 表名/show columns from 表名 修改表 可以修改表的名字,表的字段的增删改查,字段的属性的修改,字段的位置的修改 语法:alter table 表名 [add/modify/drop] [column] 字段名字 [字段类型] [字段位置] 增加字段 alter table 表名 add column 字段名字 字段类型 [位置] 字段默认在表最后增加 位置:first表示在最前面,after表示在某个字段之后(默认其实是after在最后一个字段之后) 修改字段 修改字段位置,修改字段的类型,修改字段的名字 修改字段类型+字段位置 修改字段名字 alter table 表名 change 旧字段 新字段 字段类型 字段位置 注意:不管是修改字段的哪部分都应该跟上字段类型。 删除字段 alter table 表名 drop 字段名字 语法:rename table 旧表名 to 新表名 删除表:drop table 表名 删除表还会对表文件进行删除 注意: 1.创建过程中会不知道当前表名是否存在:if not exists表示只有表名不存在的时候才去创建,否则放弃执行; 2.删除表的过程中,不知道表是否已经存在:if exists 3.数据库和数据表都不能随意的删除,删除具有不可逆性。如果确定要删除数据库或者数据表,那么必须要事先备份。 数据操作 新增数据:insert into 表名 (字段列表) values(值列表) 字段列表可以没有,意味着值列表里的字段数必须与表中的字段数完全一致 插入数据必须注意 1.插入的值类型必须与数据字段定义的数据类型一致,除了整型可以不加引号之外,其他的都要加上引号 2.整型也可以加上引号 在严格模式下,只能将数值字符串转化成数值 在严格模式下,自增不能使用空字符串来代替 3.允许一次性插入多条记录,在values字段后面使用逗号分隔即可 查看数据:select 字段列表 from 表名 [where 条件] 修改(更新)数据:update 表名 set 字段 = 值 [where条件] 删除数据:delete from 表名 [where条件] 注意:一定要小心删除数据,切记需要使用where条件,在删除之前需要对数据进行备份 行(row)和记录(record):行和记录表示的意思是完全一样的,行是站在表结构的角度上定义,而记录是站在数据的角度上去定义 列(column)和字段(Field):与行和记录的区别是一样的。 (编辑:威海站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |