您的位置:首页 > 编程语言 > PHP开发

PHP关系型数据库介绍

2015-11-23 20:55 477 查看
PHP关系型数据库介绍

Mysql数据库:永久性保存数据的仓库

PHP的变量,在php的执行周期,临时性保存变量的概念!
Mysql数据是关系型数据库:何谓关系型,利用关系,去描述实体信息,与实体之间的关系的数据库架构就是关系型数据!

所谓关系:指的就是二维表



行:记录,一行就是一条记录
列:字段,一列就是一个字段

sql:一门语言,结构化查询语言,操作关系型数据的语言
nosql:not only sql,非关系型数据库。典型的是key/value型,键值对型

操作mysql的基本流程:
什么是数据库系统:mysql就是数据库系统!数据库系统最基本应该由:数据库(数据主体部分)+数据库管理系统(操作数据的工具)

DBS (database system) = DB(database) + DBMS(database management system)




mysql的操作,是基于C/S!

SQL:大体分成典型:DML(数据管理语句,数据操作),DDL(数据定义语句,数据结构的控制语句,表操作和库操作)

库操作,DDL (Data Definition Language 数据定义语言)

创建:create (几乎所有的结构都是用该语法完成)
create database 库名 [库选项]; //库选项只有字符集与校对集的概念

如:create database ginvip;

注意:每个库,会对应一个数据目录,存放在当前mysql的总数的数据库目录内

数据库名的问题:

大小写问题,取决于mysql服务器所在的操作系统(建议是,认为它区分大小写)

特殊名称,关键字,特殊字符!默认是不能作为数据库名




但是可以使用反引号将名称包裹起来,告知服务器,此处是一个名字,而不是特殊操作




中文也可以作为标识符(库名),同样也需要反引号!(多字节符,还需要注意字符集的问题)

删除:drop
drop database 数据库名;

修改: alter
alter database 数据库名;

只能修改数据库选项

EX : alter database t_t charset gbk; //修改t_t数据库的编码为gbk;

查询:(看看有哪些库,库的基本结构) show

show databases; //查询当前已经存在的所有数据库

show databases like; //like关键字用于过滤多个数据库

EX: show databases like '%_schema'; // %匹配任意字符的任意次数的组合

show databases like 'x_y'; // _ 匹配符匹配任意字符的一次

注意:如需要匹配,特定的通配符,则需要对通配符转义,使用反斜杠 \ 完成转义




查看某个数据库的定义:

show create database 数据库名;





在create 与 drop时,有两个额外的操作:
create database if not exists 数据库名; //如果不存在则创建

drop database if exists 数据库名; //如果存在则删除

show warnings; //查看警告

表操作:

表操作分为表本身,与表结构的操作!

创建:create table

create table 表名(

字段的定义;

)[表选项];

其中表名,一定先要确定数据库!因此一个典型的表名是由两部分组成:所在库与表名
EX : create table stu (id int,name varchar(255))engine=innodb charset=utf8;

其中字段部分才是最终的数据的载体(与变量的概念是类似的,都是基本保存数据的)!因此,在定义字段时至少要字段名和字段类型!

两种最基本的mysql数据类型(int , varchar) //varchar必须要指定最大长度(单位:字符数)

表选项部分:常用的有字符集(校对集),表引擎。

查看:show
查看所有的表有哪些:show tables; //后面也可以加like关键字:show tables like 'stu';
查看具体的建表语句:show create table 表名;
在mysql的命令行客户端,如果数据过多不容易展示,可以使用\G作为结束符
如:show create table 表名\G //后面无需加分号

查询表结构:desc 表名;

修改:alter

1:修改表选项:alter tabale table_name 新选项;
EX : alter table stu engine=myisam charset=gbk;

2:改表名:rename 原表名 to 新表名;
EX : rename table stu to hero;
注意:表名可以由 库名.表名 组成 (跨库修改表名)

3:修改表结构(字段):
增加字段:

alter table 表名 add column 字段定义 [字段位置];

EX : alter table stu add column age int; //增加一个age字段

alter table stu add column height int after name; //在name的字段后面增加一个height字段

alter table stu add column sn varchar(10) first; //在最前面增加一个sn字段

删除字段:

alter table 表名 drop column 字段名;

EX : alter table stu drop column height; //删除height字段

修改已有字段(修改字段定义)

alter table 表名 modify column 字段名 新的定义;

EX : alter table stu modify column sn int; //将sn字段改为int类型;

字段改名:

alter table 表名 change column 原字段名 新字段名 新字段定义;

注意:不是纯粹的改名,而是需要在修改定义的同时改名

EX : alter table stu change column sn stu_sn varchar(255) after age; //将sn字段名改为stu_sn,并将 stu_sn改为varchar类型,且将stu_sn放在age字段的下面

删除:drop talbe
drop table stu; //删除stu字段

drop table stu if exists;

数据操作:[b]DML(Data Manipulation Language 数据操控语言)[/b]

增加,创建,插入:insert

insert into 表名(字段列表) values(与字段相对的值列表);

EX : insert into stu(id,name) value (1,'ginvip');

insert into stu(id) values (2);

insert into stu(name) values ('-');

insert into stu(name,id) values ('php',4);

上面四条语句都可以执行成功。不一定要一次插入所有字段,也不一定要按照原始字段插入。但是字段与值的数量一定要匹配。

如果所有的值都按照字段的出现顺序插入的话,可以省略列表部分!

注意:数值类型,不需要增加引号,而字符串类型都需要出现在引号内!(数值型也可以出现在引号内)

查询,检索,选择:select

select 字段列表 from 表名 [where 条件表达式];

select * from stu; // * 表示所有字段

select * from stu where 1;

select * from stu where id>3;

关于条件表达式,默认是没有,表示永远为真

删除:delete

delete from 表名 [where 条件表达式];
delete from stu;

delete from stu where 1;

delete from stu where id>3;

注意:删除是不可逆的操作。要避免没有条件的删除

修改,更新:update

update from 表名 set 字段=新值,字段n=新值n where 条件;

update from stu set name='PHP' where id=4; //将字段id为4的name字段更新为'PHP';

字符集:

描述可见到的图形,在存储和传输时所使用的编码称之为字符集

指的是:图形与编码之间的对应关系!

数据的存储编码:
数据最终要映射(保存)到字段的层面上,因此决定数据的编码,也是最终由字段来决定!

确定数据的存储编码是由以下的方案完成的:

1:先看字段的编码,如果存在则确定完毕
2:如果字段没有设置编码,查看表的编码,如果有,则确定数据编码
3:如果表没有设置编码,查看库的编码,如果有,则确定数据编码
4:如果库也没有设置编码,则由服务器程序确定(mysql文件夹内的my.ini配置文件)。如图:




客户端操作,查询的编码:
在客户端与服务器端交互时,存在两个重要的编码:

1:客户端发送数据的编码

2:客户端接收到服务器数据编码

可以通过 show variables like 'character_set_%'; 展示 character_set 开头变量,其中就有上面的两个值
在命令行客户端下:只能是GBK编码!
使用 set 变量名 = 变量值的形式更改变量值:

set character_set_client = gbk;

set character_set_results = gbk;

set names gbk , 就是一个快捷操作,将上面两个配置同时更改成目标编码。
set names gbk/utf8 取决于客户端所能接受的编码!



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: