数据类型和运算符(二)

原创 2015年07月10日 16:32:28

字符串类型

字符串类型用来存储字符串数据,除了字符串数据之外,还可以其它的数据,例如图片和声音的二进制数据

类型有:char varchar binary varbinary blob text enum set

varchar blob text 是变长类型,对于存储需求取决于列值的实际长度,而不是取决于类型的最大可能尺寸

实际的存储需要是字符串的长度L,加上1个字节以记录字符串的长度。

char(M)和varchar(M)类型

char是固定长度的字符串,在定义时候指定了字符串列长。M的范围是0—255

varchar是长度可以改变的字符串,M的范围是0—65535

varchar的最大实际长度由最长的行的大小和使用的字符集确定,而其实际占用的空间为字符串的实际长度加上1

char和varchar的对比

char(4)定义了固定长度为4的列,不管存入的数据长度为多少,所占用的空间为4个字节,varchar(4)所定义的列所占的字节数为实际长度加上1

mysql> create table t1
    -> (
    ->     ch char(4),
    ->     vch varchar(4)
    -> );
Query OK, 0 rows affected (0.09 sec)

mysql> insert into t1 values('ab  ','ab  ');
Query OK, 1 row affected (0.06 sec)

mysql> select concat('(',ch,')'),concat('(',vch,')') from t1;
+--------------------+---------------------+
| concat('(',ch,')') | concat('(',vch,')') |
+--------------------+---------------------+
| (ab)               | (ab  )              |
+--------------------+---------------------+
1 row in set (0.02 sec)

TEXT类型

种类:tinytext、text、mediumtext、longtext

1.tinytext最大长度为255
2.text最大长度65535
3.mediumtext长度为16777215
4.longtext最大长度为42949672954GB)

enum类型

语法格式:字段名 enum(‘值1’,‘值2’,‘值3’,。。。。)

enum类型的字段在取值时只能在指定的每句列表中取,而且每次只能取一个,mysql存储的是enum的索引值,索引值是从1开始编号的,枚举最多可以有65535个元素

enum值按照索引顺序排列,并且空字符串排在非空字符串前面,null值排在其它所有的枚举值前面

mysql> create table t2
    -> (
    ->     enm enum('first','second','third')
    -> );
Query OK, 0 rows affected (0.05 sec)

mysql> insert into t2 values('first'),('second'),(NULL);
Query OK, 3 rows affected (0.04 sec)
Records: 3  Duplicates: 0  Warnings: 0

mysql> select * from t2;
+--------+
| enm    |
+--------+
| first  |
| second |
| NULL   |
+--------+

enum列总是会有一个默认值的,如果将enum列声明为NULL,NULL值就为该列的一个有效值,并且默认值

为NULL。如果enum的列被声明为not null,那么默认值就为允许的值列表的第一个元素

通过索引取值

mysql> create table t3
    -> (
    ->     enm enum('good','better','well')
    -> );
Query OK, 0 rows affected (0.05 sec)

mysql> insert into t3 values(1),(3);
Query OK, 2 rows affected (0.02 sec)
Records: 2  Duplicates: 0  Warnings: 0

mysql> select * from t3;
+------+
| enm  |
+------+
| good |
| well |
+------+
2 rows in set (0.00 sec)

set类型
set是一个字符串对象,可以有零个或者多个值,set列最多有64个成员,其值为创建时规定的一列值。指定包含多个set成员的set值,用,隔开

语法:set(‘值1’,‘值2’,。。。)

set内部也有索引值,与enum不同的是,enum类型的字段只能从定义的列值中选择一个值来插入,而set类型的列可以从定义的列值中选择多个字符的联合

注意的是:如果插入set字段中的列值有重复的话,mysql会删除重复的值

mysql> create table t4
    -> (
    ->     s set('a','b','c','d')
    -> );
Query OK, 0 rows affected (0.03 sec)

mysql> insert into t4 values('a'),('a,c'),('a,b,c');
Query OK, 3 rows affected (0.02 sec)
Records: 3  Duplicates: 0  Warnings: 0

mysql> select * from t4;
+-------+
| s     |
+-------+
| a     |
| a,c   |
| a,b,c |
+-------+
3 rows in set (0.00 sec)

对于set来说,如果插入的值是重复,就只取一个,例如‘a,b,a’,结果为’a,b’ 插入后是按照顺序排列值的
例如 ‘c,a,d’ 会显示’a,c,d’

二进制类型

分类:bit,binary,varchar,tinyblob,blob,mediumblob,longblob

bit(m)类型

m表示每个值的位数,范围为1–64,如果m被省略,默认为1,如果bit(m)列分配的值小于m位,值的左边用0来填充

mysql> create table t5
    -> (
    ->    b bit(5)
    -> );
Query OK, 0 rows affected (0.06 sec)

mysql> insert into t5 values(2),(9),(12),(15);
Query OK, 4 rows affected (0.05 sec)
Records: 4  Duplicates: 0  Warnings: 0

mysql> select * from t5;
+------+
| b    |
+------+
|     |
|           |
|     |
|     |
+------+
4 rows in set (0.00 sec)

mysql> select bin(b+0) from t5;
+----------+
| bin(b+0) |
+----------+
| 10       |
| 1001     |
| 1100     |
| 1111     |
+----------+
4 rows in set (0.03 sec)

其中b+0表示将二进制的结果转换为对应的数字的值,bin()函数将数字转换为二进制,默认情况下mysql不可以插入超出该列允许范围的值,因而插入的数据要在指定的范围内

binarry(m)和varbinary(m)类型

binary(m)类型长度是固定的,不足长度的在右边填充’\0’

varbinary(m)长度是可变的。

mysql> create table t6
    -> (
    ->     b binary(3),
    ->     vb varbinary(30)
    -> );
Query OK, 0 rows affected (0.06 sec)

mysql> insert into t6 values(5,5);
Query OK, 1 row affected (0.02 sec)

mysql> select length(b),length(vb) from t6;
+-----------+------------+
| length(b) | length(vb) |
+-----------+------------+
|         3 |          1 |
+-----------+------------+
1 row in set (0.08 sec)

blob类型

blob列存储的是二进制字符串,text列存储的是非二进制字符串。

blob类型的列没有字符集,并且排序和比较基于列值字节的数值,text列有一个字符集,并且根据字符集对值进行排序和比较

版权声明:可以随意转载

相关文章推荐

数据类型、运算符和表达式

  • 2015年06月25日 23:03
  • 517KB
  • 下载

二、基本数据类型、运算符和表达式

二、基本数据类型、运算符和表达式1. 数据类型的分类2. 变量和常量(程序中数据的基本形式) 变量:程序运行过程中其值可以变化的量。 变量的定义: 数据类型 变量名1, 变量名2, … , 变...
  • mzpmzk
  • mzpmzk
  • 2016年10月05日 16:14
  • 260

数据类型与运算符

  • 2012年12月11日 13:59
  • 27KB
  • 下载

二、基础内容:字符、数据类型、运算符和数组

字符、数据类型、运算符,是构成语言基石,各个语言的不同首先就体现在这些地方。 1、标识符identifier 标识符是一串字符,用来指代某个东西,它有可能是一个变量、一个对象又或者是一个方法等等,...

第2章 JavaScript数据类型和运算符

  • 2017年07月16日 09:08
  • 625KB
  • 下载

java基础总结二(变量、数据类型、运算符)

一.变量 变量:变量是用来存储数值的区域 作用:变量用来记录数值,使用变量进行代数计算,则该变量中数值可以随着程序的逻辑计算而改变。当计算全部结束后,再将数值拿出展示给用户。 变量的使用格式: 日常...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:数据类型和运算符(二)
举报原因:
原因补充:

(最多只允许输入30个字)