[MySQL]基本数据类型及表的基本操作

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: [MySQL]基本数据类型及表的基本操作


一、常用的数据类型

1.1 数据库表的列类型

数值 1 2 3.14

    • tinyint 十分小的数据 1个字节
    • smallint 较小的数据 2个字节
    • mediumint 中等大小的数据 3个字节
    • int 标准的整数 4个字节
    • big 较大的数据 8个字节
    • float 浮点数 4个字节
    • double 浮点数 小数 8个字节(精度问题)
    • decimal 字符串形式的浮点数 (金融计算的时候一般使用)

    字符串

      • char 固定大小字符串 0-255 char(5) 00001
      • varchar 可变字符串 0-65535 varchar(5) 1
      • tinytext 微型文本 2^8 - 1
      • text 文本串 2^16 -1 保存大文本

      时间日期

        • date YYYY-MM-DD,日期 (year,month,day)
        • time HH: MM : SS 时间格式(hour:minutes,seconds)
        • datetime YYYY-MM-DD HH: MM:SS (年月日,时分秒)最常用的时间格式
        • timestamp 时间戳, 1970.1.1到现在的毫秒数!
        • year 年份

        null

          • 没有值, 未知
          • 注意,不要使用null进行运算,结果肯定为null

            1. 上面看到的这类基本数值数据类型都是有符号的,MySql 也是支持无符号的数据类型,unsigned 作为前缀,但是 官方也建议无符号类型不建议使用,特定情况下会产生很严重的误差,例如,a - b, b > a,但是由于没有符号限制,两者相减反而会产生一个很大的数,在MySql 后续的版本中也不会在支持无符号类型了。
            2. 在使用浮点型数据时,最好选择decimal ,他的精度比 float 、double 更高,语法: decimal(M,N)M : 整个数据的总长度,N:数据小数的位数。例如: 3.14, M = 3, N = 2; 在表示货币的时候我们可以采用 int 类型,这样就不会有精度的问题,采用”分“为单位。例 :123,表示 1.23 元。
            3. 我们在使用时间类型是,不知道该用什么样的格式插入时间,在插入时间的时候,是通过特定的字符串来表示时间日期的,例如: "2023-02-9 16:12:00", 对于字符串来讲 英文单引号或者双引号都可以。日期年月日之间用 '-' 减号连接,与时间之间隔一个空格,时间之间用 ':' 连接。以这样的形式输入的字符串,服务器就会识别为时间。如果我们想使用当前系统时间,SQL 提供了一个返回当前系统时间的函数 now(),这个函数赋值即可。

            二、数据表的基本操作

            书接上篇,我们已经学习了如何操作数据库,本篇学习如何操作数据表,在操作数据表的时候,需要选中数据库;

            2.1 创建和删除表

            声明:本篇博客讲述的是基础操作,关于数据库的字段属性尽请期待下一篇博客。

            基础语法 :

            create table table_name (

            `字段名` [属性] [索引] [注释],

             `字段名` [属性] [索引] [注释],

             ...

             `字段名` [属性] [索引] [注释],

            …… ……

            );

            那么在创建一个表之前呢,也可以判断一下这个表是否存在,就像创建数据库时的操作一样。

            create table if not exists student (

                         ……

            );

            可以使用 comment 增加字段说明,只是给 sql语句提供一个注释作用,在创建的时候。

            例如:

            create table stu_test (

            id int,

            name varchar(20) comment '姓名',

            password varchar(50) comment '密码',

            );

            例题:

            -- 创建学生表(列,字段) 使用SQL创建

            -- 学号int 姓名 varchar(10),varchar性别sex('男','女'),身高decimal(3,2),加入时间 datetime。

            -- 字符串使用 单引号括起来!

            -- 所有语句后面加,(英文的),最后一个不用加

            image.gif编辑 目前我们已经创建好了一个student 的数据表,接下来的操作是查看一下这个表的结构。

            desc teble_name;

            desc ->describe 的缩写,描述一个表的结构。

            image.gif编辑


            创建了一个表,那自然要学习如何删除一个表,。

            删除表(drop):(如果表存在再删除)

            drop table if exists student;

            --当然最稳妥的操作是 指定数据库之后再选择表,这样就可以避免误操作

            drop table if exists school.student;

            --这样删也是可以的,但是更容易报错

            drop table student;

            因为我们是student 数据表是创建在 school 数据库里面,然后可以通过 ‘.’这个符号来约束一下,避免误操作,这也是一种精确表示的方法。

            ==所有的创建和删除操作,尽量加上判断以免报错==


            2.2 修改表的结构(alter)

            -- 修改表结构

            依据上表 student 表为例,如果我们在创建好表的结构之后,难免在会有所纰漏,比如说少添加了一个字段,又或者是发现某个字段不合适需要删除,还有修改字段属性等等……

            2.2.1-- 添加字段

            student 表 新增一个叫做 telephone (手机号)的字段,它的类型是可变字符串。

            语法:add 是关键字

            alter table 【表名】 add 【新增字段名】【属性】 ;

            image.gif编辑


            2.2.2 -- 修改字段 (注意本条语句不修改字段名)

            假如我们发现表中的telephone (手机号)的字段 属性的长度给少了,所以我们需要修改一下这个字段。

            语法:modify 是关键字

            alter table 【表名】 modify 【字段名】【修改后的属性】 ;

            image.gif编辑


            2.2.3 -- 修改字段名

            假如我们发现表中的某个字段的 字段名没取好名,也是可以修改的,例如将 sex 修改为 gender (性别)

            语法: change 是关键字

            alter table 【表名】 change 【原字段名】【修改后的字段名】【属性】 ;

            image.gif编辑


            2.2.4 -- 删除字段

            这个就很好理解了,删除某个字段(列名), 本次删除 telephone 字段。

            语法:

            alter table 【表名】 drop 【字段名】;

            image.gif编辑


            2.2.5 -- 修改表名

            将student 数据表 表名修改为 stud。

            语法:关键字 rename

            alter table 【表名】 rename 【修改后的表名】;

            image.gif编辑 执行语句后表名已经被修改,以上操作,轻易不要操作,容易造成一系列的连锁反应(蝴蝶效应,动了一个表,可能需要修改多个表的数据,关系型数据库),在创建的时候就将表的结构计划好,尽可能的减少表结构的修改。


            2.3 添加数据(insert into )插入

            语法:

            insert into 表名([字段名1,字段名2,字段名3])values('值1'),('值2)',('值3')...

            into 其实可以不用写,可以根据个人意愿决定。

            2.3.1-- 插入时匹配对应的值

            image.gif编辑 这种方式插入数据,需要指定需要插入的列名(字段),然后根据列名(在记录没有约束的情况下)插入数据。

            意思就是你可以只插入“李四" 独占一行。注意观察插入日期的格式。


            2.3.2 -- 不声明字段新增数据,必须把所有字段的值都写上

            image.gif编辑 此处使用now() 函数来插入日期时间。


            2.3.3 -- insert语句后面可以加多个VALUES,可以添加多个数据

            image.gif编辑 多行插入只需要写一个 values 即可,多行插入的性能也是优于 单行插入的,因为MySql 本质上就是客服端服务器的程序,客服端发出指令,服务器进行相应的处理,一行一行的插入意味着反复发送指令,这个点不知道大家能否能 get 到呢?


            注意事项:

            字段和字段之间使用英文逗号隔开

            字段是可以省略的,但是后面的值必须要一一对应

            可以同时插入多条数据,VALUES后面的值需要使用,隔开即可。

            value,是一个具体的值,也可以是一个函数


            2.4 基础查询

            语法:

            SELECT 字段,...FROM 表

            以student 表为例。

            -- 查询所有的员工 SELECT 字段 FROM 表

            如果我们需要一次性查找所有的字段,其实不用讲所有字段全部列举出来,可以使用 ”*“ 来替代。

            image.gif编辑 可以看出两者的结果是一样的。


            -- 查询指定字段,ID + Name

            image.gif编辑-- 别名,给查询结果起一个名字 AS, 可以给字段取别名,也可以给表取别名

            -- as可以加也可以不加

            image.gif编辑 这样看起来舒服多了吧,哈哈,as 不加也可以运行,但是最好是加上,避免将别名看成字段。

            -- 别名可以简化字段或者表的名称,更精准的输入

            -- 给student表起别名为stu

            image.gif编辑 不使用 as 也是可以的,在复杂的查询中,使用别名查询,能提升效率。

            本文图片由保护小周ღ的博客_CSDN博客-C语言,JavaEE,每日一题领域博主提供

            相关实践学习
            如何在云端创建MySQL数据库
            开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
            全面了解阿里云能为你做什么
            阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
            相关文章
            |
            25天前
            |
            关系型数据库 MySQL 数据库
            MySQL数据库基础(数据库操作,常用数据类型,表的操作)
            MySQL数据库基础(数据库操作,常用数据类型,表的操作)
            33 5
            |
            1月前
            |
            存储 关系型数据库 MySQL
            MySQL支持多种数据类型
            MySQL支持多种数据类型
            86 3
            |
            1月前
            |
            存储 关系型数据库 MySQL
            什么是mysql的数据类型?
            什么是mysql的数据类型?
            44 2
            |
            1月前
            |
            存储 关系型数据库 MySQL
            MySQL数据类型
            MySQL数据类型
            49 2
            |
            5月前
            |
            存储 关系型数据库 MySQL
            MySQL数据库的数据类型、语法和高级查询
            MySQL数据库的数据类型、语法和高级查询
            66 0
            |
            3月前
            |
            关系型数据库 MySQL Linux
            数据类型和运算符(MySQL服务器的安装,MySQL客户端,数据类型,运算符,MySQL的语法规范)
            无论是对于初学者还是有经验的开发者,了解MySQL的安装、客户端使用、数据类型、运算符和语法规范都是至关重要的。这不仅有助于高效地管理和查询数据,而且对于设计和实现数据库解决方案来说是基础工作。通过深入学习和实践这些知识,您可以更好地发挥MySQL数据库的强大功能。
            31 2
            |
            3月前
            |
            存储 关系型数据库 MySQL
            MySQL 中的 BLOB 数据类型深入解析
            【8月更文挑战第31天】
            341 0
            |
            3月前
            |
            存储 关系型数据库 MySQL
            |
            3月前
            |
            存储 XML 关系型数据库
            深入理解MySQL中的BLOB和TEXT数据类型
            【8月更文挑战第31天】
            467 0
            |
            3月前
            |
            SQL 关系型数据库 MySQL
            SQL Server、MySQL、PostgreSQL:主流数据库SQL语法异同比较——深入探讨数据类型、分页查询、表创建与数据插入、函数和索引等关键语法差异,为跨数据库开发提供实用指导
            【8月更文挑战第31天】SQL Server、MySQL和PostgreSQL是当今最流行的关系型数据库管理系统,均使用SQL作为查询语言,但在语法和功能实现上存在差异。本文将比较它们在数据类型、分页查询、创建和插入数据以及函数和索引等方面的异同,帮助开发者更好地理解和使用这些数据库。尽管它们共用SQL语言,但每个系统都有独特的语法规则,了解这些差异有助于提升开发效率和项目成功率。
            296 0