码迷,mamicode.com
首页 > 数据库 > 详细

PHP关系型数据库介绍

时间:2015-11-24 06:30:03      阅读:287      评论:0      收藏:0      [点我收藏+]

标签:php关系型数据库

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;


数据操作: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关系型数据库

原文地址:http://ginvip.blog.51cto.com/8092345/1716116

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!