一、LAB1:(字符、變長字符)
作用:用于存儲(chǔ)用戶的姓名、愛好、發(fā)布的文章等
主要:
1、CHAR? ? ? ? 列的長度固定為創(chuàng)建表時(shí)聲明的長度: 0 ~ 255
2、VARCHAR? 列中的值為可變長字符串,長度: 0 ~ 65535
例如:
CHAR的長度是固定的
VARCHAR長度是可以變化的
固定與可變是針對存儲(chǔ)介質(zhì)(硬盤)來說的
假如:
CHAR和VARCHAR的默認(rèn)長度都設(shè)為10,兩個(gè)字段都分別寫入“abc”
CHAR? ? ? 損耗了硬盤10字節(jié) = “abc”長度 + 7個(gè)空字符
VARCHAR損耗了硬盤 3字節(jié) = “abc”長度
設(shè)定默認(rèn)值n(假如是 10 ) 則該字段內(nèi)能寫入的字符串長度最大只能為 10
3、在檢索的時(shí)候,CHAR列刪除了尾部的空格,而VARCHAR則保留這些空格
1、創(chuàng)建表
示例:
mysql> create table vc (
v varchar(4),
c char(4)
);
Query OK, 0 rows affected (0.03 sec)
2、查看表結(jié)構(gòu)
示例:
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、插入數(shù)據(jù)
示例:
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、查詢表內(nèi)容
示例:mysql> select * from vc;
+------+------+
| v? ? | c? ? |
+------+------+
| a? | a? |
| ab? | ab? |
+------+------+
1 row in set (0.00 sec)
(看不出來區(qū)別)
5、調(diào)動(dòng)函數(shù)
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) 統(tǒng)計(jì)長度的函數(shù))
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,'=') 拼接函數(shù))
二、LAB2:(了解)(二進(jìn)制字符)
{(前言)二進(jìn)制字符串 類型包括:binary、varbinary、blob,主要是處理圖像、視頻、音頻等文件,與字符集無關(guān)。
這類文件一般是放在服務(wù)器硬盤里,而不是數(shù)據(jù)庫里,如果要放在數(shù)據(jù)庫,就一定不能指定字符集類型,否則會(huì)把二進(jìn)制字段轉(zhuǎn)換成相應(yīng)的非二進(jìn)制字符,圖像和視頻就不能正常顯示了。
(關(guān)于非二進(jìn)制字符串)非二進(jìn)制字符串類型:包括:char、varchar、text,主要用于處理文本格式的文件。
字符集就是一堆字符的集合,字符集的編碼格式主要有以下幾種:
1、utf-8:基于unicode編碼(萬國碼),國際標(biāo)準(zhǔn)化組織制定的一套包含了世界上所有編碼類型的字符,如果一個(gè)網(wǎng)頁上想同時(shí)顯示簡體、繁體以及其他地區(qū)的一些字符,就可以使用utf8編碼。每個(gè)字符的長度是1-3個(gè)字節(jié),比如說【a】是一個(gè)字節(jié),【盾】是3個(gè)字節(jié)。
2、gb2312:簡體字,包含6700多個(gè)漢字,每個(gè)漢字相當(dāng)于2個(gè)字節(jié),每個(gè)英文單詞相當(dāng)于1個(gè)字節(jié)。
3、gbk:簡體字和繁體字,包含21000多個(gè)漢字,由中國內(nèi)地編寫的編碼庫,每個(gè)漢字相當(dāng)于2個(gè)字節(jié),每個(gè)英文單詞相當(dāng)于1個(gè)字節(jié)。
4、big5:繁體字,包含13000多個(gè)漢字,也叫大五碼,每個(gè)漢字相當(dāng)于2個(gè)字節(jié),每個(gè)英文單詞相當(dāng)于1個(gè)字節(jié)。
}
1、字符串類型測試:BINARY、VARBINARY
BINARY 和 VARBINARY類似于CHAR 和 VARCHAR,
不同的是它們包含二進(jìn)制字符,而不包含非二進(jìn)制字符串
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)在標(biāo)準(zhǔn)的SQL語句中,一次插入一條記錄的INSERT語句只有一種形式。
INSERT INTO tablename(列名…) VALUES(列值);
而在MySQL中還有另外一種形式。
INSERT INTO tablename SET column_name1 = value1, column_name2 = value2,…;
2)
第一種方法將列名和列值分開了,在使用時(shí),列名必須和列值的數(shù)一致。如下面的語句向users表中插入了一條記錄:
INSERT INTO users(id, name, age) VALUES(123, '姚明', 25);
第二種方法允許列名和列值成對出現(xiàn)和使用,如下面的語句將產(chǎn)生中樣的效果。
INSERT INTO users SET id = 123, name = '姚明', age = 25;
616161解釋:
a是字符的話,對應(yīng)ascII碼是97,則二進(jìn)制為01100001,轉(zhuǎn)成16進(jìn)制為61