数据类型和运算符(二)

原创 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列有一个字符集,并且根据字符集对值进行排序和比较

版权声明:可以随意转载 举报

相关文章推荐

Mysql数据类型和运算符(二)

一、定点数与浮点数类型无论是定点数还是浮点数 如果用户指定的类型精度超过指定精度范围吗,会四舍五入进行处理//创建表并想表中插入数据 mysql> create table tb_emp5 (x f...

数据类型和运算符(二)

本内容属于个人原创内容,欢迎访问个人博客地址关系运算符 >   大于 \=   大于等于 \<=   小于等于 ==   等于【注意是2个=】 !=   不等于【前面有感叹号】关系运算符运...

精选:深入理解 Docker 内部原理及网络配置

网络绝对是任何系统的核心,对于容器而言也是如此。Docker 作为目前最火的轻量级容器技术,有很多令人称道的功能,如 Docker 的镜像管理。然而,Docker的网络一直以来都比较薄弱,所以我们有必要深入了解Docker的网络知识,以满足更高的网络需求。

数据类型和运算符(二)

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

数据类型&运算符

一. 数据类型 1.整数类型  &  2.浮点数&定点数       M为精度:数据总长度     D为标度:小数点后长度    单...

二、C_base——数据类型/运算符

【1】数据类型1--- 定义变量 数据类型 变量名 = 初始值; 数据类型 变量名; 变量名:由数字、字母、下划线组成,开头不能是数字2--- bool ...

Java数据类型和运算符

Java是一门强类型语言:所有变量必须先声明后使用;指定类型的变量只能接受类型与之匹配的值。 Java支持的数据类型分为;基本类型和引用类型。 Java中byte、short、int、lo...

object c_数据类型和运算符

objective-c语言区分大小写abc与Abc是两个不同的字符。 数据类型:基本数据类型(整形,字符型,浮点型,枚举型)、构造类型(数组类型,构造体类型,公用体类型)、指针类型。 八进制以0开头,...

数据类型和运算符(总结)

标识符、关键字 数据类型、运算符 标识符的命名规则: 1、字母、数字、下划线“_”、美元符号“$”组成。 2、字母、下划线“_”、美元符号“$”开头。 3、不能与关键字、boolean值、null同名...

Java数据类型和运算符

一,数据类型分类(2种) 1. 基本数据类型(3种) 数值型: 整数类型(4种): byte(1字节):范围(-128~127);short(2字节):范围(-32768~32767)...

数据类型和运算符(一)

主要是数据类型中的整数类型和浮点数和定点数类型
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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