锐安盾-网站安全加速服务

中国站

联系我们

400-002-9968

售前咨询

售后服务

注册 登录

博客 > SQL知识:SQL常见问题解答以及MySQL常见操作

SQL知识:SQL常见问题解答以及MySQL常见操作

  • 标签:
  • SQL
  • MySQL
  • 触发器

浏览量:346次评论:0次

作者:锐成网络整理时间:2024-07-08 16:05:09

SQL作为一种结构化查询语言,主要用于存取数据以及查询、更新和管理关系数据库系统。在了解SQL的时候,我们常常会遇到一些问题,比如char和varchar的区别、TRUNCATE和DELETE的区别等,今天我们收集整理了一些SQL常见问题解答以及MySQL常见操作以下是相关内容。

SQL知识:SQL常见问题解答以及MySQL常见操作

问题1:char、varchar的区别是什么?

varchar是变长而char的长度是固定的。如果你的内容是固定大小的,你会得到更好的性能。

问题2: TRUNCATE和DELETE的区别是什么?

DELETE命令从一个表中删除某一行,或多行,TRUNCATE命令永久地从表中删除每一行。

问题3:什么是触发器,MySQL中都有哪些触发器?

触发器是指一段代码,当触发某个事件时,自动执行这些代码。在MySQL数据库中有如下六种触发器:

  • 1、Before Insert
  • 2、After Insert
  • 3、Before Update
  • 4、After Update
  • 5、Before Delete
  • 6、After Delete

问题4:FLOAT和DOUBLE的区别是什么?

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

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

问题5:如何在MySQL种获取当前日期?

SELECT CURRENT_DATE();

问题6:如何查询第n高的工资?

SELECT DISTINCT(salary) from employee ORDER BY salary DESC LIMIT n-1,1

问题7:MySQL数据类型表达的意义(int(0)、char(16)、varchar(16)、datetime、text)

1、整数类型,包括TINYINT、SMALLINT、MEDIUMINT、INT、BIGINT,分别表示1字节、2字节、3字节、4字节、8字节整数。任何整数类型都可以加上UNSIGNED属性,表示数据是无符号的,即非负整数。 长度:整数类型可以被指定长度,例如:INT(11)表示长度为11的INT类型。长度在大多数场景是没有意义的,它不会限制值的合法范围,只会影响显示字符的个数,而且需要和UNSIGNED ZEROFILL属性配合使用才有意义。 例子,假定类型设定为INT(5),属性为UNSIGNED ZEROFILL,如果用户插入的数据为12的话,那么数据库实际存储数据为00012。

2、实数类型,包括FLOAT、DOUBLE、DECIMAL。 DECIMAL可以用于存储比BIGINT还大的整型,能存储精确的小数。 而FLOAT和DOUBLE是有取值范围的,并支持使用标准的浮点进行近似计算。 计算时FLOAT和DOUBLE相比DECIMAL效率更高一些,DECIMAL你可以理解成是用字符串进行处理。

3、字符串类型,包括VARCHAR、CHAR、TEXT、BLOB VARCHAR用于存储可变长字符串,它比定长类型更节省空间。 VARCHAR使用额外1或2个字节存储字符串长度。列长度小于255字节时,使用1字节表示,否则使用2字节表示。 VARCHAR存储的内容超出设置的长度时,内容会被截断。 CHAR是定长的,根据定义的字符串长度分配足够的空间。 CHAR会根据需要使用空格进行填充方便比较。 CHAR适合存储很短的字符串,或者所有值都接近同一个长度。 CHAR存储的内容超出设置的长度时,内容同样会被截断。

使用策略: 对于经常变更的数据来说,CHAR比VARCHAR更好,因为CHAR不容易产生碎片。 对于非常短的列,CHAR比VARCHAR在存储空间上更有效率。 使用时要注意只分配需要的空间,更长的列排序时会消耗更多内存。 尽量避免使用TEXT/BLOB类型,查询时会使用临时表,导致严重的性能开销。

4、枚举类型(ENUM),把不重复的数据存储为一个预定义的集合。 有时可以使用ENUM代替常用的字符串类型。 ENUM存储非常紧凑,会把列表值压缩到一个或两个字节。 ENUM在内部存储时,其实存的是整数。 尽量避免使用数字作为ENUM枚举的常量,因为容易混乱。 排序是按照内部存储的整数

5、日期和时间类型,尽量使用timestamp,空间效率高于datetime, 用整数保存时间戳通常不方便处理。 如果需要存储微妙,可以使用bigint存储。

答:int(0)表示数据是INT类型,长度是0、char(16)表示固定长度字符串,长度为16、varchar(16)表示可变长度字符串,长度为16、datetime表示时间类型、text表示字符串类型,能存储大字符串,最多存储65535字节数据)

MySQL常见操作

MySQL的连接和关闭:mysql -u -p -h -P

  • -u:指定用户名
  • -p:指定密码
  • -h:主机
  • -P:端口

进入MySQL命令行后:G、c、q、s、h、d

  • G:打印结果垂直显示
  • c:取消当前MySQL命令
  • q:退出MySQL连接
  • s:显示服务器状态
  • h:帮助信息
  • d:改变执行符

MySQL存储引擎

1、InnoDB存储引擎

默认事务型引擎,最重要最广泛的存储引擎,性能非常优秀。

数据存储在共享表空间,可以通过配置分开。也就是多个表和索引都存储在一个表空间中,可以通过配置文件改变此配置。

对主键查询的性能高于其他类型的存储引擎。

内部做了很多优化,从磁盘读取数据时会自动构建hash索引,插入数据时自动构建插入缓冲区。

通过一些机制和工具支持真正的热备份。

支持崩溃后的安全恢复。

支持行级锁。

支持外键。

2、MyISAM存储引擎

拥有全文索引、压缩、空间函数。

不支持事务和行级锁、不支持崩溃后的安全恢复。

表存储在两个文件,MYD和MYI。

设计简单,某些场景下性能很好,例如获取整个表有多少条数据,性能很高。

全文索引不是很常用,不如使用外部的ElasticSearch或Lucene。

3、其他表引擎, Archive、Blackhole、CSV、Memory

使用策略 在大多数场景下建议使用InnoDB存储引擎。

重要声明:本文来自SQL数据库开发,经授权转载,版权归原作者所有,不代表锐成观点,转载的目的在于传递更多知识和信息。

我的评论

还未登录?点击登录

微信扫码沟通
微信扫码沟通

微信扫码沟通

售前咨询
合作
售后
return head