mysql 变量 数据类型_浅谈mysql(二)数据类型

//我。。。我才是不是傲娇呢

//如有问题还请多多指教。上回我们说到我们如何使用MySQL,关键是要看它的用途。用途衍生语句。之后文章的思路,也是如此,从用途出发,然后再到语句。

那么,我们先问几个问题,我们用mysql干什么,获得数据,处理数据,制作想要的报表或视图。等等,数据是什么?是数字吗?还是文本?音频?我们在使用之前,是否要先了解一下数据是什么,正如我们创造世界,操纵世界。首先要命名,它是什么?它的特征是什么,知道这些我们才可以方便进行下一步操作。那么数据是什么?根据wiki的定义:数据,或称资料,指描述事物的符号记录,是可定义为意义的实体,它涉及到事物的存在形式。它是关于事件之一组离散且客观的事实描述,是构成信息和知识的原始材料。数据可分为模拟数据和数字数据两大类。数据指计算机加工的“原料”,如图形、声音、文字、数、字符和符号等。

也就是说,数据不是一个单纯的个体,它是种种世界特征的描述。mysql中的数据也是如此,它不止于数值,也不止于文本(字符串),也不止于日期。它的特征是丰富多样。然而我们知道,如果变量(数据的特征)太多,在研究的时候就会很困难。所以从众多的变量之中,抽出典型的变量,进行研究是合适的。

我们按照数据的类型(变量)进行分类,以便我们进行研究,同时将这些分好的变量重新命名,将它称之为字段(在Excel表中表现为每一列)。

那么如何分类呢?这时我们通常是根据方便来分的,在数据处理过程中,我们主要会遇到数值类型,时间类型,以及字符串类型,二进制类型所以数据的类型也因此主要分为这几种,然而注意的是,mysql的数据类型不止于此。我们只是为了方便,挑一些主要的来说。

首先是数值型数据,包括整数类型:TINYINT、SMALLINT、MEDIUMINT、INT、BIGINT

浮点小数类型:FLOAT、DOUBLE、DECIMAL(M,D).

关于整数类型我们知道它的英文意思,差不多就懂了,也没必要过分深究它的取值范围,占多少内存,够用就可以了。真正要注意的是,在SQL中,整数类型后面定义的是它的显示出来的宽度,跟本体无关。如INT(2),就是显示出2位整数,后如果超出,则不显现出来。如果你记录了一个叫做1000的数字,那么你可以看到的是10,而不是1000,虽然它在计算机内部还是1000.

关于浮点小数类型,我们要记住的是,FLOAT,比较短的包括小数的数,DOUBLE,比较长的。DECIMAL(M,D),定点数,M,指的是整个数的长度,D,指的是小数点后的精度。如DECIMAL(5,1)就是保留一位小数,长度为5。如果我们记录了一个叫做4.234的数,那么最终会得到4.2的数字,ps:内部的形式是4.2000。

接着是字符串类型,字符串类型大体有三种

1.CHAR(M),VARCHAR(M)

2.TEXT型,细分为TINYTEXT,TEXT,MEDIUMTEXT,LONGTEXT

3.其他,分为ENUM,SET

首先是CHAR型和VARCHAR型,主要的区分在于一个短一个长,另外一点是,CHAR型的存储是固定的,M是多少,它就占多少字节,比如说定义一个char(2),然而你填入了一个长度为1的数,如8,那么它便会将后面存储空余不会删除。而VARCHAR不同,VARCHAR它的存储是浮动的,根据你填入的长度而改变,如varchar(2),填入8,所占的字节数为1位加1。

值得注意的是,对于不同的存储引擎,如MyISAM,最好就用CHAR,虽然比较浪费空间,但这样够快,而InnoDB,最好用VARCHAR,这样比较少占内存。(存储引擎有时间再讲)

接着是TEXT型,这种类型显而易见,是用来存储小中大型文本的,而char,varchar是存储字符的。

再接着是,ENUM型,这种感觉就像一个创建一个下拉菜单用的,它的选择项在于集合内的所有元素。如ENUM('男','女')这时如果你实际填入的数,超出了男,女这个选择范围,系统就会报错。Ps,ENUM支持索引,可以用1,2。代替男,女。

再接着是,SET型,SET型的感觉也是一个菜单用的,不过它比ENUM的要求要宽松,如SET('A','B','C'),这时你可以填入任意A,B,C的排列组合,如('A,B'),('A,B,C'),('A')。

轮到时间类型了,时间类型包括

YEAR,TIME,DATE,DATETIME,TIMESTAMP

1.YEAR表示的是年,你填入的需要是4位数,如字符串'2018',或数字2018.如果你填入的是两位数,它便会根据数的范围自动帮你转换,对于字符来说,'00'-'69'是'2000'-'2069'。而'70-99'是'1970-1999'。对于数字来说,1-69对应的是2001到2069,70-99对应的是1970-1999,而0会报错。

2.TIME的格式为: 'hh:mm:ss',还有一些非严格的写法,不过不建议去记住,这些以后用久了自然会知道。如'D HH:MM'、'D HH',D指的是天,它会自动帮你转成D*24的。ps,记得加引号。

3.DATE型,表示的是日期,格式为'YYYY-MM-DD',写法要严格,如果写成非严格的,如'YYYYMMDD'、‘YYMMDD’、'YY-MM-DD’则其语法规则与1相同。

4.DATETIME型,就是日期加时间,写法严格的为'YYYY-MM-DD HH:MM:SS',简单来说就是DATE型与TIME型的复合。非严格的'YYMMDDHHMMSS'、'YY-MM-DD HH:MM:SS'。语法与1同

要获得当前的DATETIME,可以使用NOW()函数。

TIMESTAMP型,与TIMESTAMP一样,只是它意味的是世界标准时间,如此而已,世界标准时间可以百度得知。

最后是二进制型,它们是根据BIT来分配存储空间的。

1.BIT(M)

2.BINARY(M),VARBINARY(M)

3.TINTBLOB(M)、BLOB(M)、MEDIUMBLOB(M)、LONGBLOB(M)

首先是BIT(M),举个例子来方便理解,BIT(4),那么它将分配给你一个从0000-1111的数,转换为十进制就是0-15。如果你插入了一个16的数,那么它只会给你返回1111。即15。

然后是BINARY,和VARCHAR,它们跟CHAR和VARCHAR差不多。

最后是BLOB型,这种是来存储二进制大对象的,如音乐,图片,视频等等,又根据存储的分配,分为TINYBLOB(255B)、BLOB(65kb)、MEDIUMBLOB(16MB)、LONGBLOB(4GB)。

初略的知道这些之后,下回就可以正式开始操作了。那么,下回见。

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

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

相关文章

Java面试必问JVM调优,那.NET5呢?

JVM调优已经是普通Java工程师的必修课了,而.NET开源快5年了,CLR层面的优化到目前都不多见,甚至常用的性能调优工具都还没玩过。.NET5马上来了,要想在互联网大潮中逆袭,光靠平台是不够的,开发者也得给力才行…

win10新建管理员账户_【经验篇001】Win10专业版如何开启超级管理员账户

关注我们前言介绍我们在使用Win10系统的时候,有时候安装一些特殊的专业类软件,需要系统赋予软件特殊的权限,那就需要使用超级管理员帐户,Win10系统安装时候,Administrator账户默认是禁用的,所以我们就需要开…

SQL Server in Docker - 还原数据库

SQL Server in Docker 还原数据库上一回演示了如果在Docker环境下安装SQL Server(使用Docker运行SQL Server),这次我们来演示下如何还原一个数据库备份文件到数据库实例上。使用winscp上传bak文件到linux服务器上一回我们启动docker容器的时候使用了-v参数挂账了本地…

Xamarin 从零开始部署 iOS 上的 Walterlv.CloudKeyboard 应用

本文将告诉大家如何从零开始在 iOS 上部署 Walterlv.CloudKeyboard 应用。这个 Walterlv.CloudKeyboard 应用是一个云输入法应用,在 GitHub 完全开源,采用 Xamarin 开发,用途是让手机接收电脑端的打字输入的输入法。因为我没有在 iOS 上找到任…

c 命令导出数据到mysql_MySQL命令行导出数据库

MySQL命令行导出数据库:1,进入MySQL目录下的bin文件夹:cd MySQL中到bin文件夹的目录如我输入的命令行:cd C:\Program Files\MySQL\MySQL Server 4.1\bin(或者直接将windows的环境变量path中添加该目录)2,导出数据库&am…

mysql权限create细化_mysql权限精细化分配-阿里云开发者社区

mysql中可以给你一个用户授予如select,insert,update,delete等其中的一个或者多个权限,主要使用grant命令,用法格式为:grant 权限 on 数据库对象 to 用户一、grant 普通数据用户,查询、插入、更新、删除 数据库中所有表数据的权利grant select on testdb…

Win10 Terminal + WSL 2 安装配置指南,精致开发体验

自从 Windows Terminal 正式发布后就再没有用过 Windows 系统自带的终端了。主要是 Terminal 简洁且灵活,更重要的是支持特殊字体,通过一些简单的配置可以使得终端看起来更舒适养眼。自从 Win 10 有了 Linux 子系统(WSL)&#xff…

mysql数据转储方法_Mysql数据库各种导出导入数据方式的区别(我的理解错误还望指正)...

mysqldump,NAVICAT转储,select * outfile在千级数据,万级,百万级数据下的表现。千级数据mysqldump导出sql文件导出是出了拒绝访问的错误;为对应目录(.sql文件要保存的目录)的对应用户添加(正在使用的用户)添加写入权限即可。mysql…

JetBrains 开发者调查 - 编程语言趋势

几个月前在公众号里发布了 StackOverflow 2020 开发者调查结果,其结果对 .NET Core 很友好。今天我们看看 JetBrains 2017-2020 四年的开发者调查结果统计,JetBrains 是偏 Java 系的,尤其是本家的 Kotlin 语言。 我们看一下在编程语言方面的趋…

mycli mysql_MyCLI :易于使用的 MySQL/MariaDB 客户端

导读MyCLI 是一个易于使用的命令行客户端,可用于受欢迎的数据库管理系统 MySQL、MariaDB 和 Percona,支持自动补全和语法高亮。它是使用 prompt_toolkit库写的,需要 Python 2.7、3.3、3.4、3.5 和 3.6 的支持。MyCLI 还支持通过 SSL 安全连接…

asp.net core 5.0的一些模块

.net 5就要发布了,把asp.net core 3.1的一些模块改成了5.0来适配,基本都是体力活,没有太大改动。ORMdapper一个轻量级的ORM,重点实现SQL语句实体映射,用sql不失灵活高效,映射用实体不失简便快捷&#xff0c…

mysql报4934_mysql-Mariadb语法错误1064(42000)

因此,当我尝试在MariaDB中运行此脚本时收到以下错误:“ ERROR 1064(42000):您的SQL语法有错误;请查看与您的MariaDB服务器版本相对应的手册以获取正确的语法在附近使用CREATE TABLE customers (customer_id int NOT NULL,customer_f在第1行奇…

究竟是什么可以比反射还快实现动态调用?

戏精分享 C#表达式树,第一季正式完稿 前不久,我们发布了《只要十步,你就可以应用表达式树来优化动态调用》。观众们普遍反映文章的内容太多复杂不太容易理解。因此,我们以此为契机发布了《戏精分享 C#表达式树》系列视频。现在&am…

mysql查询语句不返回_PHP-CI MySQL查询联接表,并且where语句不返回所...

我有3个表要联接,但是当我在第三个表上使用where语句,而第三个表没有它时,即使我使用的是left,它也不会返回第一和第二个表中的行加入.Table 1---------------------------------| acc_PID | acc_name | acc_type |---------------------------------| 1 | Account 1 | 1 || 2 …

BCVP,想真正为社区做努力的开发者们

基于Net/Core,快速搭建 API & SPA 及微服务应用组织BASE NETCORE (VUE) PROJECT TEAM每一个.NET开发者都可以通过自己的开源项目(最好可以配套简单发表些文章)在这里进行分享,BCVP开发者组织的意义就是激发和挖掘更多的作品,可能偏基础&a…

求关系模式r的所有候选码_2_1关系数据库的基本概念

1.关系数据结构单一的数据结构-------关系现实世界中的实体以及实体间各种联系均用关系来表示2.域:一组具有相同数据类型的值的集合。例如:整数实数介于某个取值范围的整数指定长度的字符串集合{“男”,“女”}.............3.笛卡尔积3.1 给…

Docker:恢复对开源项目的无限制访问

喜欢就关注我们吧!继宣布针对免费用户的拉速限制声明之后,Docker 现如今又透露了进一步的策略更新,旨在恢复对开源项目的无限制访问。Docker 方面此表示,为了支持开源社区,他们为开源项目制定了一个特殊的计划&#xf…

python elasticsearch查询_python 查询Elasticsearch的小例子

#!/usr/bin/env python# -*- coding: utf-8 -*-from sfo_common.agent import Agentfrom sfo_common.import_common import *class ElkLog(object):"""处理ELK数据类"""def __init__(self):passdef get_elk_log_json(self):"""通…

真正拖垮你的,是沉没成本

职场&认知洞察 丨 作者 / findyi这是findyi公众号分享的第91篇原创文章一个洋友问:“洋哥,我在这家创业公司3年了,但老板承诺的股份一直没兑现。现在想离开,但又特别不甘心,我应该怎么做”。我回复:“找…

python函数体中可以不写返回值语句_python让函数不返回结果的方法

1、简单介绍print和return的区别,print仅仅是打印在控制台,而return则是将return后面的部分作为返回值:作为函数的输出,可以用变量接走,继续使用该返回值做其它事。2、函数需要先定义后调用,函数体中return…