首页 > 代码库 > 《SQL必知必会》读书笔记(一)
《SQL必知必会》读书笔记(一)
第1课:了解SQL
数据库(database)
保存有组织的数据的容器(通常是一个文件或一组文件)。
表(table)
某种特定类型数据的结构化清单。
关于表:使表名成为唯一的,实际上是数据库名和表名等的组合。有的数据库还使用数据库拥有者的名字作为唯一名的一部分。也就是说,虽然在相同数据库中不能两次使用相同的表名,但在不同的数据库中完全可以使用相同的表名。创建表时必须特别关注所用的数据类型。
列(column)
表中的一个字段。所有表都是由一个或多个列组成的。
行(row)
表中的一个记录。
说明:是记录还是行?
你可能听到用户在提到行时称其为数据库记录(record)。这两个术语多半是可以交替使用的,但从技术上说,行才是正确的术语。
主键(primary key)
一列(或一组列),其值能够唯一标识表中每一行。唯一标识表中每行的这个列(或这几列)称为主键。主键用来表示一个特定的行。没有主键,更新或删除表中特定行就极为困难,因为你不能保证操作只涉及相关的行。
提示:应该总是定义主键
虽然并不总是需要主键,但多数数据库设计者都会保证他们创建的每个表具有一个主键,以便于以后的数据操作和管理。
说明:SQL 的扩展
许多DBMS 厂商通过增加语句或指令,对SQL 进行了扩展。这种扩展的目的是提供执行特定操作的额外功能或简化方法。虽然这种扩展很有用,但一般都是针对个别DBMS 的,很少有两个以上的供应商支持这种扩展。标准SQL 由ANSI 标准委员会管理,从而称为ANSI SQL。所有主要的DBMS,即使有自己的扩展,也都支持ANSI SQL。各个实现有自己的名称,如PL/SQL、Transact-SQL 等。本书讲授的SQL 主要是ANSI SQL。
第2课 检索数据
select 基本格式:
select 列名1,列名2,……
from 表名;
注意:多条SQL 语句必须以分号(;)分隔。SQL 语句不区分大小写,但是表名、列名和值可能有所不同(这有赖于具体的DBMS 及其如何配置)。
关于注释:① --(两个连字符)嵌在行内,后面文本为注释;
②在一行的开始处使用#,这一整行都将作为注释;
③注释从/*开始,到*/结束,/*和*/之间的任何内容都是注释。这种方式常用于给代码加注释。
第3课 排序检索数据
select 列名1,列名2,……
from 表名
order by 列名; --order by 语句放在最末无论何时。
第4课 过滤数据
select 列名1,列名2,……
from 表名
where 条件;
在同时使用ORDER BY 和WHERE 子句时,应该让ORDER BY 位于WHERE 之后。
第5 课 高级数据过滤
select 列名1,列名2,……
from 表名
where 条件1 and/or 条件2;
或 where 条件1 and/or (条件2 and/or 条件3);
或 where (条件1 and/or 条件2) and/or 条件3;--and优先级敢于or,但建议用().
select 列名1,列名2,……
from 表名
where 列名 (not) in (列名1,列名2,……);
第6课 用通配符进行过滤
①select 列名1,列名2,……
from 表名
where 列名 like ‘abc%‘; --列名以abc开头的行,%表示任何字符出现任意次数,可以出现在开头、结尾、中间。
②select 列名1,列名2,……
from 表名
where 列名 like ‘_abc‘; --_(下划线)的用途与%一样,但它只匹配单个字符,而不是多个字符。
③select 列名1,列名2,……
from 表名
where 列名 like ‘[]%‘; --[]表示集合。这里表示以内部元素开头,任意字符结尾。
第7课 创建计算字段
许多数据库(不是所有)保存填充为列宽的文本值,而实际上你要的结果不需要这些空格。为正确返回格式化的数据,必须去掉这些空格。这可以使用SQL 的RTRIM()函数来完成.
说明:TRIM 函数
大多数DBMS 都支持RTRIM()(正如刚才所见,它去掉字符串右边的空格)、LTRIM()(去掉字符串左边的空格)以及TRIM()(去掉字符串左右两边的空格)。
下面的例子是对检索出的数据进行算术计算以及适用别名:
《SQL必知必会》读书笔记(一)