一、LAB1:(字符、变长字符)
作用:用于存储用户的姓名、爱好、发布的文章等
主要:
1、CHAR 列的长度固定为创建表时声明的长度: 0 ~ 255
2、VARCHAR 列中的值为可变长字符串,长度: 0 ~ 65535
例如:
CHAR的长度是固定的
VARCHAR长度是可以变化的
固定与可变是针对存储介质(硬盘)来说的
假如:
CHAR和VARCHAR的默认长度都设为10,两个字段都分别写入“abc”
CHAR 损耗了硬盘10字节 = “abc”长度 + 7个空字符
VARCHAR损耗了硬盘 3字节 = “abc”长度
设定默认值n(假如是 10 ) 则该字段内能写入的字符串长度最大只能为 10
3、在检索的时候,CHAR列删除了尾部的空格,而VARCHAR则保留这些空格
1、创建表
示例:
mysql> create table vc (
v varchar(4),
c char(4)
);
Query OK, 0 rows affected (0.03 sec)
2、查看表结构
示例:
mysql> desc vc;
+-------+------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+------------+------+-----+---------+-------+
| v | varchar(4) | YES | | NULL | |
| c | char(4) | YES | | NULL | |
+-------+------------+------+-----+---------+-------+
2 rows in set (0.00 sec)
3、插入数据
示例:
1)mysql> insert into vc values('a','a');
Query OK, 1 row affected, 1 warning (0.00 sec)
2)mysql> insert into vc values('ab ','ab ');
Query OK, 1 row affected, 1 warning (0.00 sec)
4、查询表内容
示例:mysql> select * from vc;
+------+------+
| v | c |
+------+------+
| a | a |
| ab | ab |
+------+------+
1 row in set (0.00 sec)
(看不出来区别)
5、调动函数
1)mysql> select length(v),length(c) from vc;
+-----------+-----------+
| length(v) | length(c) |
+-----------+-----------+
| 1 | 1|
| 4 | 2 |
+-----------+-----------+
1 row in set (0.00 sec)
( length(v) 统计长度的函数)
2)mysql> select concat(v,'='), concat(c,'=') from vc; //在后面加字符'=',看的更清楚
+---------------+---------------+
| concat(v,'=') | concat(c,'=') |
+---------------+---------------+
| a= | a= |
| ab = | ab= |
+---------------+---------------+
1 row in set (0.00 sec)
( concat(v,'=') 拼接函数)
二、LAB2:(了解)(二进制字符)
{(前言)二进制字符串 类型包括:binary、varbinary、blob,主要是处理图像、视频、音频等文件,与字符集无关。
这类文件一般是放在服务器硬盘里,而不是数据库里,如果要放在数据库,就一定不能指定字符集类型,否则会把二进制字段转换成相应的非二进制字符,图像和视频就不能正常显示了。
(关于非二进制字符串)非二进制字符串类型:包括:char、varchar、text,主要用于处理文本格式的文件。
字符集就是一堆字符的集合,字符集的编码格式主要有以下几种:
1、utf-8:基于unicode编码(万国码),国际标准化组织制定的一套包含了世界上所有编码类型的字符,如果一个网页上想同时显示简体、繁体以及其他地区的一些字符,就可以使用utf8编码。每个字符的长度是1-3个字节,比如说【a】是一个字节,【盾】是3个字节。
2、gb2312:简体字,包含6700多个汉字,每个汉字相当于2个字节,每个英文单词相当于1个字节。
3、gbk:简体字和繁体字,包含21000多个汉字,由中国内地编写的编码库,每个汉字相当于2个字节,每个英文单词相当于1个字节。
4、big5:繁体字,包含13000多个汉字,也叫大五码,每个汉字相当于2个字节,每个英文单词相当于1个字节。
}
1、字符串类型测试:BINARY、VARBINARY
BINARY 和 VARBINARY类似于CHAR 和 VARCHAR,
不同的是它们包含二进制字符,而不包含非二进制字符串
mysql> create table binary_t (c binary(3));
Query OK, 0 rows affected (0.03 sec)
mysql> desc binary_t;
+-------+-----------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-----------+------+-----+---------+-------+
| c | binary(3) | YES | | NULL | |
+-------+-----------+------+-----+---------+-------+
1 row in set (0.00 sec)
mysql> insert into binary_t set c='aaa';
Query OK, 1 row affected (0.00 sec)
mysql> select *,hex(c) from binary_t;
+------+--------+
| c | hex(c) |
+------+--------+
| aaa | 616161 |
+------+--------+
1 row in set (0.00 sec)
set解释:
1)在标准的SQL语句中,一次插入一条记录的INSERT语句只有一种形式。
INSERT INTO tablename(列名…) VALUES(列值);
而在MySQL中还有另外一种形式。
INSERT INTO tablename SET column_name1 = value1, column_name2 = value2,…;
2)
第一种方法将列名和列值分开了,在使用时,列名必须和列值的数一致。如下面的语句向users表中插入了一条记录:
INSERT INTO users(id, name, age) VALUES(123, '姚明', 25);
第二种方法允许列名和列值成对出现和使用,如下面的语句将产生中样的效果。
INSERT INTO users SET id = 123, name = '姚明', age = 25;
616161解释:
a是字符的话,对应ascII码是97,则二进制为01100001,转成16进制为61