美文网首页
MySQL 数据类型-2

MySQL 数据类型-2

作者: Aaron_Alphabet | 来源:发表于2017-08-22 18:41 被阅读0次

数据类型

数值类型

整型
-TINYINT -SMALLINT -MEDIUMINT -INT -BIGINT

关键词:ZEROFILL(零填充) 、 UNSIGNED(无符号) 、 AUTO_INCREMENT(自动递增) 、 NOT NULL(非空) 、 PRIMARY KEY(主键) 、 UNIQUE(外键)

1)定义了ZEAROFILL的都自动添加unsigned 属性。
2)任何想要使用auto_increment的列,应定义NOT NULL ,并定义为 primary key或者是unique。
mysql> CREATE TABLE t1(
    -> id1 INT,
    -> id2 INT(5));
数值类型.png

浮点数

浮点数和定点数
单精度:FLOAT(X,Y) 双精度:DOUBLE(X,Y) 定点:DECIMAL(X,Y)

浮点数如果不写精度,就按照输入的精度显示,定点数如果不写精度,就按照DECIMAL(10,0)
浮点数和定点数.png

日期和时间类型

-DATE
-DATETIME
-TIMESTAMP
-TIME
-YEAR

日期和时间类型.png 日期和时间类型.png

DATETIME是DATE和TIME的组合

mysql> DROP TABLE t1;
mysql> CREATE TABLE t (
    -> d date,
    -> t time,
    -> dt datetime);
mysql> DESC t;
+-------+----------+------+-----+---------+-------+
| Field | Type     | Null | Key | Default | Extra |
+-------+----------+------+-----+---------+-------+
| d     | date     | YES  |     | NULL    |       |
| t     | time     | YES  |     | NULL    |       |
| dt    | datetime | YES  |     | NULL    |       |
+-------+----------+------+-----+---------+-------+
mysql> INSERT INTO t(d,t,dt) VALUES(NOW(),NOW(),NOW());
mysql> SELECT * FROM t;
+------------+----------+---------------------+
| d          | t        | dt                  |
+------------+----------+---------------------+
| 2017-08-22 | 07:29:58 | 2017-08-22 07:29:58 |
+------------+----------+---------------------+

TIMESTAMP 时间戳

MySQL中只能有一列默认为CURRENT_TIMESTAMP;另外TIMESTAMP与时区有关,当插入时间时会先转换为本地时间存储,所以同一个时间在不同地区看到的时间可能不是一样的。

mysql> ALTER TABLE t ADD id1 TIMESTAMP;
mysql> SELECT * FROM t;

+------------+----------+---------------------+---------------------+
| d          | t        | dt                  | id1                 |
+------------+----------+---------------------+---------------------+
| 2017-08-22 | 07:29:58 | 2017-08-22 07:29:58 | 2017-08-22 07:38:20 |
+------------+----------+---------------------+---------------------+
mysql> ALTER TABLE t ADD id2 TIMESTAMP;
mysql> SELECT * FROM t;
+------------+----------+---------------------+---------------------+---------------------+
| d          | t        | dt                  | id1                 | id2                 |
+------------+----------+---------------------+---------------------+---------------------+
| 2017-08-22 | 07:29:58 | 2017-08-22 07:29:58 | 2017-08-22 07:38:20 | 0000-00-00 00:00:00 |
+------------+----------+---------------------+---------------------+---------------------+

时区相关

创建表
mysql> CREATE TABLE t8(
    -> id1 TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
    -> id2 DATETIME DEFAULT NULL);
**查看当前时区**
mysql> SHOW VARIABLES LIKE "TIME_ZONE";
+---------------+--------+
| Variable_name | Value  |
+---------------+--------+
| time_zone     | SYSTEM |
+---------------+--------+

mysql> INSERT INTO t8 VALUES(NOW(),NOW());
mysql> SELECT * FROM t8;
+---------------------+---------------------+
| id1                 | id2                 |
+---------------------+---------------------+
| 2017-08-22 07:55:17 | 2017-08-22 07:55:17 |
+---------------------+---------------------+

**修改为东九区**
mysql> SET TIME_ZONE='+9:00';
mysql> SELECT * FROM t8;
+---------------------+---------------------+
| id1                 | id2                 |
+---------------------+---------------------+
| 2017-08-22 08:55:17 | 2017-08-22 07:55:17 |
+---------------------+---------------------+
时间戳说明

字符串类型###

-CHAR
-VARCHAR
-BINARY
-VARBINARY
-BLOB
-TEXT
-ENUM
-SET

字符类型

CHAR VARCHAR类型
NULL
BINARY VARBINARY类型
NULL
ENUM类型(枚举类型)

枚举类型
mysql> CREATE TABLE t(
    -> id INT(10) AUTO_INCREMENT PRIMARY KEY,
    -> sex ENUM("male","female")
    -> );

mysql> DESC t;
+-------+-----------------------+------+-----+---------+----------------+
| Field | Type                  | Null | Key | Default | Extra          |
+-------+-----------------------+------+-----+---------+----------------+
| id    | int(10)               | NO   | PRI | NULL    | auto_increment |
| sex   | enum('male','female') | YES  |     | NULL    |                |
+-------+-----------------------+------+-----+---------+----------------+

只允许从值的集合中选取值,而且不能一次取多个值

mysql> INSERT INTO t(sex) VALUES(NULL),("male"),("female"),("A");
ERROR 1265 (01000): Data truncated for column 'sex' at row 4

mysql> INSERT INTO t(sex) VALUES(NULL),("male"),("female");
mysql> SELECT * FROM t;
+----+--------+
| id | sex    |
+----+--------+
|  1 | NULL   |
|  2 | male   |
|  3 | female |
+----+--------+

SET类型

set类型
   为表t增加字段love
mysql> ALTER TABLE t ADD love SET("A","B","C");
mysql> UPDATE t SET love="a" WHERE id = 1;
mysql> SELECT * FROM t;
+----+--------+------+
| id | sex    | love |
+----+--------+------+
|  1 | NULL   | NULL |
|  2 | male   | NULL |
|  3 | female | NULL |
+----+--------+------+
   修改id=1的love的值
mysql> UPDATE t SET love="a" WHERE id = 1;
mysql> SELECT * FROM t;
+----+--------+------+
| id | sex    | love |
+----+--------+------+
|  1 | NULL   | A    |
|  2 | male   | NULL |
|  3 | female | NULL |
+----+--------+------+
   love=2 的时候一样可以修改记录
mysql> UPDATE t SET love=2 WHERE id = 1;
mysql> SELECT * FROM t;
+----+--------+------+
| id | sex    | love |
+----+--------+------+
|  1 | NULL   | B    |
|  2 | male   | NULL |
|  3 | female | NULL |
+----+--------+------+

相关文章

  • MySQL学习笔记(4) - 数据类型和运算符

    1. 背景 本文讲MySQL的数据类型和运算符。 2.数据类型 MySQL 支持多种数据类型,主要有: (1) 数...

  • MySQL应用技术3 — MVCC

    MySQL应用技术1 — MySQL架构简介MySQL应用技术2 — 事务简介MySQL应用技术4 — 数据类型选...

  • MySQL数据库DDL、DML详解

    一、MySQL数据库数据类型 <1> MySQL数据库中支持多种数据类型 数值型 字符型 日期型 <2> 常用的数...

  • MySQL数据类型

    MySQL学习笔记(2) mysql支持的数据类型 mysql数值类型 关于每个类型的详细信息可以通过 ? int...

  • python基础1

    【易混淆数据类型】 列表list ["python",1,2,3]:mysql取出来的数据类型 元组tuple (...

  • mysql 协议

    mysql 数据类型 Integer mysql的整型有两种 固定长度int<1>int<2>int<3>int<...

  • My SQL 3

    2.1 MySQL 基础 (二)- 表操作 #学习内容# 1. MySQL表数据类型 2. 用SQL语句创建表 ...

  • SQL学习笔记

    一、数据类型 MySQL :int 整型(-2^31 到 2^31-1), bigint 大整型(-2^63到 ...

  • MySql 常用指令

    MySQL常用指令 MySQL 存储引擎 选择 MySQL 数据类型

  • MySql___(4) MySQL 数据类型

    MySQL 数据类型 数值类型 MySQL支持所有标准SQL数值数据类型。这些类型包括严格数值数据类型(INTEG...

网友评论

      本文标题:MySQL 数据类型-2

      本文链接:https://www.haomeiwen.com/subject/eynldxtx.html