数据库-DML(数据操作语言)和DQL(数据查询语言)

本文详细介绍了MySQL的存储引擎,如MyISAM和InnoDB的区别,以及如何查看和设置存储引擎。接着,文章深入讲解了DML语句,包括插入单条和多条数据记录,以及如何将查询结果插入新表。此外,还详细阐述了DQL,如数据查询基础、列别名、空行查询和常用函数。文章通过实例展示了子查询的概念、语法结构和使用方法,如IN子查询和嵌套查询,帮助读者更好地理解和应用MySQL中的数据操作和查询。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

MySQL的存储引擎

什么是存储引擎?

关系数据库表是用于存储和组织信息的数据结构,可以将表理解为由行和列组成的表格,类似于Excel的电子表格的形式。有的表简单,有的表复杂,有的表根本不用来存储任何长期的数据,有的表读取时非常快,但是插入数据时很差;而我们在实际开发过程中,就可能需要各种各样的表,不同的表,就意味着存储不同类型的数据,数据的处理上也会存在着差异,那么。对于MySQL来说,它提供了很多种类型的存储引擎,我们可以根据对数据处理的需求,选择不同的存储引擎,从而最大限度的利用MySQL强大的功能。

存储引擎的类型

MyISAMInnoDB MemoryCSV9

MyISAMInnoDB类型主要区别

名称

InnoDB

MyISAM

事务处理

支持

不支持

数据行锁定

支持

不支持

外键约束

支持

不支持

全文索引

不支持

支持

表空间大小

较大,2

较小

MyISAM表是独立于操作系统的,这说明可以轻松地将其从Windows服务器移植到Linux服务器;每当我们建立一个MyISAM引擎的表时,就会在本地磁盘上建立三个文件,文件名就是表明。例如,我建立了一个MyISAM引擎的tb_Demo表,那么就会生成以下三个文件:

1.tb_demo.frm,存储表定义;

2.tb_demo.MYD,存储数据;

3.tb_demo.MYI,存储索引。

MyISAM表无法处理事务,这就意味着有事务处理需求的表,不能使用MyISAM存储引擎。MyISAM存储引擎特别适合在以下几种情况下使用:

1.选择密集型的表。MyISAM存储引擎在筛选大量数据时非常迅速,这是它最突出的优点。

2.插入密集型的表。MyISAM的并发插入特性允许同时选择和插入数据。例如:MyISAM存储引擎很适合管理邮件或Web服务器日志数据。

InnoDB是一个健壮的事务型存储引擎,这种存储引擎已经被很多互联网公司使用,为用户操作非常大的数据存储提供了一个强大的解决方案。一般电脑上安装的MySQL版,InnoDB就是作为默认的存储引擎。InnoDB还引入了行级锁定和外键约束,在以下场合下,使用InnoDB是最理想的选择:

1.更新密集的表。InnoDB存储引擎特别适合处理多重并发的更新请求。

2.事务。InnoDB存储引擎是支持事务的标准MySQL存储引擎。

3.自动灾难恢复。与其它存储引擎不同,InnoDB表能够自动从灾难中恢复。

4.外键约束。MySQL支持外键的存储引擎只有InnoDB。

5.支持自动增加列AUTO_INCREMENT属性。

一般来说,如果需要事务支持,并且有较高的并发读取频率,InnoDB是不错的选择。

<适用场合

  使用MyISAM:   不需事务,空间小,以查询访问为主

  使用InnoDB:     多删除、更新操作,安全性高,事务处理及并发控制>

 

查看当前默认存储引擎

语法

SHOW VARIABLES LIKE ‘storage_engine%’; 

修改存储引擎:修改my.ini配置文件

设置表的存储引擎

语法:

CREATE TABLE 表名(

    #省略代码

)ENGINE=存储引擎;

示例:

CREATE TABLE `myisam` (
   id  INT(4)
)ENGINE=MyISAM;

数据表的存储位置

MyISAM类型表文件

*.frm:表结构定义文件

*.MYD:数据文件

*.MYI:索引文件

InnoDB类型表文件

*.frm:表结构定义文件

ibdata1文件

注意:

存储位置->因操作系统而异,可查my.ini

datadir="C:/ProgramData/MySQL/MySQL Server 5.5/Data/"

innodb_data_home_dir="D:/MySQL Datafiles/"

 

DML语句——插入单条数据记录

语法:

INSERT INTO 表名 [(字段名列表)] VALUES (值列表);

注意:

1.字段名是可选的,如省略则依次插入所有字段

2.多个列表和多个值之间使用逗号分隔

3.值列表和字段名列表一一对应

4.如插入的是表中部分数据,字段名列表必填

示例:

INSERT INTO `student`(`loginPwd`,`studentName`,`gradeId`,`phone`,`bornDate`)

VALUES('123','黄小平',1,'13956799999','1996-5-8');

DML语句——插入数据记录

语法:

INSERT INTO 新表(字段名列表

 VALUES(值列表1),(列表2),……,(值列表n);

示例:

INSERT INTO `subject`(`subjectName`,`classHour`,`gradeID`)

VALUES('Logic Java',220,1),('HTML',160,1),('Java OOP',230,2);

< 为避免表结构发生变化引发的错误,建议插入数据时写明具体字段名!>

 

DML语句——将查询结果插入新表

编写SQL语句实现从学生表提取姓名、手机号两列数据存储到通讯录表中</

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值