MySql

本文详细介绍了 MySQL 中各种数据类型的特点与应用场景,包括数字类型、日期时间类型和字符串类型等。此外还介绍了文本处理函数、日期时间处理函数及聚合函数的使用方法,并讨论了索引的重要性及不同类型索引的创建方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.数据类型

    ①数字类型

        【1】整数:

           (1) tinyint:如果设置为UNSIGNED类型,那么只能存储范围在0~255之间的整数;如果不设置为UNSIGNED类型那么存储范围在-128~127之间的整数,占用空间为1个字节

                (2)smallint:是一种精确数值数据类型,其精度在经过算术运算后不变;有符号的数值存储范围在-32768~32767之间,无符号的数值取值范围在0~65535之间,占用空间为2个字节

                 (3)mediumint:有符号的取值范围在-8388608~8388607之间,无符号的取值范围在0~16777215之间,占用空间为3个字节

                (4)int:有符号的取值范围在-2147483648~2147483647之间,无符号的取值范围在0~4294967295,占用空间为4个字节

            (5)bigint:有符号的取值范围在-9223372036854775808~9223372036854775807之间,无符号的取值范围在0~18446744073709551615之间,占用空间8个字节

        【2】浮点数:

            (1)float:取值范围1.175494351E-38 ~ 3.402823466E+38之间,占用空间4个字节

            (2)double:取值范围在2.2250738585072014E-308 ~ 1.7976931348623158E+308之间,占用空间8个字节

                如果存储比精度更重要请考虑float类型,如果精度比存储红药请考虑double类型;

            (3)real:有符号取值范围在-3.402823~-1.401298E-45之间,无符号取值范围在1.401298E-45~3.402823E -38之间和0;占用空间8个字节real = float(24)

            (4)decimal:可以有28位小数有兴趣研究下的点这里

    ②日期和时间:

        (1)date:用于存储日期 年月日 占用空间3个字节

        (2)time:用于存储时间 时分秒毫秒 精确到3.33毫秒 占用空间5个字节

        (3)datetime:用于存储 年月日时分秒毫秒 精确到3.33毫秒 占用空间8个字节

        (4)timestamp:占用空间4个字节,以UTC形式存储,存储时对当前时间进行转换,检索时在转换回当前的时区

        (5)year:占用空间1个字节取值范围在1901~2155年之间

    ③字符串类型:

        【1】字符串:

                (1)char:没个值都占用指定长度的字节数,如果存入的值长度小于设定值,那么将用空格补充,检索时在将空格去除

                (2)varchar:可变长度字符串,占用空间为length + 1 多出的一位用来存储数据长度;

        【2】文本:数据存储都为字符串类型

                (1)inytext:长度为0~256之间

                (2)text:长度为0~65536之间

                (3)mediumtext:长度为0~16777215之间

                (4)longtext:长度为0~4294967295之间

        【3】二进制(可存储图片、音频等):tinyblob、blob、mediumblob、longblob当然直接存放二进制的数据流99%的人都不用我也就不再做介绍了  想了解的可以自行搜索

SQL的基础语法也不在做介绍

2.函数

    ①文本处理函数

        【1】left() 返回指定列中从左侧数的指定长度字符串

                select left(name,2) from test

        【2】lower() 将字符串中大写字母转换为小写

                select lower(name) from test

        【3】ltrim()去除字符串左边的空格

                select name,ltrim(name) from test

        【4】right() 返回指定列中右边指定长度的字符串

                select right(name,2) from test

        【5】rtrim() 去除字符串右边的空格

                select rtrim(name) from test

        【6】upper() 将字符串中小写字母转换为大写

                select upper(name) from test

        【7】match()查询指定值在属性中存在的数据航

                select * from test where match(name) against('a')

    ②日期事件处理函数

        【1】curDate()返回当前日期

        【2】curTime()返回当前时间

        【3】now()返回当前日期和时间

        【4】date(now())返回单签时间的日期部分

        【5】time(now())返回日期事件的时间部分

        【6】day(now())返回日期的天数部分

        【7】dayofweek(now())返回一个日期对应的星期

        【8】hour()返回时间的小时部分

        【9】minute()返回时间的分钟部分

        【10】month()返回日期的月份部分

        【11】second()返回时间的秒部分

        【12】year()返回日期的年份部分

        【13】datediff(now(),'2018-05-23')计算两个日期之差

        【14】addDate()添加一个日期(天数)    select addDate('2018-05-23',1000) from test

        【15】示例1:查询某一天的注册用户:

                    select * from test_user where date(create_date) = '2018-05-23'

                示例2:查询某年某月的注册用户

                    select * from test_user where year(create_date) = '2017' and month(create_date) = '12'

    ③聚合函数:都需要一个列名作为方法参数,并且都忽略null值行

        【1】max()获取某列的最大值

        【2】min()获取某列的最小值

        【3】avg()获取某偶咧的平均值

        【4】count()获取某列的行数

        【5】sum()获取某列的和

3.索引:索引是提高数据库检索速度的一个重要途径

    ①索引类型:

        【1】普通索引:最基本的索引类型,没有限制

                create index testIndex on test(name)

        【2】唯一索引:和普通索引基本相同,但是要求索引列数据不重复

                create unique index testIndex2 on test(login_name)

        【3】主键索引:主键索引是一种特殊的唯一索引,在建表时默认为表的主键添加与唯一索引要求一致,但索引指向的是数据库的内存空间地址而不是主键所在行   在建表时指定 primart key(字段名)

        【4】全文索引:全文索引可以在char、varchar或text类型上创建,要求库表引擎为:MyISAM (5.6以上MySql版本InnoDB也可以支持)在建表时指定 fulltext key 列名(列名)

        【5】索引的缺点:

                (1)虽然索引会提高检索速度,但是会降低表的写操作速度,因为进行写操作时除了需要写入库表还要更新索引字典

                (2)索引会占用磁盘空间,所以一般只在经常需要被当做检索条件的列上添加索引,索引过多会导致索引文件膨胀

4.事务、存储过程、视图、触发器以后在补充吧,基础篇也用不到

5.存储引擎

①.InnoDB
(1)概述:
它是事务型数据库的首选引擎,支持事务安全表(ACID),支持行锁定和外键,InnoDB是默认的MySQL引擎。
(2)特性:
[1]InnoDB给MySQL提供了具有提交、回滚和崩溃回复能力的事务安全(ACID兼容)存储引擎、
InnoDB锁定在行级并且也在select语句中提供了一个类似Oracle的非锁定读、这些功能增加了多用户部署和性能。在SQL查询中,可以自由的将InnoDB类型的表和其他MySQL的表混合起来,甚至在同一个查询使用。
[2]InnoDB是为处理巨大数据量的最大性能设计。它的CPU效率可能是其他任何基于磁盘的关系型数据库引擎所不能匹敌的。
[3]InnoDB存储引擎完全与MySQL服务器整合,InnoDB存储引擎在主内存中缓存数据和索引而维持它自己的缓冲池。InnoDB将他的表和索引在一个逻辑表空间中,表空间可以包含数个文件。这与MyISAM表不同,比如在MyISAM表中每个表被存放在不同的文件中。InnoDB表可以是任何尺寸,即使在文件尺寸被限制为2GB的操作系统上。
[4]InnoDB支持外键完整性约束,存储表中的数据时,每张表的存储都按主键顺序存放,
如果没有显示在表定义时指定主键,InnoDB会为每行数据生成一个6字节的rowID并以此作为主键。
[5]InnoDB被用在众多需要高性能的大型数据库站点上。
InnoDB不能创建目录,使用InnoDB时,MySQL将在MySQL数据目录下创建一个名为ibdata1的10MB大小的自动扩展数据文件,以及两个名为ib_logfile0和ib_logfile1的5MB大小的日志文件。
②.MyISAM存储引擎
(1)概述:
MyISAM基于ISAM存储引擎,并对其进行扩展。它是在Web、数据仓储和其他应用环境下最长使用的存储引擎之一。它具有较高的插入、查询速度,但不支持事务。
(2)特性:
[1]大文件(达到63为文件长度)在支持大文件的文件系统和操作系统上被支持。
[2]当把删除和更新及插入操作混合使用的时候,动态尺寸的行产生更少的碎片。这要通过河滨相邻被删除的块,以及若下一个块被删除,就扩展到下一块自动完成。
[3]每个MyISAM表最大索引数是64,这可以通过重新编译来改变。每个索引最大的列数是16.
[4]最大的键长度是1000字节,这也可以通过编译来改变,对于键长度超过250字节的时候会自动修正长度为1024.
[5]BLOB和TEXT列可以被索引
[6]Null被允许在索引的列中,这个值占每个键的0~1个字节
[7]所有数字键以高字节有限被存储以允许一个更高的索引压缩
[8]每个MyISAM类型的表都有一个AUTO_INCREMENT的内部列,当INSERT和UPDATE草做的时候,该列被更新,同时aoto_increment列江北刷新、所以,MyISAM类型的auto_increment列更新比InnoDBB类型的auto_increment更快
[9]可以把数据文件盒索引文件放在不同目录
[10]每个字符列可以有不同的字符集
[11]有varchar的表可以固定或动态记录长度
[12]varchar和char列可以有64kb。使用MyISAM引擎创建数据库,将产生三个文件、文件的名字以表名开始,扩展名值处为文件类型:frm文件存储表定义、数据文件的扩展名为.MYD(MyData)、索引文件的扩展名为.MYI(MyIndex)
3.MEMORY存储引擎
MEMORY存储引擎将表中的数据存储到内存中,未查询和引用其他表数据提供快速访问、
特性:
[1]它的表每个表可以有多达32个索引,每个索引16列,以及500字节的最大键长度
[2]它执行hash和btree缩影
[3]主键可重复
[4]表使用一个固定的记录长度格式
[5]它不支持BLOB或TEXT列
[6]它支持auto_increment列和对可包含null值的列的索引
[7]它的表在所有客户端之间共享
[8]它的表内存被存储在内存中,内存是它的表和服务器子查询处理时的空闲中,创建的内部表空想
[9]当不在需要他的表的内容时,要释放被它的表使用的内存,应该执行delete from 或truncate table,偶删除整个表drop table
4.不同的存储引擎的特点:
功能 MYISAM Memory InnoDB Archive
存储限制 256TB RAM 64TB None
支持事务 NO NO YES NO
全文检索 YES NO NO NO
数索引 YES YES YES NO
hash索引 NO YES NO NO
数据缓存 NO N/A YES NO
外键 NO NO YES NO
如果要求提交、回滚、崩溃回复能力的事务安全(ACID兼容)能力,并要求实现并发控制,InnoDB是一个号的选择
如果数据表主要用来插入和查询记录,则MyISAM引擎能提供较高的处理效率
如果只是存放临时数据,数据量不大,并且不需要较高的数据安全性,可以选择数据保存在内存中的Memory引擎,存放查询的中间结果
如果只有insert和select操作,可以选择Archive,它支持高并发的插入操作,但是本身不是事务安全的,适合存储归档数据,如:日志信息


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值