MySQL基础(二:常用数据类型及MySQL创建过程实例)

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介: MySQL基础(二:常用数据类型及MySQL创建过程实例)

常用数据类型

整数型:

int:
    int 是常用的整数类型,占用4个字节(32位)的存储空间
    有符号的情况下,其范围是从-2^31 (-2147483648) 到 2^31-1 (2147483647)
    无符号的情况下,其范围是从0到2^32-1 (4294967295)
-----------------------
列名称 int unsigned    # 加unsigned不带符号||不加默认带符号
tinyint:
    tinyint 是最小的整数类型,占用1个字节(8位)的存储空间
    有符号的情况下,其范围是从-128到127
    无符号的情况下,其范围是从0到255
-----------------------
列名称 tinyint unsigned    # 加unsigned不带符号||不加默认带符号
bigint:
    bigint 是最大的整数类型,占用8个字节(64位)的存储空间
    有符号的情况下,其范围是从-2^63 (-9223372036854775808) 到 2^63-1 (9223372036854775807)
    无符号的情况下,其范围是从0到2^64-1 (18446744073709551615)
-----------------------
列名称 bigint unsigned    # 加unsigned不带符号||不加默认带符号

小数型:

float:
    float 是一种浮点数类型,它允许存储单精度浮点数.
    存储空间:
        通常占用4个字节(32位),其中1位用于符号位,8位用于指数,剩下的23位用于尾数(精度).
    精度范围:
        大约能提供6到7位的有效数字,但不保证完全精确,因为浮点数在计算机内部是近似表示的.
double:
    double 也属于浮点数类型,但它是双精度浮点数.
    存储空间:
        通常占用8个字节(64位),结构类似于 float,只是指数和尾数的位数更多.
    精度范围:
        double 可以提供更高的精度,约15位有效数字,同样不保证完全精确.
decimal:
    decimal 是一种定点数类型,用于存储精确的小数,特别适合货币、财务等对精度要求高的场景.
    存储空间:
        根据指定的精度(M)和小数位数(D)而变化,最多可以达到65位数字的精度,其中M代表总的位数(包括整数部分和小数部分),D表示小数部分的位数.
    精度范围:
        decimal 类型可以非常精确地表示数值,但要注意较大的M和D值可能会消耗较多的空间.
例子-------------------------
    create table little(id int not null primary key auto_increment,first decimal(8,2))default charse
t=utf8;
-------------------------
    insert into little(first) values(1.2222);
-------------------------
    select * from little;
-------------------------

屏幕截图 2024-04-26 230555.png

字符串:

char(消耗空间大,搜索速度快):定长字符串,固定用n(最大255)个字符串进行存储,即使没有n个字符,也会按照n来存储
    含义:
        固定长度的字符串类型,指定长度n,存储的字符数最多为n个.
    作用:
        适用于存储长度固定的短字符串,如身份证号码、邮政编码等.
    特点:
        即使实际输入的字符少于n,MySQL也会在右侧补足空格使其达到n个字符长度.
        固定长度使得查询效率较高,因为MySQL知道每个记录中该字段的大小一致,利于内存和磁盘的优化.
        空间利用率不高,如果存储的数据往往小于定义长度,会造成空间浪费.
varchar(消耗空间小,搜索速度慢):变长字符串,真实数据有所长就按照多长存储,最大655字节
    含义:
        变长字符串类型,指定长度n,存储的字符数最多为n个,存储空间随实际内容动态调整.
    作用:
        适用于存储长度可变的字符串,如姓名、地址等.
    特点:
        存储时不填充空格,只会存储实际内容和必要的字符长度信息.
        查询效率相比CHAR略低,但节省空间,尤其适合大部分数据长度不一致的情况.
text:
    含义:
        大文本类型,可以存储多达65,535(2^16-1)个字符的文本数据.
    作用:
        适用于存储较长的文章、描述、产品说明等.
    特点:
        TEXT列的数据不在行内存储,而是单独存储在外部区域,因此不会影响主键索引的大小.
        不支持全文索引,默认情况下只能建立前缀索引.
        直接比较和排序TEXT类型的数据可能会影响性能.
mediumtext:
    含义:
        更大的文本类型,可以存储多达16,777,215(即2^24-1)个字符的文本数据.
    作用:
        适用于存储超长的文档、报告、日志记录等.
    特点:
        与TEXT类型相似,但是存储容量更大,其他特性保持一致
longtext:
    含义:
        最大的文本类型,可以存储多达4,294,967,295(即2^32-1)个字符的文本数据.
    作用:
        用于存储极其庞大的文本数据,如大型数据库的备份、大数据分析结果等.
    特点:
        与TEXT和MEDIUMTEXT类似,但存储容量进一步增大,适用于存储极度庞大的文本内容.

时间型:

time(仅包含时间):
    含义:
        time 数据类型用于存储时间值,不包含日期部分。它能够存储一天中的时间,即小时、分钟和秒,有的数据库系统还支持存储微秒或毫秒级别的精度,即'-838:59:59' 到 '838:59:59' 的时间范围,表示从-838小时59分钟59秒到838小时59分钟59秒的时间跨度。
    格式:
        通常表示为 HH:MM:SS,其中 HH 表示小时(00到23),MM 表示分钟(00到59),SS 表示秒(00到59)。有些情况下,还可以包括毫秒或微秒,如 HH:MM:SS.mmm。
date(仅包含日期):
    含义:
        DATE类型仅用于存储日期信息,不包含时间部分。它的范围是从 '1000-01-01' 到 '9999-12-31'。
    格式:
        存储和显示格式为 'YYYY-MM-DD',仅关注年、月、日。
datetime(不仅包含时间还包含日期):
    含义:
        datatime 数据类型用于存储同时包含日期和时间的信息。它能够存储一个具体的日期加上具体的时间点,覆盖的范围广泛,'1000-01-01 00:00:00' 到 '9999-12-31 23:59:59' 的日期时间范围。
    格式:
        一般格式为 YYYY-MM-DD HH:MM:SS,其中 YYYY 表示年份,MM 表示月份,DD 表示日期,后面跟着时间的小时、分钟和秒。同样,某些数据库系统也支持到毫秒或微秒级别的精度。

实例(从头开始进行演示)

    mysql -uroot -p    # 登录mysql,命令输入完成后输入密码
    #    (若环境变量设置完成可直接cmd运行此命令,反之则设置环境变量,或者在mysql.exe的文件中运行cmd后在执行此命令)
    mysql -hlocalhost/*登陆地址*/ -uroot/*用户名*/ -p    # 登录mysql,命令输入完成后输入密码
    show databases;    # 查看现有数据库
    +--------------------+
    | Database           |
    +--------------------+
    | lizi               |
    | users              |
    +--------------------+
    create database lizi default charset utf8 collate utf8_general_ci;    # 建立名为lizi的数据库,设置默认字符集为utf8,默认校对规则为utf8_general_ci
    use lizi; # 使用lizi数据库
    create table  tablelizi /*创建名为tablelizi的数据表*/ (`liziID`/*设置第一个列表名为liziID*/ int/*数据类型为整数型*/ auto_increment/*内容从1开始自增*/ primary key/*设置为主链*/,`liziname`/*设置第二个列表名为liziname*/ varchar(16)/*设置数据最大为16个字符*/ default 'morenshujv'/*如果不输入liziname的数据,将自动默认输入为morenshujv*/,`lizipaword`/*设置第三个列表名为lizipaword*/ varchar(20)/*设置数据最大为16个字符*/ not null/*数据输入不允许为空*/)engine=innodb/*指定使用innodb储存引擎*/ default charset=utf8/*默认字符集为utf8*/;
    show tables;    # 查看lizi中的数据表
    +----------------+
    | Tables_in_lizi |
    +----------------+
    | tablelizi      |
    +----------------+
    insert into `tablelizi`(`lizipaword`) values('lizi123');    # 使用默认liziname,插入lizipaword为'lizi123'的数据
    insert into `tablelizi`(`liziname`,`lizipaword`) values('admin','admin');    # 插入liziname为'admin',lizipaword为'admin'的数据
    select * from `tablelizi`;    # 查询tablelizi中的所有数据
    +--------+------------+------------+
    | liziID | liziname   | lizipaword |
    +--------+------------+------------+
    |      1 | morenshujv | lizi123    |
    |      2 | admin      | admin      |
    +--------+------------+------------+
    select * from `tablelizi` where`liziID`='1';#查询tablelizi中liziID等于1的一行的所有数据(此处可以SQL注入)
    +--------+------------+------------+
    | liziID | liziname   | lizipaword |
    +--------+------------+------------+
    |      1 | morenshujv | lizi123    |
    +--------+------------+------------+
    select `liziID` from `tablelizi`;    # 查询tablelizi中liziID这一列的数据
    +--------+
    | liziID |
    +--------+
    |      1 |
    |      2 |
    +--------+
    select `liziname` from `tablelizi` where `lizipaword`='lizi123';    # 查询tablelizi中lizipaword等于lizi123一行的liizname的数据
    +------------+
    | liziname   |
    +------------+
    | morenshujv |
    +------------+
    drop table tablelizi;    # 删除名为tablelizi的数据表
    show tables;    # 查看数据表
    drop database lizi;    # 删除名为lizi的数据库
    show databases;    # 查看数据库
    +--------------------+
    | Database           |
    +--------------------+
    | users              |
    +--------------------+
    exit    # 退出数据库
相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
19天前
|
存储 关系型数据库 MySQL
环比、环比增长率、同比、同比增长率 ,占比,Mysql 8.0 实例(最简单的方法之一)(sample database classicmodels _No.2 )
环比、环比增长率、同比、同比增长率 ,占比,Mysql 8.0 实例(最简单的方法之一)(sample database classicmodels _No.2 )
71 1
|
19天前
|
SQL 前端开发 关系型数据库
全表数据核对 ,行数据核对,列数据核对,Mysql 8.0 实例(sample database classicmodels _No.3 )
全表数据核对 ,行数据核对,列数据核对,Mysql 8.0 实例(sample database classicmodels _No.3 )
36 0
全表数据核对 ,行数据核对,列数据核对,Mysql 8.0 实例(sample database classicmodels _No.3 )
|
21天前
|
关系型数据库 MySQL Java
Django学习二:配置mysql,创建model实例,自动创建数据库表,对mysql数据库表已经创建好的进行直接操作和实验。
这篇文章是关于如何使用Django框架配置MySQL数据库,创建模型实例,并自动或手动创建数据库表,以及对这些表进行操作的详细教程。
54 0
Django学习二:配置mysql,创建model实例,自动创建数据库表,对mysql数据库表已经创建好的进行直接操作和实验。
|
26天前
|
关系型数据库 MySQL 数据库
MySQL数据库基础(数据库操作,常用数据类型,表的操作)
MySQL数据库基础(数据库操作,常用数据类型,表的操作)
33 5
|
1月前
|
存储 关系型数据库 MySQL
MySQL支持多种数据类型
MySQL支持多种数据类型
86 3
|
1月前
|
存储 关系型数据库 MySQL
什么是mysql的数据类型?
什么是mysql的数据类型?
44 2
|
1月前
|
存储 关系型数据库 MySQL
MySQL数据类型
MySQL数据类型
49 2
|
18天前
|
存储 关系型数据库 MySQL
mysql 8.0 的 建表 和八种 建表引擎实例
mysql 8.0 的 建表 和八种 建表引擎实例
18 0
|
19天前
|
存储 关系型数据库 MySQL
Key_Value 形式 存储_5级省市城乡划分代码 (mysql 8.0 实例)
本文介绍了如何使用MySQL8.0数据库中的Key_Value形式存储全国统计用区划代码和城乡划分代码(5级),包括导入数据、通过数学函数提取省市区信息,以及查询5级行政区划的详细数据。
26 0
|
19天前
|
算法 关系型数据库 MySQL
复购率 mysql 实例(sample database classicmodels _No.1 )
复购率 mysql 实例(sample database classicmodels _No.1 )
24 0