SQL必知必会读书笔记(一)

管理系统(DBMS)

数据库是通过 DBMS 创建和操纵的容器,而具体它究竟是什么,形式如何,各种数据库都不一样


表(table) 
某种特定类型数据的结构化清单。
数据库中的每个表都有一个名字来标识自己。这个名字是唯一的,即数据库中没有其他表具有相同的名字。有的数据库还使用数据库拥有者的名字作为唯一名的一部分。也就是说,虽然在相同数据库中不能两次使用相同的表名,但在不同的数据库中完全可以使用相同的表名。


数据类型兼容 
数据类型及其名称是 SQL 不兼容的一个主要原因。虽然大多数基本数据类型得到了一致的支持,但许多高级的数据类型却没有。更糟的是,偶然会有相同的数据类型在不同的 DBMS 中具有不同的名称。对此用户毫无办法,重要的是在创建表结构时要记住这些差异。表中的任何列都可以作为主键,
只要它满足以下条件:
1.任意两行都不具有相同的主键值;
2.每一行都必须具有一个主键值(主键列不允许 NULL 值);
3.主键列中的值不允许修改或更新;
4. 主键值不能重用(如果某行从表中删除,它的主键不能赋给以后的新行)。


关键字(keyword) 
作为 SQL 组成部分的保留字。关键字不能用作表或列的名字。所需的列名写在 SELECT 关键字之后,FROM 关键字指出从哪个表中检索数据。


结束 SQL 语句 
多条 SQL 语句必须以分号(;)分隔。多数 DBMS 不需要在单条 SQL语句后加分号,但也有 DBMS 可能必须在单条 SQL 语句后加上分号。当然,如果愿意可以总是加上分号。事实上,即使不一定需要,加上分号也肯定没有坏处


SQL 语句和大小写 
请注意,SQL 语句不区分大小写,因此 SELECT 与 select 是相同的。同样,写成 Select 也没有关系。许多 SQL 开发人员喜欢对 SQL 关键字使用大写,而对列名和表名使用小写,这样做使代码更易于阅读和调试。不过,一定要认识到虽然 SQL 是不区分大小写的,但是表名、列名和值可能有所不同(这有赖于具体的 DBMS 及其如何配置

使用空格 
在处理 SQL 语句时,其中所有空格都被忽略。SQL 语句可以写成长长的一行,也可以分写在多行。多数 SQL 开发人员认为,将 SQL 语句分成多行更容易阅读和调试DISTINCT 关键字作用于所有的列,不仅仅是跟在其后的那一列。
注释使用-- (两个连字符)嵌在行内。-- 之后的文本就是注释,在一行的开始处使用#,这一整行都将作为注释。注释从/*开始,到*/结束,/*和*/之间的任何内容都是注释。


ORDER BY 子句的位置 
在指定一条 ORDER BY 子句时,应该保证它是 SELECT 语句中最后一条子句。如果它不是最后的子句,将会出现错误消息。
提示:通过非选择列进行排序 
通常,ORDER BY 子句中使用的列将是为显示而选择的列。但是,实际上并不一定要这样,用非检索的列排序数据是完全合法的。

NULL 
无值(no value),它与字段包含 0、空字符串或仅仅包含空格不同。
SQL(像多数语言一样)在处理 OR 操作符前,优先处理 AND 操作符。此问题的解决方是使用圆括号对操作符进行明确分组。
为什么要使用 IN 操作符?其优点如下
1. 在有很多合法选项时,IN 操作符的语法更清楚,更直观。
2. 在与其他 AND 和 OR 操作符组合使用 IN 时,求值顺序更容易管理。
3. IN 操作符一般比一组 OR 操作符执行得更快(在上面这个合法选项很少的例子中,你看不出性能差异)。
4. IN 的最大优点是可以包含其他 SELECT 语句,能够更动态地建立WHERE 子句。第 11 课会对此进行详细介绍。


请注意 NULL 
通配符%看起来像是可以匹配任何东西,但有个例外,这就是 NULL。方括号([])通配符用来指定一个字符集,它必须匹配指定位置(通配符的位置)的一个字符。正如所见,SQL 的通配符很有用。但这种功能是有代价的,即通配符搜索一般比前面讨论的其他搜索要耗费更长的处理时间。这里给出一些使用通配符时要记住的技巧。不要过度使用通配符。如果其他操作符能达到相同的目的,应该使用其他操作符。在确实需要使用通配符时,也尽量不要把它们用在搜索模式的开始处。把通配符置于开始处,搜索起来是最慢的。仔细注意通配符的位置。如果放错地方可能不会返回想要的数据。


拼接(concatenate) 
将值联结到一起(将一个值附加到另一个值)构成单个值
SELECT RTRIM(vend_name) + ' (' + RTRIM(vend_country) + ')' 
FROM Vendors 
ORDER BY vend_name;

扫描二维码关注公众号,回复: 6104228 查看本文章


TRIM 函数 
大多数 DBMS 都支持 RTRIM()(正如刚才所见,它去掉字符串右边的空格)、LTRIM()(去掉字符串左边的空格)以及 TRIM()(去掉字符串左右两边的空格)。


别名(alias)

是一个字段或值的替换名。别名用 AS 关键字赋予。


别名的其他用途 
别名还有其他用途。常见的用途包括在实际的表列名包含不合法的字符(如空格)时重新命名它,在原来的名字含混或容易误解时扩充它。
 

猜你喜欢

转载自blog.csdn.net/red_red_red/article/details/89424644