如何理解MySQL中的数据类型概念?
本篇文章给大家带来的内容是关于如何理解MySQL中的数据类型概念,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
一、数据是什么?
数据是一个信息集合,以某种数据类型保存在数据库里。数据包括姓名、数字、货币、文本、图像、小数、计算、统计等,几乎涵盖能够想象到的任何东西。数据客户保存为大写、小写或大小写混合,数据可以被操作或修改,大多数数据在其生存周期内不会保持不变。
数据类型用于指定列所包含数据的规则,它决定了数据保存在列里的方式,包括分配给列的宽度,以及值是否可以是字母、数字、日期和时间等。任何数据或数据的组合都有对应的数据类型,这些数据类型用于存储像字母、数字、日期和时间、图像、二进制数据等。更详细地说,数据可以包括姓名、描述、数字、计算、图像、图像描述、文档等。
数据是数据库的意义所在,必须受到保护。数据的保护着就是数据库管理员(DBA),但是每个数据库用户也有责任采取必要手段来保护数据。
二、基本数据类型
数据类型是数据本身的特征,其特性被设置到表里的字段。举例来说,我们可以指定某个字段必须包含数字值,不允许输入由数字或字母组成的字符串;我们也不希望在保存货币数值的字段里输入字母。为数据库里每个字段定义数据类型可以大幅减少数据库里由于错误而产生的错误数据。字段定义(数据类型定义)是一种数据校验方式,通知了每个字段里可以输入的数据。
1.定长字符串。
定长字符串通常具有相同的长度,是使用定长数据类型保存的。下面是Sql定长字符串的标准:
CHARACTER(n)
n是一个数字,定义了字段里能够保存的最多字符数量。
有些Sql实现使用CHAR数据类型来保存定长数据。字母可以保存到这种数据类型里。
在定长数据类型里,通常使用空格来补充数量不足的字符。如果字符长度是10,而输入的数据只有5位,那么剩余5位就会被记录为空格。填充空格确保了字段里每个值都具有相同的长度。
PS:不要使用定长数据类型来保存长度不定的数据,比如姓名,如果不恰当地使用定长数据类型,可能会导致浪费可用空间,以及影响对不同的数据进行精确比较。应该使用变长数据类型来保存长度不定的字符串,从而节省数据库空间。
2.变长字符串。
Sql支持变长字符串,也就是长度不固定的字符串。下面是Sql变长字符串的标准:
CHARACTER VARYING(n)
n是一个数字,表示字段里能够保存的最多字符数量。
常见的变长字符串数据类型有VARCHAR、VARINARY和VARCHAR2。VARCHAR是ANSI标准,Microsoft Sql Server和MySql也使用它;VARINARY和VARCHAR2都是由Oracle使用的。定义为字符的字段里可以保存数字和字母,这意味着数据中可能包含数字字符。VARBINARY类似于VARCHAR和VARCHAR2,只是它包含的是长度不定的字节。这种数据类型通常被用来保存数字式数据,例如图像文件。
定长数据类型利用空格来填充字段里的空白,但变长字符串不这样做。举例来说,如果某个变长字段的长度定义为10,而输入的字符串长度为5,那么这个值的总长度也就是5,这时并不会使用空格来填充字段里的空白。
3.大对象类型。
有些变长数据类型需要保存更长的数据,超过了一般情况下为VARCHAR字段所保留的长度,比如现在常见的BLOB和TEXT数据类型。这些数据类型专门用于保存大数据集的。BLOB是二进制大对象,它的数据是很长的二进制字符串。BLOB适合在数据库里存储二进制媒体文件,比如图像和MP3.
TEXT数据类型是一种长字符串类型,可以被看作一个大VARCHAR字段,通常用于在数据库里保存大字符集,比如博客站点的HTML输入。在数据库里保存这种类型的数据可以实现站点的动态更新。
4.数值类型。
数值被保存在定义为某种数值类型的字段里,一般包括NUMBER、INTERGER、REAL/DECIMAL等。
虾米是Sql数值的标准:
(1).BIT(n);
(2).BIT VARYING(n);
(3).DECIMAL(p,s);
(4).INTEGER;
(5).SMALLINT;
(6).SIGINT;
(7).FLOAT(p,s);
(8).DOUBLE PRECISION(P,S);
(9).REAL(S);
P 表示字段的最大长度。s 表示小数点后面的位数。
Sql实现中一个通用的数值类型是NUMERIC,它符合ANSI标准。数值可以是0、正数、定点数和浮点数。下面是使用NUMERIC的一个范例:
NUMERIC(s),这个命令把字段能够接受的最大值限制为99 999.在本书范例所涉及的数据库实现总,NUMERIC都是以DECIMAL类型实现的。
5.小数类型。
小数类型是数值的总体长度。举例来说,在数值定义ZDECIMZAL(4,2)里,有效位数是4,也就是说数值总位数是4.标度是小数点后面的位数,在前例中是2。如果实际数值的小数位数超过了定义的位数,数值就会被四舍五入,比如34.33写入到定义为DECIMAL(3,1)的字段时,会被四舍五入34.3。
如果数值按照如下方式被定义,其最大值就是99.99:
DECIMAL(4,2)
有效位是4,表示数值的总体长度是4;标度是2,表示小数点后面保留2位。小数点本身并不算作一个字符。
定义为DECIMAL(4,2)的字段允许输入的数组包括:
(1).12
(2).12.4
(3).12.44
(4).12.449
最后一个值12.449在保存到字段时会四舍五入为12.45。在这种定义,任何12.45~12.499之间的数值会被四舍五入为12.45。
6.整数。
整数是不包含小数点的数值(包括正数和负数)。
下面是一些有效的整数:
(1).1;
(2).0;
(3).-1;
(4).99;
(5).-99;
(6).199;
7.浮点数。
浮点数是有效位数和标度都可变并且没有限制的小数数值,任何有效位数和标度都是可以的。数据类型REAL代表单精度浮点数值,而DOUBLE PRECISION表示双精度浮点数值。单精度浮点数值的有效位数为1~21(包含),双精度浮点数值的有效位数为22~53(包含)。下面是一些FLOAT数据类型的范例:
(1).FLOAT;
(2).FLOAT(15);
(3).FLOAT(50);
8.日期和时间类型。
日期和时间数据类型很显然是用于保存日期和时间信息的。标准Sql支持DATETIME数据类型,它包含以下类型:
(1).DATE;
(2).TIME;
(3).DATETIME;
(4).TIMESTAMP;
DATETIME数据类型的元素包括:
(1).YEAR;
(2).MONTH;
(3).DAY;
(4).HOUR;
(5).SECOND;
ps:SECOND元素还可以再分解为几分之一秒,其范围是00.000~61.999,但并不是所有Sql实现都支持这个范围。多出来的1.999秒是用于实现闰秒的。
每种Sql实现可能都是具有自定义的数据类型来保存日期和时间。前面介绍的数据类型和元素是每个Sql厂商都应该遵守的标准,但大多数实现都具有自己的数据类型来保存日期值,其形式与实际存储方式有所不同。
日期数据一般不指定长度。稍后我们会更详细地介绍日期类型,包括日期信息在某些实现里的保存方式、如何使用转换函数操作日期和时间,并且用范例展示在实际工作中如何使用日期和时间。
9.直义字符串。
直义字符串就是一系列字符,比如姓名或电话号码,这是有用户或者程序明确指定的。直义字符串包含的数据与前面介绍的数据类型具有一样的属性,但字符串的值是已知的。列本身的值通常是不能确定的,因为每一列通常包含了字段在全部记录里的不同值。
实际上并不需要把字段指定为直义字符串数据类型,而是指定字符串。直义字符串的范例如下所示:
(1).'Hello';
(2).45000;
(3).'45000';
(4).3.14;
(5).'November 1 ,1997';
字符型的字符串由单引号包围,数值45000没有单引号包围,而第二个45000用双引号包围了。一般来说,字符型字符串需要使用单引号,而数值型不需要。
将一个数据类型成数值类型的过程过程术语隐式转换。在这个过程中,数据库会自动判断应该使用哪种数据类型。所以,如果一个数据没有使用单引号包围起来,那么Sql程序就会将其认定为数值类型。因此,必须要特别留意数据的形式。否则,存储结果可能会出现偏差,或者报错。稍后将介绍如何在数据库查询里使用直义字符串。
10.NULL数据类型。
NULL值表示没有值。NULL值在Sql里有广泛的应用,包括表的创建、查询的搜索条件,甚至是在直义字符串。
在使用NULL数据类型时,需要明确表示相应字段不是必须要输入数据的。如果某个字段必须包含数据,就把它设置为NOT NULL,只要字段有可能不包含数据,最好就把它设置为NULL。
11.布尔值。
布尔值的取值范围是TRUE、FlASE和NULL,用于进行数据比较。举例来说,在查询中设置条件时,每个条件都会被求值,得到TRUE、FLASE或NULL。如果查询中所有条件的值都是TRUE,数据就会被返回;如果某个条件的值是FLASE或NULL,数据就不会返回。比如下面这个范例:
WHERE NAME =‘SMITH’
这可能是查询里的一个条件,目标表里每行数据都是根据这个条件进行求值。如果表里某行的NAME字段值是SMITH,条件的值就是TRUE,相应的记录就会被返回。
大多数数据库实现并没有一个严格意义上的BOOLEAN类型,而是代之以各自不同的实现方法。MySql用于BOOLEAN类型,但实质上与其现有的TINYINT类型相同。Oracle倾向于让用户使用一个CHAR(1)值来代替布尔值,而Sql Server则使用BIT来代替。
12.自定义类型。
自定义类型是由用户定义的类型,它允许用户根据已有的数据类型来定制自己的数据类型,从而满足数据存储的需要。自定义类型极大的丰富了数据存储的可能性,使开发人员在数据库程序开发过程中具有更大的灵活性。语句CREATE TYPE用于创建自定义类型。
举例来说,在MySql和Oracle中,可以像下面这样创建一个类型:
CREATE TYPE PERSON ASOBJECT
(NAME VARCHER (30),
SSN VARCHAR(9);
)
然后可以像下面这样引用自定义类型:
CREATE TABLE EMP_PAY
(EMPLOYEE PERSON,
SALARY DECIMAL(10,2),
HIRE_DATE DATE);
表EMP_PAY第一列EMPLOYEE的类型是PERSON,这正是在前面创建的自定义类型。
13.域。
域是能够被使用的有效数据类型的集合。域与数据相关联,从而只接受特定的数据。在域创建之后,我们可以向域添加约束。约束与数据类型共同发挥作用,从而进一步限制字段能够接受的数据。域的使用类似于自定义类型。
像下面这样就可以创建域:
CREATE DOMAIN MONEY_D AS NUMBER(0,2);
像下面这样为域添加约束:
ALTER DOMAIN MONEy_D
ADD CONSTRAINT MONEY_CON
CHECK(VALUE>5);
然后像下面这样引用域:
CREATE TABLE EMP_PAY
(EMP_ID NUMBER(9),
EMP_NAME VARCHER2(30),
PAY_RATE MONEY_D);
三、小结
Sql具有多种数据类型,对于使用过其他编程语言的人来说,这些都不算陌生。数据类型允许不同类型的数据保存到数据库,比如单个字符、小数、日期和时间。无论是使用像c这样的第三代编程语言,还是使用关系型数据库实现Sql编码,数据类型的概念都是一样的。当然,不同实现中数据类型的名称坑你有所不同,但其工作方式基本上是一样的。另外,关系型数据库管理系统并不是一定要实现,ANSI标准里规定的全部数据类型才会被认为是与ANSI兼容的,因此最好查看具体的文档来了解尅使用的数据类型。
在考虑数据类型、长度、标度和精度时,一定要仔细地进行短期和长远的规划。另外,公司制度和希望用户以什么方式访问数据也是要考虑的因素。开发人员应该了解数据的本质。以及数据在数据库里是如何相互关联的,从而使用恰当的数据类型。
本篇文章只是描述了Sql的数据类型!纯文字描述!本篇文章摘录自《Sql入门经典》。下篇文章讲解Sql小白入门(三)管理数据库对象
!
Atas ialah kandungan terperinci 如何理解MySQL中的数据类型概念?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Sebab utama mengapa anda tidak boleh log masuk ke MySQL sebagai akar adalah masalah kebenaran, ralat fail konfigurasi, kata laluan tidak konsisten, masalah fail soket, atau pemintasan firewall. Penyelesaiannya termasuk: periksa sama ada parameter pengikat di dalam fail konfigurasi dikonfigurasi dengan betul. Semak sama ada kebenaran pengguna root telah diubahsuai atau dipadam dan ditetapkan semula. Sahkan bahawa kata laluan adalah tepat, termasuk kes dan aksara khas. Semak tetapan dan laluan kebenaran fail soket. Semak bahawa firewall menyekat sambungan ke pelayan MySQL.

Apabila MySQL mengubahsuai struktur jadual, kunci metadata biasanya digunakan, yang boleh menyebabkan jadual dikunci. Untuk mengurangkan kesan kunci, langkah -langkah berikut boleh diambil: 1. Simpan jadual yang tersedia dengan DDL dalam talian; 2. Melakukan pengubahsuaian kompleks dalam kelompok; 3. Beroperasi semasa tempoh kecil atau luar puncak; 4. Gunakan alat PT-OSC untuk mencapai kawalan yang lebih baik.

Dalam pangkalan data MySQL, hubungan antara pengguna dan pangkalan data ditakrifkan oleh kebenaran dan jadual. Pengguna mempunyai nama pengguna dan kata laluan untuk mengakses pangkalan data. Kebenaran diberikan melalui perintah geran, sementara jadual dibuat oleh perintah membuat jadual. Untuk mewujudkan hubungan antara pengguna dan pangkalan data, anda perlu membuat pangkalan data, membuat pengguna, dan kemudian memberikan kebenaran.

Penyederhanaan Integrasi Data: AmazonRDSMYSQL dan Integrasi Data Integrasi Zero ETL Redshift adalah di tengah-tengah organisasi yang didorong oleh data. Proses tradisional ETL (ekstrak, menukar, beban) adalah kompleks dan memakan masa, terutamanya apabila mengintegrasikan pangkalan data (seperti Amazonrdsmysql) dengan gudang data (seperti redshift). Walau bagaimanapun, AWS menyediakan penyelesaian integrasi ETL sifar yang telah mengubah keadaan ini sepenuhnya, menyediakan penyelesaian yang mudah, hampir-sebenar untuk penghijrahan data dari RDSMYSQL ke redshift. Artikel ini akan menyelam ke integrasi RDSMYSQL Zero ETL dengan redshift, menjelaskan bagaimana ia berfungsi dan kelebihan yang dibawa kepada jurutera dan pemaju data.

1. Gunakan indeks yang betul untuk mempercepatkan pengambilan data dengan mengurangkan jumlah data yang diimbas memilih*frommployeesWherElast_name = 'Smith'; Jika anda melihat lajur jadual beberapa kali, buat indeks untuk lajur tersebut. Jika anda atau aplikasi anda memerlukan data dari pelbagai lajur mengikut kriteria, buat indeks komposit 2. Elakkan pilih * Hanya lajur yang diperlukan, jika anda memilih semua lajur yang tidak diingini, ini hanya akan memakan lebih banyak pelayan dan menyebabkan pelayan melambatkan pada masa yang tinggi atau kekerapan misalnya, jadual anda

MySQL mempunyai versi komuniti percuma dan versi perusahaan berbayar. Versi komuniti boleh digunakan dan diubahsuai secara percuma, tetapi sokongannya terhad dan sesuai untuk aplikasi dengan keperluan kestabilan yang rendah dan keupayaan teknikal yang kuat. Edisi Enterprise menyediakan sokongan komersil yang komprehensif untuk aplikasi yang memerlukan pangkalan data yang stabil, boleh dipercayai, berprestasi tinggi dan bersedia membayar sokongan. Faktor yang dipertimbangkan apabila memilih versi termasuk kritikal aplikasi, belanjawan, dan kemahiran teknikal. Tidak ada pilihan yang sempurna, hanya pilihan yang paling sesuai, dan anda perlu memilih dengan teliti mengikut keadaan tertentu.

MySQL tidak boleh berjalan secara langsung di Android, tetapi ia boleh dilaksanakan secara tidak langsung dengan menggunakan kaedah berikut: menggunakan pangkalan data ringan SQLite, yang dibina di atas sistem Android, tidak memerlukan pelayan yang berasingan, dan mempunyai penggunaan sumber kecil, yang sangat sesuai untuk aplikasi peranti mudah alih. Sambungkan jauh ke pelayan MySQL dan sambungkan ke pangkalan data MySQL pada pelayan jauh melalui rangkaian untuk membaca dan menulis data, tetapi terdapat kelemahan seperti kebergantungan rangkaian yang kuat, isu keselamatan dan kos pelayan.

Panduan Pengoptimuman Prestasi Pangkalan Data MySQL Dalam aplikasi yang berintensifkan sumber, pangkalan data MySQL memainkan peranan penting dan bertanggungjawab untuk menguruskan urus niaga besar-besaran. Walau bagaimanapun, apabila skala aplikasi berkembang, kemunculan prestasi pangkalan data sering menjadi kekangan. Artikel ini akan meneroka satu siri strategi pengoptimuman prestasi MySQL yang berkesan untuk memastikan aplikasi anda tetap cekap dan responsif di bawah beban tinggi. Kami akan menggabungkan kes-kes sebenar untuk menerangkan teknologi utama yang mendalam seperti pengindeksan, pengoptimuman pertanyaan, reka bentuk pangkalan data dan caching. 1. Reka bentuk seni bina pangkalan data dan seni bina pangkalan data yang dioptimumkan adalah asas pengoptimuman prestasi MySQL. Berikut adalah beberapa prinsip teras: Memilih jenis data yang betul dan memilih jenis data terkecil yang memenuhi keperluan bukan sahaja dapat menjimatkan ruang penyimpanan, tetapi juga meningkatkan kelajuan pemprosesan data.
