博客 > SQL知识:SQL常见问题解答以及MySQL常见操作
浏览量:524次评论:0次
作者:锐成网络整理时间:2024-07-08 16:05:09
SQL作为一种结构化查询语言,主要用于存取数据以及查询、更新和管理关系数据库系统。在了解SQL的时候,我们常常会遇到一些问题,比如char和varchar的区别、TRUNCATE和DELETE的区别等,今天我们收集整理了一些SQL常见问题解答以及MySQL常见操作,以下是相关内容。
问题1:char、varchar的区别是什么?
varchar是变长而char的长度是固定的。如果你的内容是固定大小的,你会得到更好的性能。
问题2: TRUNCATE和DELETE的区别是什么?
DELETE命令从一个表中删除某一行,或多行,TRUNCATE命令永久地从表中删除每一行。
问题3:什么是触发器,MySQL中都有哪些触发器?
触发器是指一段代码,当触发某个事件时,自动执行这些代码。在MySQL数据库中有如下六种触发器:
问题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
进入MySQL命令行后:G、c、q、s、h、d
MySQL存储引擎
1、InnoDB存储引擎
默认事务型引擎,最重要最广泛的存储引擎,性能非常优秀。
数据存储在共享表空间,可以通过配置分开。也就是多个表和索引都存储在一个表空间中,可以通过配置文件改变此配置。
对主键查询的性能高于其他类型的存储引擎。
内部做了很多优化,从磁盘读取数据时会自动构建hash索引,插入数据时自动构建插入缓冲区。
通过一些机制和工具支持真正的热备份。
支持崩溃后的安全恢复。
支持行级锁。
支持外键。
2、MyISAM存储引擎
拥有全文索引、压缩、空间函数。
不支持事务和行级锁、不支持崩溃后的安全恢复。
表存储在两个文件,MYD和MYI。
设计简单,某些场景下性能很好,例如获取整个表有多少条数据,性能很高。
全文索引不是很常用,不如使用外部的ElasticSearch或Lucene。
3、其他表引擎, Archive、Blackhole、CSV、Memory
使用策略 在大多数场景下建议使用InnoDB存储引擎。
重要声明:本文来自SQL数据库开发,经授权转载,版权归原作者所有,不代表锐成观点,转载的目的在于传递更多知识和信息。
相关文章推荐
2024-08-20 17:58:16
2024-08-19 17:49:29
2024-08-19 10:23:28
2024-08-16 17:06:33
2024-08-15 17:22:55
热门工具
标签选择
阅读排行
我的评论
还未登录?点击登录