第二章 表的操作与数据类型

news2024/11/26 8:44:13

第二章 表的操作

  • 一、表的创建
    • (1)语法
    • (2)示例
  • 二、查看库中所有表以及具体表结构
    • (1)语法
    • (2)示例
  • 三、表的修改
    • (1)语法
    • (2)示例
  • 四、表的删除
    • (1)语法
    • (2)示例
  • 五、数据类型
    • 1、数据类型分类
    • 2、数值类型
      • (1)整数类型
      • (2)位字段:bit类型
        • 基本语法:
        • 显示规则:
      • (3)小数类型
        • a. float 类型
          • 语法
          • 示例
        • b. decimal 类型
          • 语法:
          • decimal和float的区别:
    • 3、字符串类型
      • (1)char
        • 语法
      • (2)varchar
        • 语法:
        • 关于varchar存储字符个数的讨论
        • char与varchar的比较
        • 如何选择定长或变长字符串?
    • 4、日期和时间类型
      • (1)date
      • (2)datetime
      • (3)timestamp
      • 三种日期时间的示例
    • 5、enum和set
      • (1)enum单选类型
        • 语法
      • (2)set多选类型

一、表的创建

(1)语法

create table 表的名称(
名称1 数据类型1,
名称2 数据类型2,
名称3 数据类型3,
....
名称n 数据类型n
)character set 字符集 collate 校验规则 engine 存储引擎;

我们创建的表都是在某一个库下面的,所以在进行创建表的操作之前,我们需要先用use 数据库名称;这一语句进入目标库。

最后的字符集,校验规则,存储引擎也可以不进行设置,如果不设置的话,该表的这些属性将与表所在的库保持一致。

(2)示例

在这里插入图片描述

二、查看库中所有表以及具体表结构

(1)语法

查看所有表:

show tables;

查看具体某个表的结构:

desc 表的名称;

(2)示例

在这里插入图片描述

三、表的修改

(1)语法

在表中插入一个新的变量。

alter table 表的名称 add 变量名称 数据类型;

在表中修改某个变量的属性

alter table 表的名称 modify 变量名称 数据类型;

删除表中的某一个变量

alter table 表的名称 drop 变量名称;

修改表的名称

alter table 表的名称 rename to 新名称;

(2)示例

在T1的表中添加一个名为age的新变量。
在这里插入图片描述
将T1表中name的数据类型改为varchar(30)。
在这里插入图片描述
删除T1表中的age变量。
在这里插入图片描述
将刚刚的T1表的名称修改为TTT。
在这里插入图片描述

四、表的删除

(1)语法

drop table 表的名称;

(2)示例

删除名为TTT的表。
在这里插入图片描述

五、数据类型

通过上面的讲解,我们发现这些语句是比较简单的,但是最让我们感到困惑的其实是这些变量的数据类型。因此,作者将为大家讲解一下mysql数据库中常见的数据类型。

1、数据类型分类

在这里插入图片描述

2、数值类型

(1)整数类型

数值类型与我们在c/c++中学习的int是很类似的,大家只需要根据数据范围合理选择即可。
在这里插入图片描述

(2)位字段:bit类型

基本语法:

bit(m)

bit类型是是一个位字段类型,位数的长度范围是从1到64,如果在使用bit的时候,我们没有规定位的长度则默认长度为1,即1位。

显示规则:

当我们给bit类型的变量赋值的时候 ,bit字段并不会直接显示该数字,而是在ASCII码中找到对应的字符打印出来。

如果我们有这样的值,只存放0或1,这时可以定义bit(1)。这样可以节省空间。

如下图所示:

在这里插入图片描述
我们插入了一个10,但是并没有显示,但是我们插入一个65,根据ASCII码表,65代表的是字符A,因此,打印出了一个A。

(3)小数类型

a. float 类型

float是小数类型,占用空间四个字节。

语法
float(m,d) m指的是显示长度,d是小数部分的位数。
float(m,d) unsigned 指的是无符号小数。

注意:mysql在保存小数的时候,多余的位数会根据四舍五入规则进行取舍。

示例

假如我们定义:float(4, 2),那么这个变量的取值范围则是:-99.99 ~ 99.99

比如我们创建一个表,其中只包含一个float(4,2)类型。如下图:
在这里插入图片描述
现在我们向这个表中插入三个数据,这三个数据分别是:89.99、89.993、89.999。
在这里插入图片描述
我们发现,根据我们小数位数的设定,mysql对我们的数据做了四舍五入的处理。

假设我们插入一个大于数据范围的数字呢?
在这里插入图片描述
此时mysql会出现报错,mysql会提示我们,我们插入的数据超出了预定的范围。

b. decimal 类型

语法:
decimal(m,d)  指定长度为m,小数位数为d的浮点数。
decimal(m, d) unsigned 指的是无符号小数。
decimal和float的区别:

float与decimal表示的精度是不一样的。float表示的精度大约是7位,decimal整数最大位数m为65位,支持小数最大位数d是30位。如果d被忽略,默认为0。如果m被省略,则默认是10。如果希望小数的精度高,推荐使用decimal。

我们可以通过下面的示例来证明二者的精度问题。
在这里插入图片描述
我们发现,我们向float和decimal类型变量中,同时插入数据:23.12345612。
当我们查看数据的时候,我们发现float类型的a1在存储这个数据的时候,数据发生了错误。

3、字符串类型

(1)char

语法

char(l)   :固定长度的字符串,L是该字符串可以存储的字符数量。最多能够存储255个字符。

比如:
char(2),这个变量表示可以存放两个字符,字符可以是汉字也可以是字母。
在这里插入图片描述

(2)varchar

语法:

varchar(L):可变长度字符串,L表示字符个数,最大长度为65535字节(这里的单位是字节,不是字符)。

关于varchar存储字符个数的讨论

varchar(len),这个len到底是多大,其实是与表的编码密切相关的。varchar变量中会用1~3个字节来记录数据大小,所以说varchar的有效字节数是65532。
当我们表的编码是utf8的时候,一个字符占用3个字节,因此Len = (65532 / 3)= 21844。如果编码是gbk的话,因此len=65532/2=32766。

char与varchar的比较

在这里插入图片描述

如何选择定长或变长字符串?

  • 如果数据确定长度都一样,就使用定长。
  • 如果数据的长度是有变化的,就使用变长的。
  • 定长的磁盘空间比较浪费,但是效率高。
  • 变长的磁盘空间比较节省,但是效率低。

4、日期和时间类型

(1)date

date表示日期,日期表示的形式为:yyyy-mm-dd,共占用三个字节。

(2)datetime

datetime表示的是时间+日期,表示的格式为:yyyy-mm-dd HH:ii:ss,占用八个字节。

(3)timestamp

时间戳,从1970年开始,其表示格式与datetime完全一致,占用四个字节。

三种日期时间的示例

我们先创建一个名称为T2的表,该表中有三个变量,分别为t1,t2,t3。三个变量的类型分别为:date,datetime,timestamp。
在这里插入图片描述
现在我们开始向里面插入数据,这里我们只插入t1和t2。
在这里插入图片描述
现在我们看一下表中的数据。
在这里插入图片描述
我们发现t1和t2所表示的数据就是我们插入的,但是我们并没有插入t3的时间。但在表格中出现了t3的数据。这个数据其实作者现在写这篇文章的时间,即我们插入这个数据的时间。

由此,我们就可以发现,时间戳会自动填充上我们插入或修改某行数据的时间。

5、enum和set

(1)enum单选类型

enum是一个单选类型,那么什么是单选类型呢?

比如说我们现在想让用户填写性别,那么对于性别而言,无非就是男生或者女生,二选一即可。那么此时我们可以提供选项,让用户直接选择。

该类型的好处在于,约束用户的输入同时节约空间。当我们用enum设置好选项后,如果用户输入了选项之外的数据内容,mysql会发生报错。因此,使用enum可以约束用户的输入,保证数据的合理性。

此外,当我们设置了选项后,mysql在存储的时候不会存储选项内容,而是存储该选项的标号。这样就能够用一个字符代替一个很长的选项,从而达到了节约空间的目的。

语法

enum('选项1','选项2,'选项3'....)

比如我们创建一个名称为T4的表,表中存储的是enum类型的变量。同时我们插入两组数据。
在这里插入图片描述
如上图所示,我们插入了两组数据,一组数据插入的选项内容,一组数据插入的是选项编号。最终都能成功插入,数据内容如下。
在这里插入图片描述

(2)set多选类型

set是一个多选数据类型,即用户可以在选项中选择多个。那么在插入数据的时候同样有两种插入方式。一种是按照数据内容拆入。另外一种方式是二进制的方式插入。比如我们插入一个3,3的二进制011,即我们选择第一个和第二个选项。

set('选项1','选项2,'选项3'....)

我们同样创建一个只有set的表,并且用两种方式向表格中插入数据,最终的效果如下图所示。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/773816.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

cesium实战(1)、cesium 加载本地json、GeoJson数据

1、cesium加载本地图层json图层数据 并设置样式 添加图层 // 加载路网数据 wms数据服务let addRoadLayer () > {Cesium.GeoJsonDataSource.load(/cesium/layers/road_84.json, {stroke: Cesium.Color.YELLOW,//多边形或线的颜色 strokeWidth: 3,//多边形或线 宽度clampToG…

win10/win11 无线显示器 启用输入 的问题分析与解决

win10、win11系统自带了“无线显示器”应用,可以作为接收端接受其他PC或者手机等设备的投屏显示。 但是使用手机等设备投屏,尤其是三星、华为等手机的类PC模式时总会提示“要启用输入,请转到你的电脑,选择“操作中心”>“连接…

连接另一台电脑的虚拟机

在一个局域网中,ping通另一台电脑是件很容易的事。但是经常会遇到,需要ping到另一台电脑里面的虚拟机,因为我们需要连接它的数据库,或者其他服务。 假设PC A要连接PC B上的虚拟机C。 我们需要做的是: 将C与B的网络连…

C语言数据结构(链表概念讲解和插入操作)

文章目录 前言一、什么是链表二、链表的优点和缺点三、链表节点的定义四、初始化链表五、链表的插入1.头部插入2.尾部插入3.中间插入 六、遍历链表七、释放链表总结 前言 本篇文章带大家正式的来学习数据结构,数据结构是学习操作系统,和深入C语言必不可…

影响伦敦金走势的两大因素是什么?

在伦敦金市场中经历过一段时间,很多人发现,其实要精准预测伦敦金的走势,尤其是短线的走势,是非常难的。但是,判断其大势,却是有一定规律的。在投资世界中,伦敦金投资之外的一些品种的涨跌号称是…

Ubuntu22.04安装显卡驱动(高速、避错版)

关于显卡驱动安装踩坑不少坑,前前后后重装了6、7次,总结了一下目前网上的各种安装方式,整理了本文。 目录导航 1 准备工作1.1 关闭安全模式1.2 切换独显模式1.3 更新软件列表和安装必要软件、依赖1.4 禁用nouveau (nouveau是通用的驱动程序)1…

SpringCloud学习路线(5)—— Nacos配置管理

一、统一配置管理 需求: 微服务配置能实现统一的管理,比如希望改动多个配置,但不希望逐个配置,而是在一个位置中改动,并且服务不用重启即用(热更新)。 (一)使用配置管理…

【大模型】与 ChatGPT 齐平、可商用、更强的 LLaMA2 来了

【大模型】可商用且更强的 LLaMA2 来了 LLaMA2 简介论文GitHubhuggingface模型列表训练数据训练信息模型信息 许可证参考 LLaMA2 简介 2023年7月19日:Meta 发布开源可商用模型 Llama 2。 Llama 2是一个预训练和微调的生成文本模型的集合,其规模从70亿到…

【极简 亲测】已拦截跨源请求:同源策略禁止读取位于....的远程资源。(原因:CORS 头缺少 ‘Access-Control-Allow-Origin‘)

CORS是Cross-Origin Resource Sharing。 解决 首先这个是浏览器层面的拦截。下面的方法都是解除浏览器拦截的方式。 解除了之后还是有可能其他方面有问题的,但是那个会提示其他错误。 比如CORs Failed之类的,这个是没收到response,大概率是…

施耐德plc编程软件转以太网模块

捷米特JM-ETH-SC 是一款经济型的以太网通讯处理器,是为满足日益增多的工厂设备信息化需求(设备网络监控和生产管理)而设计,用于施耐德Quantumn/Premiun/TSXMicro/Twdio/M200/M218/M221/M241/M238/M25 等系列 PLC 的以太网数据采集…

分布式光伏电站运维平台在石化行业的应用光伏发电数据实时监控

摘要:为实现绿色发展和“净零排放”的目标,近些年来国内外不少能源化工企业进入光伏发电领域。如何做好光伏电站的运行维护,成为石化企业不得不思考的重要课题。本文从分布式光伏电站消防安全、作业安全、环保管理等方面进行思考,…

浮点类型详解及 IEEE754 规定

【C语言趣味教程】(3) 浮点类型:单精度浮点数 | 双精度浮点型 | IEEE754 标准 🔗 《C语言趣味教程》👈 猛戳订阅!!! ​—— 热门专栏《维生素C语言》的重制版 —— 💭 写在前面:这是…

亿发软件:数字化大中型制造企业生产管理应用,实现智慧工厂信息化

随着信息技术与制造业的深度协调,作为企业发展的趋势,大中型制造企业需要拥抱信息化建设。通过运用信息技术和数字化运营,大中型制造企业的生产、设计、经营、管理、后续服务等都实现自动化、智能化。大中型制造企业信息化建设解决方案&#…

Spark(31):Spark性能调优之算子调优

目录 0. 相关文章链接 1. mapPartitions 2. foreachPartition优化数据库操作 3. filter与coalesce的配合使用 4. repartition解决SparkSQL低并行度问题 5. reduceByKey预聚合 0. 相关文章链接 Spark文章汇总 1. mapPartitions 普通的 map 算子对 RDD 中的每一个元素进行…

肖sir___讲解环境__001

1.jdk是什么? jdk是java代码的编译器,可以理解为“翻译”。 (1)windows中jdk是在dos中查询:java -version (2)linux中jdk是在linux服务器查询:java -version ** ** 2、搭建环境服务…

C++初阶 - 3.类和对象(中)

目录 1.类的6个默认成员函数 2.构造函数 2.2特性 3.析构函数 3.1 概念 3.2 特性 4. 拷贝构造函数 4.1 概念 4.2 特征 5.赋值运算符重载 5.1运算符重载 5.2 赋值运算符重载 5.3 前置和后置重载 6.日期类的实现 7.const成员 8.取地址及const取地址操作符重载 1.类…

guava-31.1-android.jar时出错; zip file is empty

配置nacos-client时&#xff0c;启动报错guava-31.1-android.jar时出错; zip file is empty 翻看了一下依赖的nacos-api的maven包中&#xff0c;果然有这个版本的guava 在nacos-api中屏蔽掉 <dependency><groupId>com.alibaba.nacos</groupId><artifactI…

【技能实训】DMS数据挖掘项目-Day14

文章目录 任务16【任务16.1】数据的请求和响应【任务16.2】创建JTable的数据适配器类MatchedTableModel&#xff0c;直接从数据库获取数据。 任务16 【任务16.1】数据的请求和响应 数据的请求和响应方法 程序设计 package com.qst.dms.service;import com.qst.dms.net.Requ…

安装 PyCharm

网址&#xff1a;Download PyCharm: Python IDE for Professional Developers by JetBrains 安装文件&#xff1a; 第一步&#xff1a; 第二步&#xff1a; 第三步&#xff1a; 第四步&#xff1a; 正在安装&#xff1a; 安装完成&#xff1a;

ubuntu中下载、构建、使用raylib

目录 先决条件 [1]下载raylib方式一方式二 构建 [1]使用终端中使用Clion中使用 先决条件 [1] ubuntu系统上需要先安装GCC, make(或者cmake)和git (下载raylib) 执行下面的命令可以安装GCC,make,cmake,git sudo apt install build-essential git #build-essential是一套工具集…