PHP笔记之MySQL(2)

目录

字段类型(字符、时间类型)

字符类型

时间类型

表定义语句

创建表

基本语法形式:

字段设定形式:

索引

外键索引:  

约束

表选项列表

修改表

删除表

其他表的相关语句:

视图(view)定义语句

什么叫视图?

视图的创建语法:

使用视图:

删除视图:


字段类型(字符、时间类型)

字符类型

mysql中的字符串,应该使用“单引号”引起来。

主要有:

varchar类型:

        (可)变长字符串,使用时我们必须设定其长度,最大长度“理论值”65535个,实际其实最大只能是65533个,但考虑到存储的字符编码不同,也会有进一步减少,比如,

            如果存储中文gbk,则最多是65533/2个;

            如果存储中文utf8,则最多是65533/3个;

            此类型的实际长度是存储内容决定,而设定值只是表示最多可存储的字符个数。

            注意:这里的存储限制,其实都来源于一个表格的“一行”的数据存储最大容量限制:65535。

char类型:

      定长字符串;使用时通常需要设定其长度,如果不设定,默认是1.最大理论长度是255个。

      定长字符串适用于存储的数据都是可预见的明确的固定长度的字符,比如手机号,中国邮政编码

      实际存储的时候,如果少于设定长度,也能存,但都会补空格填满。

                                                 

enum类型:

        单选项字符串数据类型。它非常适合于存储表单界面中的“单选项值”;

        它设定的时候,是需要给定“固定的几个选项”,然后存储的时候,就只存储其中一个值;

        形式如下:

              enum(“选项1”, “选项2”,  “选项3”,  ..... );

       实际内部:

              这些字符串选项值对应的是如下数字值:1, 2, 3,  4,  5,  .....最多65535个选项;

       写入数据形式:

             可以用该选项字符串本身,也可以用对应的数字:

set类型:

       多选项字符串数据类型。它非常适合于存储表单界面中的“多选项值”;

      它设定的时候,也需要给定“固定的几个选项”,然后存储的时候,就可以存储其中若干个值;

      形式如下:

            set(“选项1”, “选项2”,  “选项3”,  ..... );

     实际内部:

            这些字符串选项值对应的是如下数字值:1, 2, 4,  8,  16,  .....最多64个选项;

     写入数据形式:

            可以用该选项字符串并用逗号分开本身,也可以用对应的数字的和:

                                                    

                                 

                                 

解释如下:

                        

text类型:

       它称为“长文本”字符类型。通常,其中存储的数据不占据表格中的数据容量限制。其本身最长可存储65535个字符。

       其他同类字符类型:smalltext,tinytext,  longtext。

其他(了解):

     binary类型: 定长二进制字符串类型,里面存储的是二进制值;

     varbinary类型: 变长二进制字符串类型,里面存储的是二进制值;

     blob类型: 二进制数据类型,存的仍然是二进制值,但其适用于存储“图片”,“其他文件”等,但极少用!

时间类型

datetime类型:时间日期类型

date类型:日期类型

time类型:时间类型

year类型:年份类型

timestamp: 时间戳类型:就是指一个时间的“数据值”——本质其实一个数字,类似js中的GetTime(),或php中是Time(),他们都得到的是一个“整数数字”。它的一个重要作用是:他会自动获得时间戳的数据值——相当于“now()”。

      在应用中,时间日期类型,在我们自己给定的数据情形下,需要使用“单引号”引起来,跟字符串一样!

                                            

查询出结果为:

                          

表定义语句

创建表

基本语法形式:

create table 【if not exists】 表名 (字段列表 【,索引或约束列表】) 【表选项列表】;

或这样来表达:

create table 【if not exists】 表名 (字段1, 字段2, ....  【,索引1, 索引2, ....,约束1,约束2,....  】) 【表选项1,  表选项2,.... 】

字段设定形式:

字段名   类型   【字段属性1  字段属性2  .....】

说明:

        1,字段名可以自己取;

        2,类型就是前面所学的数据类型:int,  tinyint,  float,  double,  char(6),  varchar(25),  text,  datetime。。。。

        3,字段属性可以有多个(根据具体的需要),相互之间直接空格隔开;主要如下几个:

                  auto_increment:只用于整数类型,让该字段的值自动获得一个增长值。通常用于做一个表的第一个字段的设定,并且通常还当做主键(primary key);

                primary  key: 用于设定该字段为主键,此时该字段的值就可以“唯一确定”一行数据;

                unique  key:  设定该字段是“唯一的”,也就是不重复的。

                not  null:用于设定该字段不能为空(null),如果没有设定,则默认是可为空的。

                default  XX值: 用于谁定该字段的默认值,此时如果insert没有给值的时候就使用该默认值

                comment  ‘字段说明文字’:

 

                                   

                                

                            

课堂课间练习:

创建一个表,能够使用多种数据类型,和多个字段属性:

         类型包括:int, tinyint,  float, decimal,  varchar,  char,  datetime,  

         属性包括:auto_increment,  primary key,  unique  key,  not  null,  default 默认值,  comment

索引

什么是索引?

        索引是系统内部自动维护的隐藏的“数据表”,它的作用是,可以极大地加快数据的查找速度!

        这个隐藏的数据表,其中的数据是自动排好序的,其查找速度就是建立在这个基础上。

                                               

通常,所谓建立索引,其实是指定一个表的某个或某些字段作为“索引数据字段”就可以了,形式为:

           索引类型(要建立索引的字段名)

索引类型有如下几个:

普通索引:  形式: key(字段名)

                    含义: 就是一个索引而已,没有其他作用,只能加快查找速度;

唯一索引:  形式: unique  key(字段名)

                    含义: 是一个索引,而且还可以设定其字段的值不能重复(唯一性);

主键索引: 形式: primary  key (字段名)

                   含义: 是一个索引,而且,还具有区分该表中的任何一行数据的作用(其实也是唯一性)

                                  它其实比唯一性索引多一点功能:唯一性可以为空null,而主键不能为空;

全文索引:  形式: fulltext (字段名)。

外键索引:  形式: foreign  key (字段名) references  其他表(对应其他表中的字段名);

演示索引创建语法:

                                  

此时,该表中如果以id,user_name,或email做条件进行查找,就会“很快”,而以age做条件就会“很慢”。

外键索引:  

        形式: foreign  key (字段名) references  其他表(对应其他表中的字段名);

什么叫外键?

        外键,就是指,设定的某个表(tab1)某个字段(f1),它的数据的值,必须是在另一个表(tab2)中的某个字段(f2)中存在!

                

示例:

                                       

此时,插入xuesheng表中的数据时,banji_id字段的值,就不可以随便插入了,而是必须是banji表中的id字段所已经有的数据值,才可以插入。

约束

什么叫做约束?

        约束,就是要求数据需要满足什么条件的一种“规定”。

主要有如下几种约束:

       主键约束:形式: primary key ( 字段名);

                         含义(作用):使该设定字段的值可以用于“唯一确定一行数据”,其实就是“主键”的意思。

       唯一约束:形式: unique   key ( 字段名);

                         含义(作用):使该设定字段的值具有“唯一性”,自然也是可区分的。

       外键约束:形式: foreign key ( 字段名)  references  其他表名(对应其他表中的字段名) ;

                         含义(作用):使该设定字段的值,必须在其谁定的对应表中的对应字段中已经有该值了。

      非空约束: 形式: not  null,其实就是设定一个字段时写的那个“not null”属性。

                         这个约束只能写在字段属性上;

        默认约束: 形式: default  XX值;其实就是设定一个字段时写的那个“default  默认值”属性

                        这个约束只能写在字段属性上;

        检查约束: 形式: check(某种判断语句),比如:

                            

其实,主键约束,唯一约束,外键约束,只是“同一件事情的2个不同角度的说法”,他们同时也称为“主键索引”,“唯一索引”,“外键索引”。

表选项列表

表选项就是,创建一个表的时候,对该表的整体设定,主要有如下几个:

charset = 要使用的字符编码,

engine = 要使用的存储引擎(也叫表类型),

auto_increment = 设定当前表的自增长字段的初始值,默认是1

comment = ‘该表的一些说明文字’

说明:

         1,设定的字符编码是为了跟数据库设定的不一样。如果一样,就不需要设定了:因为其会自动使用数据库级别的设定;

         2,engine(存储引擎)在代码层面,就是一个名词:InnoDB, MyIsam, BDB, archive, Memory。默认是InnoDB。

什么叫做存储引擎?

        存储引擎是将数据存储到硬盘的“机制”。其实,也就几种机制(如上名字所述);

        不同的存储引擎,其实主要是从2个大的层面来设计存储机制:

              1,尽可能快的速度;

              2,尽可能多的功能;

      选择不同的存储引擎,就是上述性能和功能的“权衡”。

大体如下:

                            

演示:

                                         

修改表

几点说明:

1,修改表,是指修改表的结构——正如创建表也是设定表的结构。

2,创建表能做的事,修改表几乎都能做——但很不推荐去修改表,而是应该在创建表的时候就基本确定表的结构。

3,大体来说,有:

              3.1可以对字段进行:添加,删除,修改;

              3.2可以对索引进行:添加,删除

4,表的选项,通常“都是修改”,即使不写任何表选项,他们都有其默认值。

常见几个:

  1. 添加字段:alter  table 表名 add  [column] 新字段名 字段类型  [字段属性列表]
  2. 修改字段(并可改名):alter  table 表名 change [column] 旧字段名 新字段名 新字段类型 [新字段属性列表]
  3. 删除字段:alter  table  表名 drop  [column] 字段名;
  4. 添加普通索引:alter  table 表名 add  key  [索引名]  (字段名1[,字段名2,...]);
  5. 添加唯一索引(约束):alter table 表名 add unique key (字段名1[,字段名2,...]);
  6. 添加主键索引(约束):alter table 表名 add primary key (字段名1[,字段名2,...]);
  7. 修改表名:alter  table  旧表名   rename  [to] 新表名;

          

删除表

drop  table  【if  exists】 表名;

其他表的相关语句:

显示当前数据库中的所有表: show tables;

显示某表的结构: desc 表名; 或:describe 表名;

显示某表的创建语句:show create table 表名;

重命名表:rename table 旧表名 to 新表名;

从已有表复制表结构:create table [if not exists] 新表名 like 原表名;

演示复制表结构:

 

视图(view)定义语句

什么叫视图?

类比:什么叫做函数?

         就是一段代码,我把它“封装”起来,并给一个名字,以后,要使用(执行)该段代码,就方便了:用该函数名就可以了。

视图:

        就是一个select语句(通常比较复杂),我们给其一个名字(视图名),以后,要使用(执行)该select语句,就方便了:用该视图名就可以了。

视图的创建语法:

语法形式:

create  view  视图名 【(字段名1,字段名2,字段名3,....)】   as   select语句;

举例:

create  view  v1  as

select  id,  f1,  name,  age,  email,  p_id,  f3  from  表1  where id > 7 and  id < 100  or  f1 < 1000  and  age > 10

    

使用视图:

基本上,当做一个表用就了!

比如:

   

删除视图:

drop  view  【if  exists】 视图名;

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值