数据库中的几项区别

news/2024/11/16 19:49:14/

mysqlinexists区别

mysql中的in语句是把外表和内表作hash 连接,而exists语句是对外表作loop

循环,每次loop循环再对内表进行查询。一直大家都认为existsin语句的效率要高,这种说法其实是不

准确的。这个是要区分环境的。

1. 如果查询的两个表大小相当,那么用inexists差别不大。

2. 如果两个表中一个较小,一个是大表,则子查询表大的用exists,子查询表小的用in

3. not in not exists:如果查询语句使用了not in,那么内外表都进行全表扫描,没有用到索引;而

not extsts的子查询依然能用到表上的索引。所以无论那个表大,用not exists都比not in要快。

varcharchar的区别

char的特点

char表示定长字符串,长度是固定的;如果插入数据的长度小于char的固定长度时,则用空格填充;

因为长度固定,所以存取速度要比varchar快很多,甚至能快50%,但正因为其长度固定,所以会占据多

余的空间,是空间换时间的做法;

对于char来说, 多能存放的字符个数为255,和编码无关 varchar的特点

varchar表示可变长字符串,长度是可变的;

插入的数据是多长,就按照多长来存储;

varchar在存取方面与char相反,它存取慢,因为长度不固定,但正因如此,不占据多余的空间,是时间

换空间的做法;

对于varchar来说, 多能存放的字符个数为65532 总之,结合性能角度(char更快)和节省磁盘空间角

度(varchar更小),具体情况还需具体来设计数据库才是妥当的做法。

varchar(50)50的涵义

多存放50个字符,varchar(50)(200)存储hello所占空间一样,但后者在排

序时会消耗更多内存,因为order by col采用fixed_length计算col长度

(memory引擎也一样)。在早期 MySQL 版本中, 50 代表字节数,现在代表字符数。

int(20)20的涵义

是指显示字符的长度。20表示 大显示宽度为20,但仍占4字节存储,存储范围不变;

不影响内部存储,只是影响带 zerofill 定义的 int 时,前面补多少个 0,易于报表展示

1 -- 1) 查询出2011年以后入职的员工信息

2 -- 2) 查询所有的部门信息,与上面的虚拟表中的信息比对,找出所有部门ID相等的员工。

3 select * from dept d, (select * from employee where join_date >'2011-1-

1') e where e.dept_id = d.id;

4 -- 使用表连接:

5 select d.*, e.* from dept d inner join employee e on d.id = e.dept_id whe re

e.join_date >'2011-1-1'Delete

Truncate

Drop

类型

属于DML

属于DDL

属于DDL

回滚

可回滚

不可回滚

不可回滚

删除内

表结构还在,删除表的全

部或者一部分数据行

表结构还在,删除

表中的所有数据

从数据库中删除表,所有的数据

行,索引和权限也会被删除

删除速

删除速度慢,需要逐行删

删除速度快

删除速度快

mysql为什么这么设计

对大多数应用没有意义,只是规定一些工具用来显示字符的个数;int(1) int(20)存储和计算均一样;

mysqlint(10)char(10)以及varchar(10)的区别

int(10)10表示显示的数据的长度,不是存储数据的大小; chart(10)varchar(10)10表示存储

数据的大小,即表示存储多少个字符。

int(10) 10位的数据长度 9999999999,占32个字节,int4 char(10) 10位固定字符串,不足补空格 

10个字符

varchar(10) 10位可变字符串,不足补空格 10个字符

char(10)表示存储定长的10个字符,不足10个就用空格补齐,占用更多的存储空间

varchar(10)表示存储10个变长的字符,存储多少个就是多少个,空格也按一个字符存储,这一点

是和char(10)的空格不同的,char(10)的空格表示占位不算一个字符

FLOATDOUBLE的区别是什么?

FLOAT类型数据可以存储至多8位十进制数,并在内存中占4字节。

DOUBLE类型数据可以存储至多18位十进制数,并在内存中占8字节。

dropdeletetruncate的区别

三者都表示删除,但是三者有一些差别:

因此,在不再需要一张表的时候,用drop;在想删除部分数据行时候,用 delete;在保留表而删除所有

数据的时候用truncate

UNIONUNIONALL的区别?

如果使用UNION ALL,不会合并重复的记录行

效率 UNION 高于 UNION ALL


http://www.ppmy.cn/news/73431.html

相关文章

分布式运用之rsync远程同步

1.rsync的相关知识 1.1 rsync简介 rsync(Remote Sync,远程同步)是一个开源的快速备份工具,可以在不同主机之间镜像同步整个目录树,支持增量备份,并保持链接和权限,且采用优化的同步算法&#x…

【HTTP协议详解】

目录 1.什么是http2.抓包工具2.1 抓包工具2.2 抓包原理 3.Http协议格式3.1Http请求报文3.2Http响应报文的格式 4.请求报文格式4.1 报文首行4.2 请求报文header 5. 响应报文格式6.构造Http请求7.Https协议7.1 对称密钥7.2 非对称密钥7.3 证书 1.什么是http HTTP全称为“超文本协…

CorelDRAW2023最新v24.4.0.623中文稳定版

图形设计软件CorelDRAW2023最新版下载矢量图形制作工具,CorelDRAW(简称CDR)是一款专业的图形设计软件。该软件是Corel公司开发的一款功能强大的专业平面设计软件、矢量设计软件、矢量绘图软件。这款矢量图形制作工具软件广泛应用于商标设计、标志制作、封…

java设计模式之原型设计模式的前世今生

原型设计模式是什么? 原型设计模式是一种创建型设计模式,它允许您使用现有的对象作为模板来创建新对象。在原型模式中,您创建一个现有对象的副本,并根据需要进行修改,而不是从头开始创建新对象。这种模式的核心思想是…

(华三AC+AP)在华三AC上通过用户mac地址或者IP地址查询在那一台AP下

起因:用户终端的WiFi信号一直不停地断开重连,发现AP的信号消失了,检查配置并没有问题,但是在后来发现重启可以让AP恢复使用,但是过一段时间还是会出现这样的问题,因为AP没有备用换下维修,这个AP…

java常用工具之Scanner类

目录 简介一、扫描控制台输入1.1nextLine1.2nextInt1.3其他方法 二、扫描文件三、查找匹配项四、小结 简介 Java 的 Scanner 类是一个方便在控制台扫描用户输入的工具类,虽然它也可以扫描文件内容,但我们通常更喜欢它扮演前面的角色,因为扫描…

Linux 系统下 C/C++ 程序编译

文章目录 简介C 程序编译单个源文件生成可执行程序源文件生成对象文件多个源文件生成可执行程序编译预处理生成汇编代码构建静态库构建共享库 简介 在 Linux 操作系统中,GCC 是一种现代化的编译器集合,它可用于编译多种程序设计语言,包括 C 语…

InnoDB 一条更新语句的执行过程

连接器,解析器,优化器,执行器,这里就不细说了。 1.检查要更新的数据页是否在 Buffer pool 中,如果不存在从磁盘上读取数据页,放到 Buffer Pool 中; 如果存在,则直接修改对应的数据页…