MySQL数据库(三):数据类型

时间:2022-05-05
本文章向大家介绍MySQL数据库(三):数据类型,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

安装环境: 操作系统版本:RHEL 6.5 版本:MYSQL 5.5 常见的信息种类: 数值型:一般用于体重、身高、成绩、工资 字符型:一般用于姓名、工作单位、通信地址 枚举型:一般用于兴趣爱好、性别 日期时间型:出生日期、注册日期

一、数值类型 1.1整数型 PS:工作中一般使用INT类型就够了 关于整数型字段 -使用UNSIGNED修饰时,对应的字段只保存正数 -数值不够指定宽度时,在左边填空格补位 -宽度仅仅是显示宽度,存数值的大小由类型决定 -使用关键字ZEROFILL时,填0代替空格补位 -当字段值与类型不匹配时,字段值作为0处理 -数值超出范围时,仅保存最大/最小值

表字段的设置

从左至右依次为: 字段名 | 字段类型 | 是否为空 | 是否为主键 | 默认值 | 描述信息

1.2 浮点类型 关于浮点型字段 -定义格式:float(总宽度,小数位数) -当字段值与类型不匹配时,字段值作为0处理 -数值超出范围时,仅保存最大/最小值

mysql> create table t2(
    -> name varchar(20),
    -> pay float(7,2)
    -> );
Query OK, 0 rows affected (0.00 sec)
 
mysql> desc t2;
+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| name  | varchar(20) | YES  |     | NULL    |       |
| pay   | float(7,2)  | YES  |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+
2 rows in set (0.01 sec)

二、、字符类型 1、定长:char(字符数) -最大长度255字符 -不够指定字符数时在右边用空格补齐 -自动截断超出指定字符数的数据

2、变长:varchar(字符数) -按数据实际大小分配存储空间 -自动截断超出指定字符数的数据

3、大文本类型:text/blob -字符数大于65535存储时使用

mysql> create table t3(
    -> name char(10),
    -> addr varchar(50),
    -> content text
    -> );
Query OK, 0 rows affected (0.00 sec)
 
mysql> desc t3;
+---------+-------------+------+-----+---------+-------+
| Field   | Type        | Null | Key | Default | Extra |
+---------+-------------+------+-----+---------+-------+
| name    | char(10)    | YES  |     | NULL    |       |
| addr    | varchar(50) | YES  |     | NULL    |       |
| content | text        | YES  |     | NULL    |       |
+---------+-------------+------+-----+---------+-------+
3 rows in set (0.00 sec)

三、日期时间类型 1、 DATATIME -占用8个字节 -范围:1000-01-01 00:00:00.000000~9999-12-31 23:59:59.999999

2、 TIMESTAMP -占用4个字节 -范围:1970-01-01 00:00:00.000000~2038-01-19 03:14:07.999999

3、 DATE -占用4个字节 -范围:0001-01-01~9999-12-31

4、YEAR -占用1个字节 -范围:1901-2155

5、TIME -占用3个字节 -格式:HH:MM:SS

例子:

mysql> create table shijian(
    -> datetime DATETIME,
    -> timestamp TIMESTAMP,
    -> date DATE,
    -> year YEAR,
    -> time TIME
    -> );
Query OK, 0 rows affected (0.00 sec)
mysql> insert into shijian values("2016-07-31 10:24:00.000000","2035-1-19 03:14:17.999999","2036-1-1","2037","03:59:00");
Query OK, 1 row affected (0.00 sec)
 
mysql> select * from shijian;
+---------------------+---------------------+------------+------+----------+
| datetime            | timestamp           | date       | year | time     |
+---------------------+---------------------+------------+------+----------+
| 2016-07-31 10:24:00 | 2035-01-19 03:14:17 | 2036-01-01 | 2037 | 03:59:00 |
+---------------------+---------------------+------------+------+----------+
1 row in set (0.00 sec)

6、 关于日期时间字段 当未给TIMESTAMP字段赋值时,自动以当前时间赋值,而DATETIME字段默认赋值为0 4.7 YEAR年份的处理 -默认用4位数字表示 -当只用2位数字赋值时,00-69视为2000~2069年,而70-99视为1970~1999年。

7、 时间函数

-使用select指定输出函数结果

mysql> select now(),sysdate(),curdate();
+---------------------+---------------------+------------+
| now()               | sysdate()           | curdate()  |
+---------------------+---------------------+------------+
| 2016-07-31 10:37:25 | 2016-07-31 10:37:25 | 2016-07-31 |
+---------------------+---------------------+------------+
1 row in set (0.00 sec)

四、枚举类型 1、从给定值集中选择单个值-ENUM -定义格式:

enum(值1,值2,值N)

2、 从给定值集合中选择一个或者多个值-SET -定义格式:

set(值1,值2,值N)

例子:

mysql> create table meiju(
    -> name varchar(20),
    -> gender enum("boy","girl"),
    -> interest set("book","film","music","football")
    -> );
Query OK, 0 rows affected (0.01 sec)