Jadual Kandungan
1.基础知识
1.1如何来查看mysql的帮助手册
1.2创建表的规则
1.3如何向表中插入数据
1.4Mysql数据类型
2.实验操作
2.1数值型
(1)整型
(2)浮点数类型与定点类型
2.2日期时间类型
(1)Time类型3个字节
(2)DATE日期类型3个字节
(3)DATETIME类型8个字节
(4)TIMESTAMP类型4个字节
(5)YEAR类型
2.3字符类型
(1)CHAR(M):定长,0-255个字节
(2)TEXT:只能保存字符数据,存大量文本时可以用TEXT.
(3)ENUM枚举类型
(4)SET:保存排列的编号,不区分顺序
Rumah pangkalan data tutorial mysql mysql支持的数据类型及其测试_MySQL

mysql支持的数据类型及其测试_MySQL

Jun 01, 2016 pm 01:02 PM
data menaip

1.基础知识

1.1如何来查看mysql的帮助手册

?int

Help float;

1.2创建表的规则

CREATE TABLE [IF NOT EXISTS] tbl_name(

字段名 字段类型 [完整性的约束条件]);

1.3如何向表中插入数据

INSERT [INTO] tab_name [(字段名称……)] VALUES (值……)

1.4Mysql数据类型

1.数值型

整数类型

TINYINT:范围0~255;-128~127占用1字节

SMALLINT;范围0~65535-32768~32767;占用2字节

MEDIUMINT;3字节

INT:4字节

BIGINT;8字节

浮点类型

FLOAT(D,,M):占用4字节;两个参数M总共包括几位,D小数点后几位

DOUBLE(M,D):8字节;

定点类型

DECIMAL(D,M):内部以字符串形式存储,占用大小为M+2个字节;

2.字符串类型

CHAR(M)定长 0-255 占M个字节 M代表字符串长度

VARCHAR(M)变长,范围 0-65535,占M+1个字节

TINYTEXT、MEDIUMTEXT、 TEXT、LONGTEXT :只能保存字符数据,内容长度+1个字节

ENUM:最多65535个值,保存值所对应的编号,最多可以存所列举值中的一个

SET:可以选择多个值,最多64个值,保存排列的编号,顺序不区分

3.日期与时间类型

TIME 小时 分钟秒 3个字节

DATE 年月日 3个字节

DATETIME日期时间 8个字节

TIMESTAMP时间戳 4个字节

YEAR 年份 1个字节

2.实验操作

2.1数值型

(1)整型

查看当前服务器下已有的数据库:

mysql> SHOW DATABASES;

+--------------------+

| Database |

+--------------------+

| information_schema |

| mysql |

| performance_schema |

| test |

+--------------------+

4 rows in set (0.00 sec)

创建数据库ran并查看是否创建成功:

mysql> CREATE DATABASE ran

-> ;

Query OK, 1 row affected (0.08 sec)

mysql> SHOW DATABASES;

+--------------------+

| Database |

+--------------------+

| information_schema |

| mysql |

| performance_schema |

| ran |

| test |

+--------------------+

5 rows in set (0.00 sec)

如何使用mysql的帮助手册:\s或者help

查看INT类型的使用范围等,

mysql> ? int

Name: 'INT'

Description:

INT[(M)] [UNSIGNED] [ZEROFILL]

A normal-size integer. The signed range is-2147483648 to 2147483647.

The unsigned range is 0 to 4294967295. 

URL: http://dev.mysql.com/doc/refman/5.5/en/numeric-type-overview.html 

查看FLOAT类型的使用范围等,

mysql> help float

Name: 'FLOAT'

Description:

FLOAT[(M,D)] [UNSIGNED] [ZEROFILL]

A small (single-precision) floating-pointnumber. Permissible values

are -3.402823466E+38 to -1.175494351E-38,0, and 1.175494351E-38 to

3.402823466E+38. These are the theoreticallimits, based on the IEEE

standard. The actual range might beslightly smaller depending on your

hardware or operating system.

M is the total number of digits and D isthe number of digits following

the decimal point. If M and D are omitted,values are stored to the

limits permitted by the hardware. Asingle-precision floating-point

number is accurate to approximately 7decimal places.

UNSIGNED, if specified, disallows negativevalues.

Using FLOAT might give you some unexpectedproblems because all

calculations in MySQL are done with doubleprecision. See

http://dev.mysql.com/doc/refman/5.5/en/no-matching-rows.html.

URL: http://dev.mysql.com/doc/refman/5.5/en/numeric-type-overview.html

创建数据表之前应当使用数据库,登陆mysql后默认没有进入任何数据库,使用数据库ran并查看当前数据库ran所拥有的表,如下所示ran还没有创建任何表:

mysql> USE ran

Database changed

mysql> SHOW TABLES;

Empty set (0.00 sec)

为测试mysql中的整型创建数据表test1并查看是否创建成功:

mysql> CREATE TABLE IF NOT EXISTS test1(

-> num1 TINYINT,

-> num2 SMALLINT,

-> num3 MEDIUMINT,

-> num4 INT,

-> num5 BIGINT

-> );

Query OK, 0 rows affected (0.06 sec)

mysql> SHOW TABLES;

+---------------+

| Tables_in_ran |

+---------------+

| test1 |

+---------------+

1 row in set (0.00 sec)

向数据表中插入数据,测试mysql的整型:

mysql> INSERT INTO test1VALUES(127,65535,8388607,2147483647,231456789);

ERROR 1264 (22003): Out of range value forcolumn 'num2' at row 1

SMALLINT最大值为32767,超出范围报错,改成32767后插入成功:

mysql> INSERT INTO test1VALUES(127,32767,8388607,2147483647,231456789);

Query OK, 1 row affected (0.03 sec)

查询表中所有记录

SELECT * FROM tab_name;

mysql> SELECT * FROM test1;

+------+-------+---------+------------+-----------+

| num1 | num2 | num3 | num4 | num5 |

+------+-------+---------+------------+-----------+

| 127 | 32767 | 8388607 | 2147483647 | 231456789 |

+------+-------+---------+------------+-----------+

1 row in set (0.00 sec)

字符串也可以变成整型,mysql支持数据类型的转换

mysql> INSERT INTO test1VALUES('1','2','3',45,09);

Query OK, 1 row affected (0.05 sec)

mysql> SELECT * FROM test1;

+------+-------+---------+------------+-----------+

| num1 | num2 | num3 | num4 | num5 |

+------+-------+---------+------------+-----------+

| 127 | 32767 | 8388607 | 2147483647 | 231456789 |

| 1 | 2 | 3| 45 | 9 |

+------+-------+---------+------------+-----------+

2 rows in set (0.00 sec)

mysql> SELECT 1+'1';

+-------+

| 1+'1' |

+-------+

| 2 |

+-------+

1 row in set (0.00 sec)

mysql> SELECT 1+'KAIKEBA';

+-------------+

| 1+'KAIKEBA' |

+-------------+

| 1 |

+-------------+

1 row in set, 1 warning (0.00 sec)

mysql> SELECT 1+'3kaikeba';

+--------------+

| 1+'3kaikeba' |

+--------------+

| 4 |

+--------------+

1 row in set, 1 warning (0.00 sec)

(2)浮点数类型与定点类型

为了测试mysql的浮点数和定点数建立数据表test2:

mysql> CREATE TABLE IF NOT EXISTS test2(

-> Num1 FLOAT(6,2),

-> Num2 DOUBLE(6,2),

-> NUM3 DECIMAL(6,2)

-> );

Query OK, 0 rows affected (0.05 sec)

mysql> SHOW TABLES;

+---------------+

| Tables_in_ran |

+---------------+

| test1 |

| test2 |

+---------------+

2 rows in set (0.00 sec)

向数据表test2中插入范围内的数据

mysql> INSERT INTO test2VALUES(9999.99,9999.99,9999.99);

Query OK, 1 row affected (0.03 sec)

mysql> SELECT * FROM test2;

+---------+---------+---------+

| Num1 | Num2 | NUM3 |

+---------+---------+---------+

| 9999.99 | 9999.99 | 9999.99 |

+---------+---------+---------+

1 row in set (0.00 sec)

当插入的数据整数超出了范围时,报错:

mysql> INSERT INTO test2VALUES(19999.99,9999.99,9999.99);

ERROR 1264 (22003): Out of range value forcolumn 'Num1' at row 1

小数位超过范围时,插入成功,但是报警告信息

ysql> INSERT INTO test2VALUES(23.34567,12.2345,67.8902);

Query OK, 1 row affected, 1 warning (0.02sec)

mysql> SELECT * FROM test2;

+---------+---------+---------+

| Num1 | Num2 | NUM3 |

+---------+---------+---------+

| 9999.99 | 9999.99 | 9999.99 |

| 23.35 | 12.23 | 67.89 |

+---------+---------+---------+

2 rows in set (0.00 sec) 

数值是否会四舍五入呢?都进行四舍五入了。定点数超出范围是会产生一条警告,而浮点型不会有警告。

mysql> INSERT INTO test2VALUES(12.5678,23.5678,34.5678);

Query OK, 1 row affected, 1 warning (0.05sec)

mysql> SELECT * FROM test2;

+---------+---------+---------+

| Num1 | Num2 | NUM3 |

+---------+---------+---------+

| 9999.99 | 9999.99 | 9999.99 |

| 23.35 | 12.23 | 67.89 |

| 12.57 | 23.57 | 34.57 |

+---------+---------+---------+

3 rows in set (0.00 sec)

2.2日期时间类型

(1)Time类型3个字节

mysql> CREATE TABLE IF NOT EXISTStesttime(

-> a Time

-> );

Query OK, 0 rows affected (0.08 sec)

插入时间的第一种形式:

mysql> INSERT testtime VALUES('13:14:24');

Query OK, 1 row affected (0.05 sec)

mysql> SELECT * FROM testtime;

+----------+

| a |

+----------+

| 13:14:24 |

+----------+

1 row in set (0.03 sec)

插入数字0也可以:

mysql> INSERT testtime VALUES(0);

Query OK, 1 row affected (0.06 sec)

mysql> SELECT * FROM testtime;

+----------+

| a |

+----------+

| 13:14:24 |

| 00:00:00 |

+----------+

2 rows in set (0.00 sec)

插入时间是不用分隔符:

mysql> INSERT INTO testtimeVALUES('101010');

Query OK, 1 row affected (0.03 sec)

mysql> SELECT * FROM testtime;

+----------+

| a |

+----------+

| 13:14:24 |

| 00:00:00 |

| 10:10:10 |

+----------+

3 rows in set (0.00 sec)

插入时间是在前面加上天:

mysql> INSERT INTO testtime VALUES('310:10:10');

Query OK, 1 row affected (0.16 sec)

mysql> SELECT * FROM testtime;

+----------+

| a |

+----------+

| 13:14:24 |

| 00:00:00 |

| 10:10:10 |

| 82:10:10 |

+----------+

4 rows in set (0.00 sec)

mysql> INSERT testtime VALUES('0');

Query OK, 1 row affected (0.02 sec)

mysql> SELECT * FROM testtime;

+----------+

| a |

+----------+

| 13:14:24 |

| 00:00:00 |

| 10:10:10 |

| 82:10:10 |

| 15:51:51 |

| 00:00:00 |

+----------+

6 rows in set (0.00 sec) 

mysql> INSERT testtime VALUES(123546);

Query OK, 1 row affected (0.03 sec)

mysql> SELECT * FROM testtime;

+----------+

| a |

+----------+

| 13:14:24 |

| 00:00:00 |

| 10:10:10 |

| 82:10:10 |

| 15:51:51 |

| 00:00:00 |

| 15:53:16 |

| 12:35:46 |

+----------+

8 rows in set (0.00 sec)

时间类型的插入形式总结:

INSERT testtime VALUES(‘13:14:23’);13:14:23

INSERT testtime VALUES(0);00:00:00

INSERT testtime VALUES(‘101010’);10:10:10

INSERT testtime VALUES(‘3 10:10:10’);82:10:10

INSERT testtime VALUES(‘5 10-10-20’);//不成功的

INSERT testtime VALUES(‘0’);00:00:00

INSERT testtime VALUES(124536);12:45:36

得到当前系统时间

NOW();

CURRENT_TIME

CURRENT_TIME()

mysql> INSERT testtime VALUES(NOW());

Query OK, 1 row affected (0.03 sec)

mysql> SELECT * FROM testtime;

+----------+

| a |

+----------+

| 13:14:24 |

| 00:00:00 |

| 10:10:10 |

| 82:10:10 |

| 15:51:51 |

+----------+

5 rows in set (0.00 sec)

mysql> INSERT testtime VALUES(CURRENT_TIME);

Query OK, 1 row affected (0.05 sec)

mysql> SELECT * FROM testtime;

+----------+

| a |

+----------+

| 13:14:24 |

| 00:00:00 |

| 10:10:10 |

| 82:10:10 |

| 15:51:51 |

| 00:00:00 |

| 15:53:16 |

+----------+

7 rows in set (0.00 sec)

//时间类型的最小值;

mysql> INSERT testtimeVALUES('-838:59:59');

Query OK, 1 row affected (0.01 sec)

//时间类型的最大值:

mysql> INSERT testtimeVALUES('838:59:59');

Query OK, 1 row affected (0.02 sec)

mysql> SELECT * FROM testtime;

+------------+

| a |

+------------+

| 13:14:24 |

| 00:00:00 |

| 10:10:10 |

| 82:10:10 |

| 15:51:51 |

| 00:00:00 |

| 15:53:16 |

| 12:35:46 |

| -838:59:59 |

| 838:59:59 |

+------------+

10 rows in set (0.00 sec)

//超出时间类型范围报错:

mysql> INSERT testtimeVALUES('838:69:59');

ERROR 1292 (22007): Incorrect time value:'838:69:59' for column 'a' at row 1

(2)DATE日期类型3个字节

1000-01-01~9999-12-31

CREATE TABLE IF NOT EXISTS testdate(

A DATE);

INSERT testdate VALUES(‘1000-01-01’);

INSERT testdate VALUES(‘2014/12/16’);

INSERT testdate VALUES(‘20120523’);

INSERT testdate VALUES(‘201416’);

得到当前系统的日期

NOW();

CURRENT_DATE

CURRENT_DATE();

INSERT testdate VALUES(NOW());

INSERT testdate VALUES(CURRENT_DATE);

INSERT testdate VALUES(CURRENT_DATE());

INSERT testdate VALUES(0);

实验结果:

mysql> ? DATE

Name: 'DATE'

Description:

DATE

A date. The supported range is '1000-01-01'to '9999-12-31'. MySQL

displays DATE values in 'YYYY-MM-DD'format, but permits assignment of

values to DATE columns using either stringsor numbers.

URL:http://dev.mysql.com/doc/refman/5.5/en/date-and-time-type-overview.html

mysql> CREATE TABLE IF NOT EXISTStestdate(

-> a DATE);

Query OK, 0 rows affected (0.06 sec)

mysql> INSERT testdateVALUES('1000-01-01');

Query OK, 1 row affected (0.03 sec)

mysql> INSERT testdateVALUES('2014/12/13');

Query OK, 1 row affected (0.03 sec)

mysql> INSERT testdate VALUES(20151223);

Query OK, 1 row affected (0.06 sec)

mysql> INSERT testdateVALUES('201212');

Query OK, 1 row affected (0.05 sec)

mysql> SELECT * FROM testdate;

+------------+

| a |

+------------+

| 1000-01-01 |

| 2014-12-13 |

| 2015-12-23 |

| 2012-03-12 |

+------------+

4 rows in set (0.00 sec)

mysql> INSERT testdateVALUES(CURRENT_DATE);

Query OK, 1 row affected (0.03 sec)

mysql> SELECT * FROM testdate;

+------------+

| a |

+------------+

| 1000-01-01 |

| 2014-12-13 |

| 2015-12-23 |

| 2012-03-12 |

| 2014-10-14 |

+------------+

5 rows in set (0.00 sec)

mysql> INSERT testdate VALUES(0);

Query OK, 1 row affected (0.03 sec)

mysql> SELECT * FROM testdate;

+------------+

| a |

+------------+

| 1000-01-01 |

| 2014-12-13 |

| 2015-12-23 |

| 2012-03-12 |

| 2014-10-14 |

| 0000-00-00 |

+------------+

6 rows in set (0.00 sec)

mysql> INSERT testdate VALUES(NOW());

Query OK, 1 row affected, 1 warning (0.03sec)

mysql> SELECT * FROM testdate;

+------------+

| a |

+------------+

| 1000-01-01 |

| 2014-12-13 |

| 2015-12-23 |

| 2012-03-12 |

| 2014-10-14 |

| 0000-00-00 |

| 2014-10-14 |

+------------+

7 rows in set (0.00 sec)

(3)DATETIME类型8个字节

CREATE TABLE IF NOT EXISTS testdatetime(

S DATETIME);

INSERT testdatetime VALUES(‘2014-8-3114:14:58’);

INSERT testdatetime VALUES(NOW());

需要指定分隔符

实验结果: 

mysql> CREATE TABLE IF NOT EXISTStestdatetime(

-> s DATETIME);

Query OK, 0 rows affected (0.13 sec) 

mysql> INSERT testdatetimeVALUES('2014-8-31 13:23:56');

Query OK, 1 row affected (0.03 sec) 

mysql> SELECT * FROM testdatetime;

+---------------------+

| s |

+---------------------+

| 2014-08-31 13:23:56 |

+---------------------+

1 row in set (0.00 sec) 

mysql> INSERT testdatetimeVALUES(NOW());

Query OK, 1 row affected (0.05 sec) 

mysql> SELECT * FROM testdatetime;

+---------------------+

| s |

+---------------------+

| 2014-08-31 13:23:56 |

| 2014-10-14 16:09:01 |

+---------------------+

2 rows in set (0.00 sec) 

mysql> INSERT testdatetimeVALUES('201401 14-25-36');

Query OK, 1 row affected (0.05 sec) 

mysql> SELECT * FROM testdatetime;

+---------------------+

| s |

+---------------------+

| 2014-08-31 13:23:56 |

| 2014-10-14 16:09:01 |

| 2014-09-01 14:25:36 |

+---------------------+

3 rows in set (0.00 sec)

(4)TIMESTAMP类型4个字节

1970-01-018:01:01到2038-01-19 11:14:07

与DATETIME显示格式一样

CREATE TABLE IF NOT EXISTS testtimestamp(

S TIMESTAMP);

实验结果:

mysql> CREATE TABLE IF NOT EXISTStesttimestamp(

-> s TIMESTAMP);

Query OK, 0 rows affected (0.06 sec) 

mysql> INSERT testtimestampVALUES(NOW());

Query OK, 1 row affected (0.02 sec) 

mysql> SELECT * FROM testtimestamp;

+---------------------+

| s |

+---------------------+

| 2014-10-14 16:14:48 |

+---------------------+

1 row in set (0.00 sec) 

(5)YEAR类型

1971-2055年

CREATE TABLE IF NOT EXISTS testyear(

A YEAR);

\C撤销当前命令执行

两位转换规则:

INSERT testyear VALUES(12);2012(00-69)加上2000

INSERT testyear VALUES(78);1978(70-99)加上1900

INSERT testyear VALUES(0);0000

INSERT testyear VALUES(‘0’);2000

INSERT testyear VALUES(‘00’);2000

INSERT testyear VALUES(2014);2014

INSERT testyear VALUES(‘2015’);2015

在实际开发中有可能用整形保存时间戳来替代和日期时间相关的一些这样的数据。

mysql> CREATE TABLE IF NOT EXISTStestyear(

-> a YEAR);

Query OK, 0 rows affected (0.06 sec)

mysql> INSERT testyear VALUES('2014');

Query OK, 1 row affected (0.03 sec) 

mysql> INSERT testyear VALUES(2015);

Query OK, 1 row affected (0.03 sec) 

mysql> SELECT * FROM testyear;

+------+

| a |

+------+

| 2014 |

| 2015 |

+------+

2 rows in set (0.00 sec) 

mysql> INSERT testyear VALUES(0);

Query OK, 1 row affected (0.05 sec) 

mysql> SELECT * FROM testyear;

+------+

| a |

+------+

| 2014 |

| 2015 |

| 0000 |

+------+

3 rows in set (0.00 sec) 

mysql> INSERT testyear VALUES('0');

Query OK, 1 row affected (0.03 sec) 

mysql> SELECT * FROM testyear;

+------+

| a |

+------+

| 2014 |

| 2015 |

| 0000 |

| 2000 |

+------+

4 rows in set (0.00 sec) 

mysql> INSERT testyear VALUES('00');

Query OK, 1 row affected (0.09 sec) 

mysql> SELECT * FROM testyear;

+------+

| a |

+------+

| 2014 |

| 2015 |

| 0000 |

| 2000 |

| 2000 |

+------+

5 rows in set (0.00 sec) 

mysql> INSERT testyear VALUES(12);

Query OK, 1 row affected (0.08 sec) 

mysql> SELECT * FROM testyear;

+------+

| a |

+------+

| 2014 |

| 2015 |

| 0000 |

| 2000 |

| 2000 |

| 2012 |

+------+

6 rows in set (0.00 sec) 

mysql> INSERT testyear VALUES(70);

Query OK, 1 row affected (0.03 sec) 

mysql> SELECT * FROM testyear;

+------+

| a |

+------+

| 2014 |

| 2015 |

| 0000 |

| 2000 |

| 2000 |

| 2012 |

| 1970 |

+------+

7 rows in set (0.00 sec) 

mysql> INSERT testyear VALUES('000');

Query OK, 1 row affected (0.05 sec)

mysql> SELECT * FROM testyear;

+------+

| a |

+------+

| 2014 |

| 2015 |

| 0000 |

| 2000 |

| 2000 |

| 2012 |

| 1970 |

| 2000 |

+------+

8 rows in set (0.00 sec)

2.3字符类型

(1)CHAR(M):定长,0-255个字节

VARCHAR(M):变长,占M+1个字节

创建数据表同时插入A字符;

mysql> CREATE TABLE IF NOT EXISTSteststring(

-> str1 CHAR(5),

-> str2 VARCHAR(5)

-> );

Query OK, 0 rows affected (0.05 sec) 

mysql> INSERT teststringVALUES('A','A');

Query OK, 1 row affected (0.03 sec) 

mysql> SELECT * FROM teststring;

+------+------+

| str1 | str2 |

+------+------+

| A | A |

+------+------+

1 row in set (0.00 sec)

当超过5个字符时报错:

mysql> INSERT teststringVALUES('Abcdef','bcdefA');

ERROR 1406 (22001): Data too long forcolumn 'str1' at row 1

在插入中文之前需要临时转换下客户端的编码方式,否则会出现乱码或意想不到的错误:

SET NAMES GBK;//只针对当前连接有效,或者在他之后有效;如果退出后需要重新设置编码方式。

一个中文代表一个字符

INSERT teststring VALUES(‘开课吧开课’,‘大家快学习’);

怎么样在命令行提示符中输入中文:按ctrl+空格切换输入法就可以办到 
Salin selepas log masuk

在当前连接下或不退出情况下,可以输入中文了。

否则插入出错。

查看编码方式:

\s

Status

实验结果:

设置mysql数据库之前查看mysql的编码方式:都是UTF8

mysql> \s

-------------- 

Connection id: 2

Current database: ran

Current user: root@localhost

SSL: Notin use

Using delimiter: ;

Server version: 5.5.19 MySQL Community Server (GPL)

Protocol version: 10

Connection: localhostvia TCP/IP

Server characterset: utf8

Db characterset: utf8

Client characterset: utf8

Conn. characterset: utf8

TCP port: 3306

Uptime: 2hours 5 min 13 sec 

Threads: 1 Questions: 117 Slow queries:0 Opens: 57 Flush tables: 1 Open tables: 1 Queries per second avg: 0.015

-------------- 

mysql> status;

-------------- 

Connection id: 2

Current database: ran

Current user: root@localhost

SSL: Notin use

Using delimiter: ;

Server version: 5.5.19 MySQL Community Server (GPL)

Protocol version: 10

Connection: localhostvia TCP/IP

Server characterset: utf8

Db characterset: utf8

Client characterset: utf8

Conn. characterset: utf8

TCP port: 3306

Uptime: 2hours 5 min 31 sec 

Threads: 1 Questions: 119 Slow queries: 0 Opens: 57 Flush tables: 1 Open tables:1 Queries per second avg: 0.015

//设置mysql客户端的编码方式为GBK

mysql> SET NAMES GBK;

Query OK, 0 rows affected (0.00 sec)

//再次查看mysql的编码方式已经改变:

mysql> \s

--------------

Connection id: 2

Current database: ran

Current user: root@localhost

SSL: Notin use

Using delimiter: ;

Server version: 5.5.19 MySQL Community Server (GPL)

Protocol version: 10

Connection: localhostvia TCP/IP

Server characterset: utf8

Db characterset: utf8

Client characterset: gbk

Conn. characterset: gbk

TCP port: 3306

Uptime: 2hours 6 min 46 sec 

Threads: 1 Questions: 122 Slow queries:0 Opens: 57 Flush tables: 1 Open tables: 1 Queries per second avg: 0.016

//插入汉子,一个汉子代表一个字符:

mysql> INSERT teststring VALUES('开课吧开课','大家快学习');

Query OK, 1 row affected (0.05 sec) 

mysql> SELECT * FROM teststring;

+------------+------------+

| str1 | str2 |

+------------+------------+

| A | A |

| 开课吧开课 | 大家快学习 |

+------------+------------+

2 rows in set (0.00 sec) 

mysql> INSERT teststring VALUES('开课吧开课','大家快学习.');

ERROR 1406 (22001): Data too long forcolumn 'str2' at row 1 

CHAR与VARCHAR区别:

(1)存储方式与检索方式不同;保存数据是,当数据长度小于指定长度,CHAR类型会在后面用空格填充指定长度,当检索数据时会去掉后面的空格;PHP可以用TRIM或RTRIM函数将查询出来的数据中的空格去掉。VARCHAR保存时不填充空格,当检索数据时如果有空格,空格保留。

(2)CHAR效率高于VARCHAR,但浪费了空间。长度超过255或者长度不固定时,只能用VARCHAR.

(2)TEXT:只能保存字符数据,存大量文本时可以用TEXT.

TINYTEXT

TEXT

MEDIUMTEXT

LONGTEXT

当长度超过6万多字时,使用TEXT,但是能用VARCHAR的地方尽量不用TEXT类型。

数据检索效率:CHAR>VARCHAR>TEXT

实验结果:

mysql> CREATE TABLE testtext(

-> a TINYTEXT,

-> b TEXT,

-> c MEDIUMTEXT,

-> d LONGTEXT);

Query OK, 0 rows affected (0.11 sec)

(3)ENUM枚举类型

ENUM(‘值1’,’值2’,……):最多65535个值

ENUM:保存值所对应的编号,插入值时只能插入列举值中的一个

CREATE TABLE testenum(

Sex ENUM(‘男’,’女’,’保密’));

INSERT testenum VALUES(‘男’);

INSERT testenum VALUES(1);

INSERT testenum VALUES(2);

INSERT testenum VALUES(3);

实验结果:

mysql> CREATE TABLE testenum(

-> sex ENUM('男','女','保密'));

Query OK, 0 rows affected (0.06 sec)

mysql> INSERT testenum VALUES(1);

Query OK, 1 row affected (0.03 sec)

mysql> SELECT * FROM testenum;

+------+

| sex |

+------+

| 男 |

+------+

1 row in set (0.00 sec)

mysql> INSERT testenum VALUES('保密');

Query OK, 1 row affected (0.03 sec)

mysql> SELECT * FROM testenum;

+------+

| sex |

+------+

| 男 |

| 保密 |

+------+

2 rows in set (0.00 sec)

mysql> INSERT testenum VALUES(3);

Query OK, 1 row affected (0.05 sec)

mysql> SELECT * FROM testenum;

+------+

| sex |

+------+

| 男 |

| 保密 |

| 保密 |

+------+

3 rows in set (0.00 sec)

(4)SET:保存排列的编号,不区分顺序

最多保存64个值,插值时可以插入多个值,必须插入集合中的值。

CREATE TABLE testset(

Fav SET(‘A’,’’B,’C’,’D’));

INSERT testset VALUES(‘A,B,C’);

INSERT testset VALUES(‘B,D’);

INSERT testset VALUES(‘C,D’);

INSERT testset VALUES(‘D,E’);(出错)

做权限管理时,使用集合非常简单。

实验结果:

mysql> CREATE TABLE testset(

-> fav SET('A','B','C','D'));

Query OK, 0 rows affected (0.09 sec)

mysql> INSERT testset VALUES('A,B,C');

Query OK, 1 row affected (0.03 sec) 

mysql> INSERT testset VALUES('B,D');

Query OK, 1 row affected (0.02 sec) 

mysql> INSERT testset VALUES('B,C');

Query OK, 1 row affected (0.03 sec) 

mysql> INSERT testset VALUES('B,E');

ERROR 1265 (01000): Data truncated forcolumn 'fav' at row 1

mysql> SELECT * FROM testset;

+-------+

| fav |

+-------+

| A,B,C |

| B,D |

| B,C |

+-------+

3 rows in set (0.00 sec)

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Gunakan ddrescue untuk memulihkan data pada Linux Gunakan ddrescue untuk memulihkan data pada Linux Mar 20, 2024 pm 01:37 PM

DDREASE ialah alat untuk memulihkan data daripada fail atau peranti sekat seperti cakera keras, SSD, cakera RAM, CD, DVD dan peranti storan USB. Ia menyalin data dari satu peranti blok ke peranti lain, meninggalkan blok data yang rosak dan hanya memindahkan blok data yang baik. ddreasue ialah alat pemulihan yang berkuasa yang automatik sepenuhnya kerana ia tidak memerlukan sebarang gangguan semasa operasi pemulihan. Selain itu, terima kasih kepada fail peta ddasue, ia boleh dihentikan dan disambung semula pada bila-bila masa. Ciri-ciri utama lain DDREASE adalah seperti berikut: Ia tidak menimpa data yang dipulihkan tetapi mengisi jurang sekiranya pemulihan berulang. Walau bagaimanapun, ia boleh dipotong jika alat itu diarahkan untuk melakukannya secara eksplisit. Pulihkan data daripada berbilang fail atau blok kepada satu

Sumber terbuka! Di luar ZoeDepth! DepthFM: Anggaran kedalaman monokular yang cepat dan tepat! Sumber terbuka! Di luar ZoeDepth! DepthFM: Anggaran kedalaman monokular yang cepat dan tepat! Apr 03, 2024 pm 12:04 PM

0. Apakah fungsi artikel ini? Kami mencadangkan DepthFM: model anggaran kedalaman monokular generatif yang serba boleh dan pantas. Sebagai tambahan kepada tugas anggaran kedalaman tradisional, DepthFM juga menunjukkan keupayaan terkini dalam tugas hiliran seperti mengecat kedalaman. DepthFM cekap dan boleh mensintesis peta kedalaman dalam beberapa langkah inferens. Mari kita baca karya ini bersama-sama ~ 1. Tajuk maklumat kertas: DepthFM: FastMonocularDepthEstimationwithFlowMatching Pengarang: MingGui, JohannesS.Fischer, UlrichPrestel, PingchuanMa, Dmytr

Google gembira: prestasi JAX mengatasi Pytorch dan TensorFlow! Ia mungkin menjadi pilihan terpantas untuk latihan inferens GPU Google gembira: prestasi JAX mengatasi Pytorch dan TensorFlow! Ia mungkin menjadi pilihan terpantas untuk latihan inferens GPU Apr 01, 2024 pm 07:46 PM

Prestasi JAX, yang dipromosikan oleh Google, telah mengatasi Pytorch dan TensorFlow dalam ujian penanda aras baru-baru ini, menduduki tempat pertama dalam 7 penunjuk. Dan ujian tidak dilakukan pada TPU dengan prestasi JAX terbaik. Walaupun dalam kalangan pembangun, Pytorch masih lebih popular daripada Tensorflow. Tetapi pada masa hadapan, mungkin lebih banyak model besar akan dilatih dan dijalankan berdasarkan platform JAX. Model Baru-baru ini, pasukan Keras menanda aras tiga hujung belakang (TensorFlow, JAX, PyTorch) dengan pelaksanaan PyTorch asli dan Keras2 dengan TensorFlow. Pertama, mereka memilih satu set arus perdana

Kelajuan Internet Data Selular Perlahan pada iPhone: Pembetulan Kelajuan Internet Data Selular Perlahan pada iPhone: Pembetulan May 03, 2024 pm 09:01 PM

Menghadapi ketinggalan, sambungan data mudah alih perlahan pada iPhone? Biasanya, kekuatan internet selular pada telefon anda bergantung pada beberapa faktor seperti rantau, jenis rangkaian selular, jenis perayauan, dsb. Terdapat beberapa perkara yang boleh anda lakukan untuk mendapatkan sambungan Internet selular yang lebih pantas dan boleh dipercayai. Betulkan 1 – Paksa Mulakan Semula iPhone Kadangkala, paksa memulakan semula peranti anda hanya menetapkan semula banyak perkara, termasuk sambungan selular. Langkah 1 – Hanya tekan kekunci naikkan kelantangan sekali dan lepaskan. Seterusnya, tekan kekunci Turun Kelantangan dan lepaskannya semula. Langkah 2 - Bahagian seterusnya proses adalah untuk menahan butang di sebelah kanan. Biarkan iPhone selesai dimulakan semula. Dayakan data selular dan semak kelajuan rangkaian. Semak semula Betulkan 2 – Tukar mod data Walaupun 5G menawarkan kelajuan rangkaian yang lebih baik, ia berfungsi lebih baik apabila isyarat lemah

Daya hidup kecerdasan super membangkitkan! Tetapi dengan kedatangan AI yang mengemas kini sendiri, ibu tidak perlu lagi bimbang tentang kesesakan data Daya hidup kecerdasan super membangkitkan! Tetapi dengan kedatangan AI yang mengemas kini sendiri, ibu tidak perlu lagi bimbang tentang kesesakan data Apr 29, 2024 pm 06:55 PM

Saya menangis hingga mati. Dunia sedang membina model besar. Data di Internet tidak mencukupi. Model latihan kelihatan seperti "The Hunger Games", dan penyelidik AI di seluruh dunia bimbang tentang cara memberi makan data ini kepada pemakan yang rakus. Masalah ini amat ketara dalam tugas berbilang modal. Pada masa mereka mengalami kerugian, pasukan pemula dari Jabatan Universiti Renmin China menggunakan model baharu mereka sendiri untuk menjadi yang pertama di China untuk menjadikan "suapan data yang dijana model itu sendiri" menjadi kenyataan. Selain itu, ia merupakan pendekatan serampang dua mata dari segi pemahaman dan sisi penjanaan Kedua-dua pihak boleh menjana data baharu berbilang modal yang berkualiti tinggi dan memberikan maklum balas data kepada model itu sendiri. Apakah model? Awaker 1.0, model berbilang modal besar yang baru sahaja muncul di Forum Zhongguancun. Siapa pasukan itu? Enjin Sophon. Diasaskan oleh Gao Yizhao, pelajar kedoktoran di Sekolah Kecerdasan Buatan Hillhouse Universiti Renmin.

Tentera Udara A.S. mempamerkan jet pejuang AI pertamanya dengan profil tinggi! Menteri secara peribadi menjalankan pandu uji tanpa campur tangan semasa keseluruhan proses, dan 100,000 baris kod telah diuji selama 21 kali. Tentera Udara A.S. mempamerkan jet pejuang AI pertamanya dengan profil tinggi! Menteri secara peribadi menjalankan pandu uji tanpa campur tangan semasa keseluruhan proses, dan 100,000 baris kod telah diuji selama 21 kali. May 07, 2024 pm 05:00 PM

Baru-baru ini, bulatan tentera telah terharu dengan berita: jet pejuang tentera AS kini boleh melengkapkan pertempuran udara automatik sepenuhnya menggunakan AI. Ya, baru-baru ini, jet pejuang AI tentera AS telah didedahkan buat pertama kali, mendedahkan misterinya. Nama penuh pesawat pejuang ini ialah Variable Stability Simulator Test Aircraft (VISTA). Ia diterbangkan sendiri oleh Setiausaha Tentera Udara AS untuk mensimulasikan pertempuran udara satu lawan satu. Pada 2 Mei, Setiausaha Tentera Udara A.S. Frank Kendall berlepas menggunakan X-62AVISTA di Pangkalan Tentera Udara Edwards Ambil perhatian bahawa semasa penerbangan selama satu jam, semua tindakan penerbangan telah diselesaikan secara autonomi oleh AI! Kendall berkata - "Sejak beberapa dekad yang lalu, kami telah memikirkan tentang potensi tanpa had pertempuran udara-ke-udara autonomi, tetapi ia sentiasa kelihatan di luar jangkauan." Namun kini,

Robot pertama yang menyelesaikan tugas manusia secara autonomi muncul, dengan lima jari fleksibel dan kelajuan manusia luar biasa, dan model besar menyokong latihan angkasa maya Robot pertama yang menyelesaikan tugas manusia secara autonomi muncul, dengan lima jari fleksibel dan kelajuan manusia luar biasa, dan model besar menyokong latihan angkasa maya Mar 11, 2024 pm 12:10 PM

Minggu ini, FigureAI, sebuah syarikat robotik yang dilaburkan oleh OpenAI, Microsoft, Bezos, dan Nvidia, mengumumkan bahawa ia telah menerima hampir $700 juta dalam pembiayaan dan merancang untuk membangunkan robot humanoid yang boleh berjalan secara bebas dalam tahun hadapan. Dan Optimus Prime Tesla telah berulang kali menerima berita baik. Tiada siapa yang meragui bahawa tahun ini akan menjadi tahun apabila robot humanoid meletup. SanctuaryAI, sebuah syarikat robotik yang berpangkalan di Kanada, baru-baru ini mengeluarkan robot humanoid baharu, Phoenix. Pegawai mendakwa bahawa ia boleh menyelesaikan banyak tugas secara autonomi pada kelajuan yang sama seperti manusia. Pheonix, robot pertama di dunia yang boleh menyelesaikan tugas secara autonomi pada kelajuan manusia, boleh mencengkam, menggerakkan dan meletakkan setiap objek secara elegan di sisi kiri dan kanannya dengan perlahan. Ia boleh mengenal pasti objek secara autonomi

Robot Tesla bekerja di kilang, Musk: Tahap kebebasan tangan akan mencapai 22 tahun ini! Robot Tesla bekerja di kilang, Musk: Tahap kebebasan tangan akan mencapai 22 tahun ini! May 06, 2024 pm 04:13 PM

Video terbaru robot Tesla Optimus dikeluarkan, dan ia sudah boleh berfungsi di kilang. Pada kelajuan biasa, ia mengisih bateri (bateri 4680 Tesla) seperti ini: Pegawai itu juga mengeluarkan rupanya pada kelajuan 20x - pada "stesen kerja" kecil, memilih dan memilih dan memilih: Kali ini ia dikeluarkan Salah satu sorotan video itu ialah Optimus menyelesaikan kerja ini di kilang, sepenuhnya secara autonomi, tanpa campur tangan manusia sepanjang proses. Dan dari perspektif Optimus, ia juga boleh mengambil dan meletakkan bateri yang bengkok, memfokuskan pada pembetulan ralat automatik: Berkenaan tangan Optimus, saintis NVIDIA Jim Fan memberikan penilaian yang tinggi: Tangan Optimus adalah robot lima jari di dunia paling cerdik. Tangannya bukan sahaja boleh disentuh

See all articles