SQL是什么啊?

坦率地说,SQL 是与数据库对话的语言。
结构化查询语言听起来很复杂,但实际上非常实用。
IBM 发明了它,然后每个人都使用它,它成为了一个标准。
为什么叫SQL?因为它非常容易使用。
如果您想检查任何数据,只需输入几个单词,数据库就会为您输出。

SQL分为两部分。
它称为 DML,数据操作语言。
这个东西有四个命令:SELECT、UPDATE、INSERT 和 DELETE。
从名字就可以看出,它是用来处理数据库中的数据的。
如果你想检查什么,只需选择;如果你想改变什么,就更新;如果你想添加一些东西,只需插入;如果您想删除某些内容,只需删除即可。
简单吧?
另一部分称为DDL,数据定义语言。
这不仅仅是DML,还包括创建、更改、删​​除等。
DDL主要用于定义或修改表结构。
例如,如果要创建表,请使用CREATE;如果要改变表结构,使用ALTER;如果要删除表,请使用 DROP。
这个东西多在建表的时候用到。

那么,什么是访问? Access 是一个具有前端和后端的程序。
这意味着什么?它具有可以使用VB开发的用户界面;包含可与VBA一起使用的逻辑操作;它还可以将数据存储在表中。
所有这些都打包在一个 MDB 文件中(可能是 MDE 格式)。
所以Access的开发速度非常快。

但是请注意Access不是一种存储格式,它是一个程序。
不要迷惑​​,不要让任何人说“我用VB开发MIS,数据存储在ACCESS中”。
这不是真的。
VB调用MDB文件。
这只是一个文件调用,而不是访问本身。
正式名称是“VB 的 JET 实现”。
MDB文件也可以被其他开发工具调用,如DELPHI、PB、C、PHP、ASP、CGI等。
但是调用MDB文件,这些工具不能使用很多Access功能。

另外,Access中的一些对象可以被VB调用,但前提是机器上必须安装Access,或者必须安装额外的ActiveX控件。
仅复制 MDB 文件是不够的。

SQL到底有什么用呢

SQL,全称是结构化查询语言。
说白了,就是用来管理数据库的语言。
它使用起来非常简单,而且功能非常强大。

你主要做什么工作?您可以查看数据、编辑数据、添加和删除数据。
您还可以创建新表、管理数据库结构甚至删除整个数据库。
所以现在有几个数据库系统使用它。

特别先进的是,你不必担心底层数据如何存储,你只需要处理数据的结构。
这就好比让工人盖房子,你只要求他们盖三楼,带阳台。
你不在乎工人使用什么砖块或混凝土。
所以无论你使用什么数据库,比如Oracle还是MySQL,都可以使用相同的SQL语句,非常方便。

还可以进行集合运算,一条指令的输出直接作为另一条指令的输入。
例如,在检查数据然后对其进行排序之后,或者在首先对数据进行过滤然后聚合之后。
嵌套查询也很酷,只需几行简单的语句即可执行复杂的操作。
过滤、排序、聚合操作只需一条SQL语句即可完成,无需编写大量代码。

它首先是由 IBM 研究实验室 SYSTEMR 为这个数据库系统开发的。
当时它被称为SQUARE语言,后来变成了SQL,由IBM于1 9 8 1 年推出。
这种语言一问世就非常流行,因为它简单易用。

后来美国国家标准局ANSI和ISO制定了标准。
1 9 9 2 年,ANSI SQL-9 2 和ISO/IEC SQL-9 2 发布,建立了基本规则。
虽然各个数据库之间存在一些细微的差异,但大多数都遵循这个标准。

与 SQL Server 一样,它实际上使用 ANSI SQL-9 2 的扩展版本,称为 T-SQL。
但核心仍沿用1 9 9 2 年的标准。

SQL分为四个部分:DDL管理数据库结构,DML增删改数据,DQL控制数据,DCL管理权限和事务。
就这样。

sql语言的组成

说实话,这种SQL排序方式还是挺标准的,但是当你使用的时候,你会发现排序并没有那么严格。
例如,您提到的DDL、DML、DQL和DCL在编写SQL时经常互换使用。
清楚地区分它们是好事,但不要太认真。

当我第一次学习SQL时,我遇到了一位数据库管理员。
他总是说,“你写一个DDL来创建一个表,中间有一个update语句,这是什么意思?”我当时就一头雾水,心想“这不就是创建一个表,更新默认值吗”。
后来发现他是严格区分DDL和不DML,说会影响数据库统计。

有趣的是,在MySQL这样的数据库中,如果你使用ALTER TABLE修改表结构,比如添加列,它会自动为你运行INSERT语句并填充表中的默认值。
这被认为是 DML 还是 DDL?当时没意识到,后来查资料发现这类操作归为DDL,因为本质是修改表结构的定义。

说到DQL,其实可以认为是DML的一部分。
毕竟,检查数据也是一种操作。
但单独提出问题可以帮助人们更直观地理解“数据库是用来做什么的——主要是检查和编辑”。
我接手了一个旧系统,发现他们的报表查询语句写成几百行存储过程,上面还放置了触发器。
当时觉得这个设计有点狂野,但是解决了报表需求。

关于DCL,我个人还没有详细了解过权限控制的细节,但是我记得有一个使用PostgreSQL的项目有非常详细的事务控制支持。
例如,如果使用COMMIT NOT ANY FORCE,则可以确保即使表被删除,事务记录仍然存在,并且可以在数据库恢复时恢复。
这种类型的微调在 DCL 中很常见。

关于数据完整性,我遇到了一件奇怪的事情。
有一个客户端系统使用触发器作为表之间的约束。
结果开发忘记测试触发器,导致一次数据更新引发连锁反应,冻结了数千条数据。
经过两天的排查,我终于意识到这是一个拼写错误。
这就是DCL中描述完整性规则的重要性,但是说实话,写太多会让人秃头。

关于数据模式定义(DDL),我建议初学者从最简单的CREATE TABLE开始,不要急于视图和索引。
我记得当我第一次编写视图时,我将 JOIN 编写为查询。
结果,视图变成了死查询,CPU 增加到 9 0%。
这种类型的学习只能使用真实数据来学习。