数据库语言的四大分类

等等,昨天我帮邻居王先生修了电脑。
他问我数据库出了什么问题。
我看着屏幕上的乱码,突然想起了我大学的数据库课。
老师们喜欢在课堂上谈论这四大支柱,说DQL是为了发现事物,DML是为了改变事物,DDL是为了构建事物,DCL是为了管理人。
当时听得一头雾水,不过现在好多了,真的有事情发生了。
例如,昨晚我在咖啡厅编写代码并调试 SQL 语句。
运行了十分钟的简单查询后,我终于发现 WHERE 条件拼写错误。
如果这个DQL处理不了,查不到数据,那就很麻烦了。
等等,还有一件事。
上次我使用DML更新数据时,不小心删除了一条重要记录。
还好我用ROLLBACK及时回滚了。
这个 DML 的威力确实令人难以置信。
如果你用得不好,它就会过去。
突然我想,这四种语言是不是就像烹饪时最重要的四种调料一样呢? DQL是味道,DML是加减法,DDL是换锅换灶,DCL是谁有权限进厨房?这个比喻正确吗?

sql属于什么数据库语言?

SQL是关系数据库的工作语言。
简而言之,他们是一对完美的情侣。

我们先来说说功能。
SQL 能做什么? CRUD,创建、读取、更新、删除,一切都基于它。
您还可以定义表、更改表结构和数据库管理,这一切都取决于它。

存储设施和数据?表是一个电子表格,由行和列组成。
先定义结构再保存数据,保证数据不会乱走。
但改变结构是有问题的,而且关联数据也很复杂。

扩展和查询?硬件升级可以提高速度,但扩展空间有限。
查询基于SQL,语法简单,速度高,还可以通过索引加速。

标准化?数据存储在单独的表中以减少重复,但关联的查询很复杂。
现代框架可以提供帮助。

交易处理?您需要保证数据的准确性,遵循ACID原则,并保证原子性、一致性、隔离性和持久性。

性能和成本?一致性是以牺牲性能为代价的,尤其是当数据量很大或者并发度很高的时候。
关系数据库通常要花钱,而且免费的可能不具备所有功能。

应用场景?财务和 ERP 是需要严格控制、复杂查询和数据一致性的地方。

总而言之,SQL是关系数据库的有力帮手。
它使用广泛,具有所有功能,但也有一些小缺陷。
自己看看,如果适合你就使用它。

数据库管理系统DBMS中用来定义模式、内模式和外模式的语言是( )。A.DML B.CC.DDL D.Basic

是的,这就是 DDL。
粗略地说,这是为了建表。
我上周刚刚处理了一个创建表的请求。
CREATE 创建新表,ALTER 修改表,DROP 删除表。
当时,Codasyl 是一个单独的产品。
它现在可以在 SQL 中使用。
您想要构建什么具体表?

数据库的几种语言

从广义上讲,数据库语言分为四个主要部分:查询数据、修改数据、创建表和删除表、管理权限。
其实很简单,但是每个方块都有陷阱。

我们先来说最重要的DQL。
重点是 SELECT-FROM-WHERE 组合。
去年我们跑了一个百万级别的订单报表项目,光是多表JOIN就让查询慢了半天。
当我们使用EXPLAIN查看时,发现ON状态是没有索引的。
还有一件事,在执行聚合函数时不要忘记 GROUP BY。
一开始我以为COUNT()和COUNT(1 )没有什么区别,后来发现因为数据量很大,差别很大。
还有一个更重要的细节。
例如,OVER()窗口函数用得好的话,可以节省很多嵌套,但是如果条件写错了,就不会运行。
说实话,有点混乱。

DML比较直接,但是去年团队不小心删除了数据,因为DELETE没有添加WHERE直接COMMIT。
一个3 000行的小表还好,但是当数据有几万行时,光靠ROLLBACK恢复可能要到明天了。
MERGE 很少使用,但功能强大。
组合营销活动数据时,主键必须完全匹配,否则数据就会乱七八糟。

DDL是一个数据库框架,但千万不要随意执行DDL命令。
去年,ALTER TABLE 在不考虑兼容性的情况下添加了列,并持续锁定旧系统数据三天。
虽然TRUNCATE很快就被清除了,但是外键触发器和约束都无效了,这是很多人没有注意到的。
如果创建表时选择了错误的列类型,则更改起来会更加困难。

最后说一下DCL,权限管理比想象的要复杂。
我们有一个项目,因为GRANT时没有添加WITH GRANT OPTION。
结果,用户甚至看不到数据。
REVOKE比想象中更占主导地位。
一旦别人执行的SELECT被取消,系统将直接杀死该进程。
数据库级别的权限是最可怕的,但是不要马虎地授予超级用户权限。
如果您更改过一次密码,则需要重置它。

等一下,还有一件事。
这四种语言在事务中的表现有所不同。
DML 可以撤销,但 DDL 不能。
在编写存储过程时尤其容易遇到这种情况。
建议新手先关注DML和DQL。
这两者如果用得好,至少可以满足8 0%的业务需求。