数据库中的几项区别

news/2024/5/10 20:44:44

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://wed.xjx100/news/198274.html

相关文章

Netty核心组件模块(一)

1.Bootstrap和ServerBootstrap 1>.Bootstrap意思是引导,一个Netty应用通常由一个Bootstrap开始,主要作用是配置整个Netty程序,串联各个组件,Netty中Bootstrap类是客户端程序的启动引导类,ServerBootstrap是服务端启动引导类; 2>.常见的方法有: ①.public ServerBootstr…

动态规划——带权活动选择

带权活动选择Time Limit: 3000 MSMemory Limit: 1000 KB Description 给定n个活动&#xff0c;活动ai表示为一个三元组(si,fi,vi)&#xff0c;其中si表示活动开始时间&#xff0c;fi表示活动的结束时间&#xff0c;vi表示活动的权重, si<fi。带权活动选择问题是选择一些活…

有意思的各类算法,思维题目分享

1.统计子矩阵 思路&#xff1a;二维前缀和超时&#xff0c;下面是前缀和加双指针&#xff0c;对列前缀和&#xff0c;两个玄幻控制行号&#xff0c;双指针控制列的移动 考查&#xff1a;前缀和双指针 import os import sys# 请在此输入您的代码 # 矩阵大小 N M n,m,kmap(int,…

用 CSS 自定义滚动条

简介 首先需要介绍一下滚动条的组成部分。滚动条包含 track 和 thumb&#xff0c;如下图所示&#xff1a; track是滚动条的基础&#xff0c;其中的 thumb是用户拖动支页面或章节内的滚动。 案例&#xff1a; 案例代码&#xff1a; <!DOCTYPE html> <html><he…

【C++】-模板初阶(函数和类模板)

作者&#xff1a;小树苗渴望变成参天大树 作者宣言&#xff1a;认真写好每一篇博客 作者gitee:gitee 作者专栏&#xff1a;C语言,数据结构初阶,Linux,C 如 果 你 喜 欢 作 者 的 文 章 &#xff0c;就 给 作 者 点 点 关 注 吧&#xff01; 文章目录 前言一、为什么要模板&…

MindMaster思维导图及亿图图示会员 优惠活动

MindMaster思维导图及亿图图示会员 超值获取途径 会员九折优惠方法分享给大家&#xff01;如果有需要&#xff0c;可以上~ 以下是食用方法&#xff1a; MindMaster 截图 亿图图示 截图 如果需要MindMaster思维导图或者亿图图示会员&#xff0c;可按照如下操作领取超值折扣优惠…

VP记录:Codeforces Round 873 (Div. 2) A~D1

传送门:CF 前题提要:因为本场比赛的D题让我十分难受.刚开始以为 r − l 1 r-l1 r−l1与 r − l r-l r−l应该没什么不同.但是做的时候发现假设是 r − l 1 r-l1 r−l1的话我们可以使用线段树来维护,但是 r − l r-l r−l就让线段树维护的难度大大增加,这导致我十分烦躁,所以…

Python 框架学习 Django篇 (一) 安装及基本使用

环境说明 python 3.11.3 Django 4.2.1 idea 2023.1 一、安装调试 我这里默认idea和python环境都是装好的&#xff0c;直接从建项目开始 新建项目 项目名称: demo 安装Django //配置清华镜像源 pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simp…