【永利酒店赌场】PHP之Mysql编程 二(增删改查和基本数据类型)

数据类型的分类
数值型(整型、小数)、字符型、日期型,小数分为定点数和浮点数。
一、整型
永利酒店赌场 1
注:①如果不设置无符号,默认是有符号的,如果设置为无符号的,需要添加unsigned关键字。
②如果插入的数值超过整型的范围,报out of range 异常,并插入临界值。
③如果不设置长度,会有默认长度。
④长度代表显示的最大宽度,如果不够用0在左侧补充,但必须搭配zerofill 使用

tinyint、smallint、mediumint、int/integer、bigint

1 数据类型(列类型)

  • 所谓的数据类型:对数据进行统一的分类,从系统的角度出发是为了能够使用统一的方式进行管理,更好的利用有限的空间。
  • SQL中将数据类型分成了三大类:

永利酒店赌场 2

在数据库里面操作表:

插入临界值:
永利酒店赌场 3

特点:

2 数值类型

  • 数值类型数据:都是数值。
  • 系统将数值型分为整数类型和浮点数类型。

 

①:首先要打开数据库:

操作如下: 

use db_name;

 

默认长度:
永利酒店赌场 4

①都可以设置无符号和有符号,默认有符号,通过unsigned设置无符号

2.1 整数类型

  • 在SQL中因为更多的要考虑如何节省磁盘空间,所以系统将整数类型又细分成了5类:
    • tinyint   迷你整型,使用一个字节存储,表示的状态最多为256种。
    • smallint      小整型,使用2个字节存储,表示的状态最多为65536种。
    • mediumint 中整型,使用3个字节存储。
    • int              标准整型,使用4个字节存储。
    • bigint         大整型,使用8个字节存储。  

 

  • 创建一张整型表

    create table my_int(
    int_1 tinyint,
    int_2 smallint,
    int_3 mediumint,
    int_4 int,
    int_5 bigint
    )charset utf8;

永利酒店赌场 5

  • 插入数据

    — 插入数据
    insert into my_int(int_1,int_2,int_3,int_4,int_5) values(1,2,3,4,5);

永利酒店赌场 6

  • 查看数据

    select * from my_int;

永利酒店赌场 7

 

  • SQL中的数值类型全部都是默认有符号的:分正负。
  • 有的时候,需要使用无符号数据,需要给数据类型限定为int
    unsigned;–无符号

 

  • 给my_int表增加一个无符号类型。

    alter table my_int add int_6 int unsigned;

永利酒店赌场 8

  •  插入无符号数据

    insert into my_int (int_6) values (0);

永利酒店赌场 9

  • 如果插入的是负数

永利酒店赌场 10

 

  • 查看表结构的时候,发现每个字段的数据类型之后都会自带一个括号,里面有指定的数字

永利酒店赌场 11

  • 显示宽度:没有特别的含义,只是默认的告诉用户可以显示的形式而已,实际上用户是可以控制显示宽度,但是这种控制不会改变数据本身的大小。

 

  • 增加一个int_7 int(1) 的字段

    alter table my_int add int_7 int(1) unsigned ;

永利酒店赌场 12

  • 插入数据

永利酒店赌场 13

 

  • 显示宽度的意义:在于当数据不够显示宽度的时候,会自动让数据变成对应的显示宽度,通常需要搭配一个前导0(zerofill:零填充,零填充会导致数值变成无符号)来增加宽度,不改变值大小。

    alter table my_int add int_8 int(2) zerofill;

永利酒店赌场 14

 

  • 零填充+显示宽度的效果

永利酒店赌场 15

 

  • 零填充的意义:保证数据格式。

 

②:其次要写表信息:

操作模版如下:

 

mysql> create  table   tb_name

-> (

-> 列信息

-> )[表选项];

 

 

操作实例如下:

mysql>create table score

     ->(

     ->stu int,

     ->name varchar(20),

     ->ke varchar(10),

     ->fen int

     ->);

记住:

①:内容被圆括号包含,而不是花括号

②:每个内容以逗号,结尾

③:最后的一个元素没有,逗号

    ④:表名不能以数字开头;

 

 

设置无符号类型:
永利酒店赌场 16

②如果超出了范围,会报out or range异常,插入临界值

3 小数类型

  • 小数型:带有小数点或者范围超出整数类型的数值类型。

 

  • SQL中:将小数类型细分为两种:浮点型和定点型。
    • 浮点型:小数点浮动,精度有限,会丢失精度。
    • 定点型:小数点固定,精度固定,不会丢失精度。  

 

修改表名:(数据库名是不能改的)

rename table old_tb_name to new_tb_name;

 

设置0填充,会自动将unsigned添加:
永利酒店赌场 17

③长度可以不指定,默认会有一个长度

3.1 浮点型

  • 浮点型数据会因为超出范围之后,丢失精度(自动四舍五入)。
  • 浮点型:理论上有两种精度。
    • float:单精度,占用4个字节存储数据,精度范围大概在7位左右。
    • double:双精度,占用8个字节存储和数据,精度范围大概在15位左右。  

 

  • 创建浮点数表:浮点的使用方式,直接float表示没有小数部分;float(M,D):M代表总长度,D代表小数部分长度,整数部分长度为M-D。

    — 浮点数表
    create table my_float(

    f1 float,
    f2 float(10,2),--10位在精度范围之外
    f3 float(6,2)--6位在精度范围之内
    

    );

永利酒店赌场 18

  • 插入数据:可以直接小数,也可以科学计数法

永利酒店赌场 19

 

 

0填充的情况:
永利酒店赌场 20

长度代表显示的最大宽度,如果不够则左边用0填充,但需要搭配zerofill,并且默认变为无符号整型

3.2 定点型

  • 定点型:绝对的保证整数部分不会被四舍五入(不会丢失精度),小数部分有可能。

 

查看表:(查看表的个数)

show tables;

 

 

 

二、小数
永利酒店赌场 21
float(M,D) double(M,D)和dec(M,D) decimal(M,D)
注:
①M:范围是整数部分+小数部分
②D:是指小数部分
③如果超出范围,则插入临界值
④M和D均可省略,如果是DEC,则默认值10,D默认是0
⑤float和double,会根据插入的数值的精度来决定精度
⑥定点型的精度较高,如果要求插入数值的精度较高如货币运算等则考虑使用

定点数:decimal

4 时间日期类型

永利酒店赌场 22

 

描述表:(查看表的结构)

 

  desc tb_name;   (desc 表示describe)

示例: desc  newscore; 

 

Dec 的默认值:
永利酒店赌场 23

浮点数:float 4、double 8

5 字符串类型

  • 在SQL中,将字符串类型分成了6类:char,varchar,text,blob,enum和set。

 

  • 定长字符串
    • char:磁盘(二维表)在定义结构的时候,就已经确定了最终数据的存储长度。
    • char(L):L代表length,可以存储的长度,单位为字符。最大长度值可以为255。char(4):在utf8环境下,需要4 *
      3 = 12 个字节。  

 

  • 变长字符串
    • varchar:在分配空间的时候,按照最大的空间分配,但是实际上最终用了多少,是根据具体的数据来确定。
    • varchar(L):L代表length,理论长度是65536个字符,但是会出处1到2个字节来确定存储的实际长度。varchar(10):在utf8环境下,存储10个汉字,需要10 *
      3 + 1 = 31 字节。
    • 注意的是,在实际开发中,如果字符的长度超过255个,我们会使用text或blob来代替varchar。  

 

  • 如何选择定长或变长字符串?
    • 定长的磁盘空间比较浪费,但是效率高;换言之,如果数据基本上确定长度都一样,就使用定长,如身份证号码,电话号码,手机号码等。
    • 变长的磁盘空间比较节省,但是效率低;换言之,如果数据不能确定长度(不同的数据,长度有变化),如姓名,地址等。  

 

  • 文本字符串
    • 如果数据量非常大,通常超过255个字符,就会使用文本字符串。
    • 文本字符串根据存储的格式进行分类:text和blob。
      • text:存储文字。
      • blob:存储二进制数据(通常不用)。    

 

  • 枚举字符串
    • 枚举:enum,实现将所有可能出现的结果都设计好,实际上存储的数据必须是规定好的数据中的一个。
    • 枚举的使用方式:
      • 定义:enum(可能出现的元素列表);
        • 如:enum(‘男’,’女’,’不男不女’,’妖’)。
      • 使用:存储数据,只能存储上面定义好的数据。          

 

  • 集合字符串
    • 集合和枚举很类似:实际存储的是数值,而不是字符串。
    • 集合的使用元素:
      • 使用:set(元素列表);
      • 使用:可以使用元素列表中的元素(多个),使用逗号分隔。      

 

 

默认长度和精度:
永利酒店赌场 24
三、字符型
短的文本:
char(M)、varchar(M)
Binary和varbinary 用于保存较短的文本
Enum用于保存枚举类型
Set用于保存集合
长文本:
text blob(较大的二进制)

特点:

6 MySQL记录长度

  • MySQL中规定:任何一条记录最长不能超过65535个字节。(varchar永远达不到理论值)

 

删除表:

drop table tb_name;

 

char和varchar的区别:
永利酒店赌场 25
永利酒店赌场 26
永利酒店赌场 27

①M代表整数部位+小数部位的个数,D代表小数部位

7 列属性

  • 列属性:真正约束字段的是数据类型,但是数据类型的约束很单一。需要有一些额外的约束,来保证数据的合法性。

 

  • 列属性有很多:null/not null;default;primary key;unique
    key,auto_increment,comment等

 

退出:

c

用法:清空当前陈述,发现自己打错了的时候用。

 

 

四、日期类型
永利酒店赌场 28
注:
①date只保存日期、time只保存时间、year值保存年
②datetime 保存日期+时间,timestamp保存日期+时间
永利酒店赌场 29
永利酒店赌场 30

②如果超出范围,则报out or range异常,并且插入临界值

7.1 空属性

  • 两个值:null(默认的)和not null(不为空)

 

  • 数据库基本上字段默认为null,但是在实际开发的时候,尽可能的要保证所有的数据不应该为null,因为①空数据没有意义,②空数据没有办法参与运算。

 

数据库的增删改查:

③M和D都可以省略,但对于定点数,M默认为10,D默认为0

7.2 描述属性

  • 列描述:comment,描述:没有实际含义,是专门用来描述字段的,会根据表创建语句保存。

 

增:

增以行为单位,可以增加某一列的信息,也可以增加一整行的信息。

模板:

insert into tb_name

(表头1,表头2,表头3,表头4,表头5)  —-如果此处什么都不写,表示每个变量都要给值!!

values

(内容1,内容2,内容3,内容4,内容5);

 

例如:

insert  into massage

(id,name,title,content,date)

values

(1,’余亮’,’第二天学mysql’,’我一定要挺过来’,’2015/8/16′);

 

④如果精度要求较高,则优先考虑使用定点数

7.3 默认值

  • 默认值:
    某一种数据会经常性的出现某个具体的值,可以在一开始就指定好,在需要真实数据的时候,用户可以选择性的使用默认值。
  • 用法:default 默认值;

 

插入列:

alter table tb_name add 列名 varchar(10);

 

char、varchar、binary、varbinary、enum、set、text、blob

小技巧:

可以一次增加多行;

 

char:固定长度的字符,写法为char,最大长度不能超过M,其中M可以省略,默认为1

查:

select * from tb_name where 表达式;

可以加条件查看表;查看部分列部分行

注: name,content表示查看的列,

     id>2表示查看的行;

 

varchar:可变长度的字符,写法为varchar,最大长度不能超过M,其中M不可以省略

改:

模版:

update tb_name

set

表头=值,  (要改的行的 内容)

表头=值 (要改的行的 内容)

where

表达式; (通过原值定位行)

 

示例:

update massage

set

id=2,

content=’今天没迟到’

where

id=1;

 

 

注意:

where 前面的值后没有,逗号。

 

year年

删:

delete from massage where 表头=’内容’;

delete from massage where content=’今天没迟到’;

 

 

 

date日期

列的默认值:

设置格式:

not null default 值;

示例:

在插入一个列的时候,可以声明猎德默认值:

如:

 alter table feature add homenum tinyint unsigned not null default 0;

解释图中圈红地方的意思:

Null:

下面的YES表示该列的值可以为NULL,表示未设默认值

下面的NO表示该列的值不可以为NULL,表示已设默认值

Default:

下面的NULL表示默认值为NULL,表示未设默认值。

如果下面的值为非NULL,则表示已设置默认值。

 

 

 

time时间

详解列类型:

引子:建表就是声明列的过程,声明列直接影响数据库占用硬盘的大小,所以列类型很重要。

 

datetime 日期+时间 8

①:数值型:

timestamp 日期+时间 4
比较容易受时区、语法模式、版本的影响,更能反映当前时区的真实时间

1:整型:

 分五类 :

  tinyint      

  smallint

  mediumint

  int

  highint

 

 

以数学的角度讨论以上五种整型;

1.占据空间

2.存储范围

整型默认为有符号位

 

 

 

关注公众号:Java后端生活,干货文章第一时间送达!

整型列的可选属性:

1.tinyint(M) 

  M代表宽度,只有在zerofill下才有意义;

2.unsigned

 作用:声明整型为无符号位,影响存储范围。

 用法:放在int 关键字后面;

 示例:int unsigned;

3.zerofill

 零填充(如果某列为zerofill,默认就是无符号);

 

永利酒店赌场 31

2.1浮点型/小数型:

定义格式:

float(M,D),

double(M,D)

M:精度(总位数,不含小数点)

D:标度(小数位数)

float (4,2)的范围是 -99.99~+99.99

提示:float double对小数部分非常不准确,所以记账不能用浮点数;

 

2.2定点数:

decimal(M,D)

或者numbric也是一样的。

它是以字符串的形式存放,很精确;

记账一般使用decimal;

关于定点数和浮点数的区别,下面的两个链接继续说明:

http://m.blog.csdn.net/blog/moqiang02/40616467#

3:字符型

 

 分三种:

 char(M)  

定长字符串,M代表宽度,即可容纳的字符数,始终占M个字符

细节:   

    当实际存的字符串N<M,那么尾部则以空格填充

    当取出该字符串时,将空格去掉。

 

弊端:1.当存放的数据尾部有空格时会被去掉

      2.容易造成浪费;

好处:1,存放的字符没有限制。

      2.利用率可能是100%

      3.速度快。

 Varchar(M) 

 变长字符串,M代表宽度,即可容纳的字符数,设N<M,宽度为N,占N个字符;

细节:

   存放的是数据加长度,即i个字符+(1~2个字节);

   这里的字节是指字符的个数;

utf-8:  一个字符占1个字节。 一个汉字占3个字节。

 0<M<65535 , 在utf-8中 大约能存22000个左右汉字;

 

缺点:存放的字符只能是22000左右。

      占用率小宇100%。

      速度慢。

 

区别总结:

1.存储的数据大小有区别

2.空间利用率有区别

3.对空格的处理有区别

char与varchar的选择:

1.空间利用效率,四字成语表,char(4),

               个人简介,微博140字,varchar(140).

 

2速度

 用户: 用char(浪费不了多少空间)

 test:

文本串:

 特点:可以存放较大的内容,但是速度稍慢;

备注:不能给test类型的变量加上默认值

提示:内容不大时用char , varchar

 

 

4:日期型:

year:

表示年份

一个字节,表示1901~2155;.

如果输入两位,“00~69”表示2000~2069

              “70~99”表示1970~1999

date:

表示日期

典型格式:

1992-08-01

日期类型:‘10000-1-1 到 9999-12-31’

time:

表示时间:

hh:mm:ss

1.表示时间 

2.表示时间间隔

 范围: ‘-838’59’’59’’’~838’59’’59’’’’

datetime:

表示日期和时间:

典型格式:

‘1984-03-21 11:35:33’

 

总结:

在实际php开发中,可以用时间戳表示,意思是从1970-01-01 00:00:00到当前的秒数;

函数是 time()

将时间戳转化为日期

date(‘Y-m-d’,time());

 

5.enum

enum是个类型

 

典型格式:

 

sex enum{‘男’,‘女’};

 

缺点:不是元信息,里面有内在关联:enum的值可以新建一个表,不符合关系型数据库的设计理念。

**************************以上为第二天内容***********************************

网站地图xml地图