数据库学习之MySQL (四)——DQL DDL DML DCL 事务 到底是什么

会有一股神秘感。 提交于 2020-01-23 19:30:56

MySQL学习专栏 正在持续更新中:)


MySQL语句众多,但有章可循,分类有助于学习

DQL 数据查询语言

DQL (data query language) query就是查询,类似question,query和JQery很像,也可以帮助记忆。 数据库语言中,查询是重点,很多优化算法和数据结构设计都是为了查询。
这里来做个实验:
我想查询大家的工资 需要拿到一个表 名字-工资的形式 该怎么办?

确定数据库(data1)
总表在哪(employees)
需要的栏目是什么(名字,工资)

这里就要用到select语句

USE data1;
SELECT `first_name`, `last_name`, `salary`
FROM employees;

在这里插入图片描述
明显 SELECT的是“栏目” FROM的是表格名称。
对表结构还不理解,或者,没有data1库,可以看我的上一个教程:
数据库学习之MySQL (三)——简单操作数据库 小试牛刀
然后data1数据库:data1.sql 数据库文件 配合阮菜鸡的MySQL教程使用

Q1 为啥每个栏目名字都加` 符号呢?
A1 设想,有个栏目叫show 系统会怎么识别?
所以这个符号是为了将关键字转化为普通字符串 当然不加也可以。

Q2 下列代码你觉得好看吗:

USE data1;

SELECT `hiredate`,`first_name`,`last_name`,`salary`,`email`,`commission_pct`,`manager_id`,`department_id`
FROM employees;

还是这个:

USE data1;

SELECT 
  `hiredate`,
  `first_name`,
  `last_name`,
  `salary`,
  `email`,
  `commission_pct`,
  `manager_id`,
  `department_id` 
FROM
  employees ;

A2 诀窍就是 在当前代码上 按下F12 系统自动为您排版


DDL 数据模式定义语言

数据库模式定义语言DDL(Data Definition Language) 是用于描述数据库中要存储的现实世界实体的语言。
说白了 用于创建数据库中的各种组成部分-----表、视图、索引、同义词、聚簇等,
比如下列:

CREATE TABLE `departments` (
  `department_id`   INT(4)     NOT NULL AUTO_INCREMENT,
  `department_name` VARCHAR(3) DEFAULT NULL,
  `manager_id`      INT(6)     DEFAULT NULL,
  `location_id`     INT(4)     DEFAULT NULL,
)

再看看实际表格:
在这里插入图片描述
还有 desc departments;:
在这里插入图片描述
回忆上节内容:表的每一列就是栏位 也就是我们DDL语言中创建表格的时候 第一列的每一项
在这里插入图片描述


DML 数据操作语言

数据操作语言(data manipulatation language)

插入:INSERT
更新:UPDATE
删除:DELETE

就这三种
manipulatation ->manipulate 操作 人为操纵的含义 计算机知识中经常看到的


DCL 数据控制语言

数据控制语言(Data Control Language) 定义:

用来设置或者更改数据库用户或角色权限的语句,数据控制语言DCL用来授予或回收访问数据库的某种特权,并控制数据库操纵事务发生的时间及效果,对数据库实行监视等。

其实不管那么多,DCL大致包括以下:

命令 中文 说明
GRANT 授权 允许你把你自己拥有的那些权限授给其他的用户
ROLLBACK 回滚 回滚命令使数据库状态回到上次最后提交的状态 类似干了坏事还能Ctrl-Z回去
COMMIT 提交 类似github上的commit,在数据库的插入、删除和修改操作时,只有当事务(Transaction -> trans action) 在提交到数据库时才算完成。

事务 Transaction

那么事务是什么呢?定义上,是一个逻辑单位,所谓逻辑单位,我们所有的SQL语句都是逻辑,那么事务,就是包含了数据库 CRUD(增删查改) 操作,
另外,事务有意思的是,语句间都是荣辱与共,好像我们老师说的“我们都是一个集体 共同进退”,因此所有的语句必须完整的执行,要么全都执行成功,要么全都执行失败,而失败,就会**回滚(rollback)**到原来的数据状态.

事务的好处有什么:
保证数据的完整性,失败后可以恢复到原来状态
事务与事务之间互不干扰,这样数据会更加安全

什么情况下需添加事务呢?
crud过程中有两个及以上的数据库操作是需要添加

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!