你能举出一些有趣和有用的项目的例子吗?你可以用SQL(结构化查询语言)来处理这些项目吗?

推荐答案1

您确实将其倒退. SQL是一个RDBMS程序接口,用于定义和操纵数据.对于起动系统,请考虑您最喜欢的爱好.写下您对爱好的了解.业余爱好的规则是什么?然后浏览数据发现,数据定义,业务规则,关系和归一化以创建您的ERD.然后,您可以进行过程模型.最后,您可以启动编程并使用SQL获取,插入,更新数据.

推荐答案2

我要让其他人回答索引的工作方式,但想提出一点.

索引不是强制性的或没有好处所有情况.假设您有一个诸如状态之类的桌子或仅有10行的东西.您的选择将带来所有行,因为该表格适合单个页面.无需索引.

推荐答案3

在1990年,我在抱怨SQL的奇怪之处时,发表了一份声明,我已经在1990年或'91左右的公告板和Usenet列表开始了很多次.我将其命名为" Kagel的SQL的第一定律":

Kagel的SQL的第一定律

任何选择语句都可以重写任何选择语句至少三种不同的方法并返回相同的结果!

首先是Kagel的SQL的第一定律:

您有自从SQL '92的出现和"加入…on…" Syntax以来那使四个.添加派生的桌子制作五个和CTE至少六个. ,没有人向我展示任何精选的陈述,我无法重写许多不同的方式.我确实可以提供一个,但是它并不是真正的数据库选择,因为它仅返回常数值,并且仅包含一个投影子句,而没有其他条款.那将是这样的查询:今天选择;或选择13*234535;两者在大多数(但不是全部)RDBMS系统上都是合法的SQL,甚至实际上这些系统都可以被重写为投影子句中的微不足道派生表,从子句中的派生表或CTE表达式中的派生表.

好的,这是一个相当简单的查询的示例:

关联子查询版本:

  1. SELECT a.*, (SELECT b.col_d FROM othertab AS b WHERE b.keycol = a.col3) AS b_value 
  2. FROM sometable AS a 
  3. WHERE a.col4 >12345; 

无子查询版本:

  1. SELECT a.*, b.col_d AS b_value 
  2. FROM sometable AS a 
  3. JOIN othertab AS b 
  4. ON b.keycol = a.col3 
  5. WHERE a.col4 > 12345; 

派生的表版本:

  1. SELECT a.*, b.value 
  2. FROM sometable AS a 
  3. JOIN ( 
  4. SELECT col_d 
  5. FROM othertab 
  6. ) AS b( b_value ) 
  7. ON b.keycol = a.col3 
  8. WHERE a.col4 > 12345; 
  1. SELECT a.*, b.value 
  2. FROM sometable AS a 
  3. JOIN ( 
  4. SELECT col_d 
  5. FROM othertab 
  6. ) AS b( b_value ) 
  7. ON b.keycol = a.col3 
  8. WHERE a.col4 > 12345; 

我可以继续…

推荐答案4

是的,SQL不代表结构化查询语言. SQL最初是由IBM在1970年代开发的.它起源于结构化语言的概念是作为对"意大利面条法规"的恐怖的辩护.非结构化的语言使您可以从程序中的一个位置跳到另一个位置,通常使用命令. SQL,最初命名的续集包含跳跃能力,至今仍在使用:

e时p> 续集是结构化英语查询语言的首字母缩写.之所以使用这个聪明的名字,是因为续集陈述非常像英语语言句子,但结构更高.它是结构化的英语.续集也是一种查询语言.但是,它不是 结构化 查询语言.这不是任何形式的结构化语言.它是并且它仍然是一种非结构化的查询语言. SQL是结构化查询语言的首字母缩写的想法,该想法是由不知道历史记录并假设结构化查询语言的人重新注册到该语言上的.虽然在续集首字母缩写词代表结构化时,Q代表查询,而L代表语言,而不是这些字母在SQL中所代表的.实际上,它们不属于任何东西,就像C不愿代表C语言中的任何东西一样.

推荐答案5

环顾四周.你收集漫画吗?创建一个数据库以对其进行分类.你喜欢去博物馆吗?创建一个您去过的博物馆的数据库以及您所见过的东西.做到这一点,以便您可以搜索和分组信息.实际上,这就是弄清楚如何设计和构建数据库,将数据输入其中,然后将数据恢复出来.您可以想到的几乎可以使用的任何东西,也许已经在数据库中.