MySQL必知必会知识点总结一二

2024-05-24 02:38

本文主要是介绍MySQL必知必会知识点总结一二,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、MySQL官方文档地址

https://dev.mysql.com/doc/refman/5.7/en/

二、MySQL常用命令

1、如何登陆mysql数据库

mysql -u username -p

1.1、指定IP、端口

mysql -uroot -h 192.168.1.213 -P3306 -p123456

-P(大写):指定端口;
-p(小写):指定密码;

2、如何开启/关闭mysql服务

service mysql start/stop

3、查看mysql的状态

service mysql status

4、如何显示数所有数据库

show databases

5、如何获取表内所有字段对象的名称和类型

describe table_name;

三、SQL分类

SQL全程为Structure Query Language(结构化查询语言)。

SQL 语句主要可以划分为以下 3 个类别:

1、DDL(Data Definition Languages)语句:数据定义语言,这些语句定义了不同的数据段、 数据库、表、列、索引等数据库对象的定义。常用的语句关键字主要包括 create、drop、alter 等。

2、DML(Data Manipulation Language)语句:数据操纵语句,用于添加、删除、更新和查询数据库记录,并检查数据完整性,常用的语句关键字主要包括 insert、delete、update 和 select 等。

3、DCL(Data Control Language)语句:数据控制语句,用于控制不同数据段直接的许可和 访问级别的语句。这些语句定义了数据库、表、字段、用户的访问权限和安全级别。主要的语句关键字包括 grant、revoke 等。

四、MySQL使用帮助命令

在 MySQL 使用过程中,快速查找某一个命令的使用方法和实例。使用命令:

mysql> ? contents;

这里写图片描述

示例:

1、mysql> ? Data Types;

这里写图片描述

2、mysql> ? show create table;

这里写图片描述

3、mysql> ? show

4、mysql> ? int
。。。。。。

因此,只要是对于某一个命令不是很熟的话,使用? 命令名称 即可显示其用法。

五、MySQL支持的数据类型

1、数值类型

这里写图片描述

常见的数值类型如下:

这里写图片描述

注:这里的最小值和最大值代表的是宽度。

对于这几种常见的数值类型,我们应该知道存储的所占的字节,我们还要知道INT最大的长度为10位数字,那么我们设置11为,如:int(11)也是无用的,最多只能为10位数字。TINYINT最大支持3位,那么我们设置tinyint(4)也是无用的。

int(M) 在 integer 数据类型中,M 表示最大显示宽度。 在 int(M) 中,M 的值跟 int(M)所占多少存储空间并无任何关系。 int(3)、int(4)、int(8) 在磁盘上都是占用 4 btyes的存储空间。说白了,除了显示给用户的方式有点不同外,int(M) 跟 int 数据类型是相同的。

1、如果int的值为10 int(10)显示结果为0000000010
2、int(3)显示结果为010 就是显示的长度不一样而已都是占用四个字节的空间

2、日期时间类型

这里写图片描述

上图可以看出,每种日期时间类型都有一个有效值范围,如果超出这个范围,在默认的SQLMode下,系统会进行错误示,并将以零值来进行存储。不同日期类型零值的表示如下:

这里写图片描述

提示:

(1)日期格式中只有TIMESTAMP 可以使用MySQL提供的函数,实现自动设置时间和自动更新时间,脚本如下:

`create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',

(2)Navicat for MqlSQL设置如下:

这里写图片描述

(3)、使用TIMESTAMP 要认识到,他会停止在2038年的一个时刻,但MySQL官方应该后期会提供相应的支持。

(4)DATETIME、TIMESTAMP都可以精确到秒,但是TIMESTAMP只占4个字节,因此可以有效考虑使用;

3、字符串类型

这里写图片描述

1、常见的char和varchar区别:

(1)char(N)用于存放固定长度的字符串,长度最大为255,比指定长度大的值将被截断,而比指定长度小的值将会用空格进行填补;

(2)varchar(N)用于保存可变长度的字符串,长度最大为65535,只存储字符串实际需要的长度,它会增加一个额外字节来保存字符串本身的长度,varchar使用额外的12字节来存储值得长度,如果列的最大长度小于或等于255,则使用1字节,否则就是使用2字节;(1个字节占8位,2的8次方是256(-128127);2个字节占16位,2的16次方为65536)

(3)char和varchar跟字符编码也有密切联系,lantin1占用1个字节,gbk占用2个字节,utf8占用3个字节。示例如下:

  • lantin1、1个字符1个字节:

这里写图片描述

  • gbk、1个字符2个字节:

这里写图片描述

  • utf8、1个字符3个字节:

这里写图片描述

2、如何选择char和varchar

六、MySQL数据类型的选择和优化案例

1、手机号存储

使用BIGINT代替CHAR或者VARCHAR存放手机号码。

这是因为CHAR或者VARCHAR,占用空间大,影响查询性能。
例如:11位手机号CHAR存储,utf8编码,则占用33个字节;
使用如果使用INT的话,INT最大只能保存10为数据,而手机号为11位,会出现溢出,所以使用BIGINT占用8个字节,支持11为数据存储。

2、IP地址可以使用INT存储

MySQL里提供了一个很好的函数:INET_ATON(),他负责把IP地址转化为数字,而另一个函数INET_NTOA()负责将数字转化为IP地址,示例如下:

注意:INT使用无符号,这是因为INT有符号最大为2147483647而无符号 最大为4294967295,如果使用有符号的话,会出现溢出,使用无符号则不会溢出。

  • 插入操作:

这里写图片描述

mysql> insert into test values(1,INET_ATON('192.168.1.213'));
  • 选择操作:

这里写图片描述

mysql> select id,INET_NTOA(ip) from test;

可以看出INT无符号最大值为4294967295,而存放IP最大为255.255.255.255刚好等于4294967295。

**3、建议使用TINYINT来代替ENUM类型。 **

**4、使用VARBINARY存储大小写敏感的变长字符串或二进制内容。 **

七、MySQL中的常用运算符

1、算术运算符

这里写图片描述

2、比较运算符

这里写图片描述

八、MySQL中的常用函数

1、字符串函数

这里写图片描述

2、数值函数

这里写图片描述

3、日期和时间函数

这里写图片描述

九、常见查看MySQL状态命令

1、查看状态

mysql> show status;

这里写图片描述

2、刷选状态显示

mysql> show global status like 'Max_used_connections';

这里写图片描述

3、查看可设置的变量

mysql> show variables\G;

这里写图片描述

4、查看最大的连接

mysql> show variables like '%max_con%';

5、查看进程的连接

mysql> show full processlist;

这里写图片描述

此命令在数据库连接出现Too many connections解决的时候,很有帮助。

6、sql执行性能分析命令explain

这里写图片描述

在索引创建及分析很有帮助。

这篇关于MySQL必知必会知识点总结一二的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/997140

相关文章

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

SQL中的外键约束

外键约束用于表示两张表中的指标连接关系。外键约束的作用主要有以下三点: 1.确保子表中的某个字段(外键)只能引用父表中的有效记录2.主表中的列被删除时,子表中的关联列也会被删除3.主表中的列更新时,子表中的关联元素也会被更新 子表中的元素指向主表 以下是一个外键约束的实例展示

基于MySQL Binlog的Elasticsearch数据同步实践

一、为什么要做 随着马蜂窝的逐渐发展,我们的业务数据越来越多,单纯使用 MySQL 已经不能满足我们的数据查询需求,例如对于商品、订单等数据的多维度检索。 使用 Elasticsearch 存储业务数据可以很好的解决我们业务中的搜索需求。而数据进行异构存储后,随之而来的就是数据同步的问题。 二、现有方法及问题 对于数据同步,我们目前的解决方案是建立数据中间表。把需要检索的业务数据,统一放到一张M

如何去写一手好SQL

MySQL性能 最大数据量 抛开数据量和并发数,谈性能都是耍流氓。MySQL没有限制单表最大记录数,它取决于操作系统对文件大小的限制。 《阿里巴巴Java开发手册》提出单表行数超过500万行或者单表容量超过2GB,才推荐分库分表。性能由综合因素决定,抛开业务复杂度,影响程度依次是硬件配置、MySQL配置、数据表设计、索引优化。500万这个值仅供参考,并非铁律。 博主曾经操作过超过4亿行数据

学习hash总结

2014/1/29/   最近刚开始学hash,名字很陌生,但是hash的思想却很熟悉,以前早就做过此类的题,但是不知道这就是hash思想而已,说白了hash就是一个映射,往往灵活利用数组的下标来实现算法,hash的作用:1、判重;2、统计次数;

性能分析之MySQL索引实战案例

文章目录 一、前言二、准备三、MySQL索引优化四、MySQL 索引知识回顾五、总结 一、前言 在上一讲性能工具之 JProfiler 简单登录案例分析实战中已经发现SQL没有建立索引问题,本文将一起从代码层去分析为什么没有建立索引? 开源ERP项目地址:https://gitee.com/jishenghua/JSH_ERP 二、准备 打开IDEA找到登录请求资源路径位置

MySQL数据库宕机,启动不起来,教你一招搞定!

作者介绍:老苏,10余年DBA工作运维经验,擅长Oracle、MySQL、PG、Mongodb数据库运维(如安装迁移,性能优化、故障应急处理等)公众号:老苏畅谈运维欢迎关注本人公众号,更多精彩与您分享。 MySQL数据库宕机,数据页损坏问题,启动不起来,该如何排查和解决,本文将为你说明具体的排查过程。 查看MySQL error日志 查看 MySQL error日志,排查哪个表(表空间

基本知识点

1、c++的输入加上ios::sync_with_stdio(false);  等价于 c的输入,读取速度会加快(但是在字符串的题里面和容易出现问题) 2、lower_bound()和upper_bound() iterator lower_bound( const key_type &key ): 返回一个迭代器,指向键值>= key的第一个元素。 iterator upper_bou

MySQL高性能优化规范

前言:      笔者最近上班途中突然想丰富下自己的数据库优化技能。于是在查阅了多篇文章后,总结出了这篇! 数据库命令规范 所有数据库对象名称必须使用小写字母并用下划线分割 所有数据库对象名称禁止使用mysql保留关键字(如果表名中包含关键字查询时,需要将其用单引号括起来) 数据库对象的命名要能做到见名识意,并且最后不要超过32个字符 临时库表必须以tmp_为前缀并以日期为后缀,备份

git使用的说明总结

Git使用说明 下载安装(下载地址) macOS: Git - Downloading macOS Windows: Git - Downloading Windows Linux/Unix: Git (git-scm.com) 创建新仓库 本地创建新仓库:创建新文件夹,进入文件夹目录,执行指令 git init ,用以创建新的git 克隆仓库 执行指令用以创建一个本地仓库的