时间:2021-07-01 10:21:17 帮助过:19人阅读
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;
数据操作:DML(Data Manipulation Language 数据操控语言)
增加,创建,插入: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 取决于客户端所能接受的编码!
PHP关系型数据库介绍
标签:php关系型数据库