SQL必知必会(第5版) 读书笔记
适用范围
本书涵盖的DBMS一般来说,本书中所讲授的SQL可以应用到任何数据库管理系统(DBMS)。但是,各种SQL实现不尽相同,本书介绍的SQL主要适用于以下系统(需要时会给出特殊说明和注释):
❑ IBM DB2(包括云上DB2);❑ Microsoft SQL Server(包括Microsoft SQL Server Express);❑ MariaDB;❑ MySQL;❑ Oracle(包括Oracle Express);❑ PostgreSQL;❑ SQLite。
http://forta.com/books/0135182794
书中所有的数据库示范例
了解mysql
我们需要以某种方式与数据库打交道,而sql正是用来实现这一任务的语言。
其实,每当我们在手机上选取联系人,或是从电子邮件地址里查找名字时,就是在使用数据库。我们在网站上进行搜索,也是在使用数据库。
但尽管我们一直都在使用数据库,但我们仍然对究竟什么事数据库并不清楚。所以,先了解一些最重要的数据库术语,并加以说明。
数据库(database)
从sql的角度来看数据库是以某种有组织的方式储存的数据集合。最简单的方法是将数据库想象成一个文件柜。文件柜只是一个存放数据的物理位置,他不管数据是什么,也不管数据是如何组织的。
数据库是保存有组织的数据的容器(通常是一个文件或一组文件)
ps:人们通常用数据酷这个术语来代表数据库软件,这是不正确的,也因此产生了许多混淆。确切的说,数据库软件应称为数据库管理系统(DBMS)。数据库是通过DBMS创建和操纵的容器,而就他究竟是什么,形式什么样的,各种数据库都不一样。
表(table)
你往文件柜里放资料时,并不是随便将它们扔进某个抽屉就结束了,而是在文件柜中创建文件,然后将相关资料放入特定的文件中。
在数据库领域中,这些文件称为表。表是一种结构化的文件,可用来存储特定的类型的数据。表可以保存顾客清单,产品目录,活着其他信息清单。
表是某种特定类型数据的结构化清单
关键点:存储在表中的数据是同一种类型的数据或清单。绝不要把顾客的清单和订单的清单存储在同一个数据库表中,否则以后的检索和访问会很困难。应该创建两个表,每个清单一个表。
表名
数据库中的每一个表都有一个名字来标识自己。这个名字是唯一的,即数据库中没有其他表具有相同的名字。
在一个数据库中不能使用相同的表名,但在不同的数据库中完全可以使用相同的表名。
表具有一些特性,这些特性定义了数据在表中如何存储,包括存储什么样的数据,数据如何分解,各部分信息如何命名等信息。描述表的这组信息就是所谓的模式(schema),模式可以用来描述数据库中特定的表,也可以用来描述整个数据库(和其中表的关系)
模式
关于数据库和表的布局及特性的信息
列和数据类型
表由列组成。列存储表中某部分的信息。
列(column)
表中的一个字段。所有表都是由一个或多个列组成的。
数据分解
正确的将数据分解为多个列极为重要。例如,城市,州,邮政编码应该总是彼此独立的列。通过分解这些数据,才有可能利用特定的列对数据进行分类和过滤。如果城市和州组合在一个列中,则按州进行分类或过滤就会很困难。
数据类型
允许什么类型的数据。每个表列都有相应的数据类型,他限制(或允许)该列中相应的数据类型。
数据类型限定了可存储在列中的数据种类(例如,放置在数值字段中录入字符值)。数据类型还帮助正确的分类数据,并在优化磁盘使用方面起重要作用。因此,在创建表时必须特效关注所用的数据类型。
数据类型兼容
数据类型及其名称是sql不兼容的一个主要原因。虽然大多数基本数据类型得到了一致的智齿,但许多高级的数据类型却没有。更糟的是,偶然会有相同的数据类型在不同的DBMS中具有不同的名称。对此用户毫无办法,重要的是在创建表结构时要记住这些差异。
行
表中的数据是按行存储的,所保存的每个记录存储在自己的行内。如果江表想象成网格,网格中垂直的列为表列,水平行为表行。
行是表中的一个记录。有些人在提到行时称其为数据库记录(record)。这两个术语多半可以互通,但从技术上,行才是正确的术语。
主键(primary key)
表中每一行都应该有一列(或几列)可以唯一标识自己。顾客表可以使用顾客编号,而订单表可以使用订单id,雇员表可以使用雇员id。
一列(或几列),其值能够唯一标识表中每一行。
唯一标识表中每行的这个列(或这几列)
tips:
应该总是定义主键
虽然并不总是需要主键,但多数数据库设计者都会保证他们创建的每一个表具有一个主键,以便于以后的数据操作和管理。
表中的任何列都可以作为主键,只要他满足以下条件:
1.任意两行都不具有相同的主键值;
2.每一行都必须具有一个主键值(主键列不能为NULL)
3.主键列中的值不允许修改货更新;
4.主键值不能重用(如果某行从表中删除,它的主键不能赋给以后的新行)。
主键通常定义在表的一列上,但并不是必须这么做,也可以一起使用多个列作为主键。在使用多列作为主键时,上述条件必须应用到所有列,所有列值的组合必须是唯一的(但其中单个列的值可以不唯一)。
什么是sql
SQL(发音为字母S-Q-L或sequel)是Structured Query Language(结构化查询语言)的缩写。SQL是一种专门用来与数据库沟通的语言。
设计sql的目的是很好地完成一项任务---提供一种从数据库中读写数据的简单有效的方法。
sql的优点:
1.sql不是某个特定数据库厂商专有的语言。绝大多数重要的DBMS都智齿sql,所以学习此语言使你几乎能与所有数据库打交道。
2.sql简单易学。他的语句全都是由有很强的描述性的英语单词组成,而且这些单词的数目不多。
3.sql虽然看上去很简单,但实际上是一种强有力的语言,灵活使用其语言元素,可以进行非常复杂和高级的数据库操作。
本书讲授的SQL主要是ANSI SQL。在使用某种DBMS特定的SQL时,会特别说明。
sql语句
SELECT语句
最近常用的sql语句大概就是select语句了。
他的用途是从一个或多个表中检索信息。
关键字(keyword)
作为sql组成部分的保留字。关键字不能用作表或列的名字。
使用select检索表数据,必须至少给出两条信息---想选择什么,以及从什么地方选择。
简单的select语句
select prod_name
from products;
解析:
上述语句利用select语句从products中检索一名为prod_name的列。所需的列名写在select关键字之后。from关键字指出从哪个表中检索数据。
根据你使用的具体DBMS和客户端,可能你会看到一条信息说明检索了多少行,以及花了多长时间。例如,mysql命令行会显示类似于下面这样一行信息:
9 rows in set (0.01sec)
未排序数据
查询数据的顺序不同,出现这种情况很正常。如果没有明确的排序查询结果,则返回的数据没有特定的顺序。返回数据的顺序可能是数据被添加到表的顺序,也可能不是。只要返回相同行数的行,就是正确的。
结束sql语句
多条sql语句必须以分号(;)分割。多数DBMS不需要在单条sql语句后加分号,但也有DBMS可能必须在单条sql语句后加分号。
sql语句和大小写
sql语句不区分大小写,因此SELECT和select是一样的。同样,写成Select也是没有关系的。
建议sql关键字使用大写,而对于列名和表名使用小写,这样做代码更易于阅读和调试。
使用空格
在处理sql语句时,其中所有的空格都被忽略。sql语句可以写成长长的一行,也可以分写在多行。下面这三种写法的作用是一样的。
1.
select prod_name
from products;
2.
select prod_name from products;
3.
select
prod_name
from
products;
检索多个列
要想从一个表中检索多个列,任然使用相同的select语句。唯一不同是必须在select关键字后给出多个列名,列名之间必须以逗号分隔。
当心逗号,
在选择多个列时,一定要在列名之间加上逗号,但最后一个列名不加。否则会报错。
sql语句一般返回原始的。无格式的数据,不同的DBMS和客户端显示数据的方式略有不同(如对齐格式不同,小数位数不同)。数据的格式化是表示问题,而不是检索问题。因此,如何表示一般会在显示该数据的应用程序中规定。通常很少直接使用实际检索出的数据(没有应用程序提供的格式)
检索所有列
如果不给出任何列名,则select语句将检索表中的所有列。
select *
from products;
SQL必知必会(第5版) 读书笔记的更多相关文章
- 读书笔记汇总 - SQL必知必会(第4版)
本系列记录并分享学习SQL的过程,主要内容为SQL的基础概念及练习过程. 书目信息 中文名:<SQL必知必会(第4版)> 英文名:<Sams Teach Yourself SQL i ...
- 学习《SQL必知必会(第4版)》中文PDF+英文PDF+代码++福达BenForta(作者)
不管是数据分析还是Web程序开发,都会接触到数据库,SQL语法简洁,使用方式灵活,功能强大,已经成为当今程序员不可或缺的技能. 推荐学习<SQL必知必会(第4版)>,内容丰富,文字简洁明快 ...
- 读书笔记--SQL必知必会--建立练习环境
书目信息 中文名:<SQL必知必会(第4版)> 英文名:<Sams Teach Yourself SQL in 10 Minutes - Fourth Edition> MyS ...
- 《SQL必知必会》学习笔记(一)
这两天看了<SQL必知必会>第四版这本书,并照着书上做了不少实验,也对以前的概念有得新的认识,也发现以前自己有得地方理解错了.我采用的数据库是SQL Server2012.数据库中有一张比 ...
- SQL 必知必会
本文介绍基本的 SQL 语句,包括查询.过滤.排序.分组.联结.视图.插入数据.创建操纵表等.入门系列,不足颇多,望诸君指点. 注意本文某些例子只能在特定的DBMS中实现(有的已标明,有的未标明),不 ...
- 《SQL必知必会》笔记
SQL必知必会(第4版) 作者:[美]Ben Forta 本书介绍了sql在不同数据库工具(Oracle.SQLite.SQL server.MySQL.MariaDB.PostgreSQL...)是 ...
- SQL必知必会 -------- SELECT、注释
主要是看<SQL必知必会>第四版的书,而写的一些SQL笔记,红色的是方便以后查询的sql语句,工作中主要是使用mysql数据库,所以笔记也是围绕mysql而写的. 下文调试的数据表sql语 ...
- MySQL必知必会(第4版)整理笔记
参考书籍: BookName:<SQL必知必会(第4版)> BookName:<Mysql必知必会(第4版)> Author: Ben Forta 说明:本书学习笔记 1.了解 ...
- 读书笔记--SQL必知必会12--联结表
12.1 联结 联结(join),利用SQL的SELECT在数据查询的执行中联结表. 12.1.1 关系表 关系数据库中,关系表的设计是把信息分解成多个表,一类数据一个表,各表通过某些共同的值互相关联 ...
- 读书笔记--SQL必知必会18--视图
读书笔记--SQL必知必会18--视图 18.1 视图 视图是虚拟的表,只包含使用时动态检索数据的查询. 也就是说作为视图,它不包含任何列和数据,包含的是一个查询. 18.1.1 为什么使用视图 重用 ...
随机推荐
- js es6 标签模板还原字符串
前言 模板字符串的功能,它可以紧跟在一个函数名后面,该函数将被调用来处理这个模板字符串.这被称为"标签模板"功能(tagged template). 举个栗子: function ...
- ASP.NET CORE 框架揭秘读书笔记系列——ASP.NET应用程序(二)
一.ASP.NET 应用 一个ASP.NET CORE 应用构建在ASP.NET CORE 框架之上,ASP.NET CORE框架利用一个消息处理管道完成对HTTP请求的监听.接收.处理和最终的响应. ...
- linux中nginx的https证书过期替换
linux中nginx的https证书过期替换 工作记录,不然老是忘 一般提示这个就说明过期了 首先把新的证书换上去,最好和之前的文件名字一样,这样就不用改配置文件了 路径就自己找了需要,不过一般挺好 ...
- 科普达人丨一图看懂阿里云ECS
简介: 建议收藏 原文链接:https://click.aliyun.com/m/1000363154/ 本文为阿里云原创内容,未经允许不得转载.
- 数仓架构的持续演进与发展 — 云原生、湖仓一体、离线实时一体、SaaS模式
简介: 数据仓库概念从1990年提出,经过了四个主要阶段.从最初的数据库演进到数据仓库,到MPP架构,到大数据时代的数据仓库,再到今天的云原生的数据仓库.在不断的演进过程中,数据仓库面临着不同的挑战. ...
- IIncrementalGenerator 获取项目默认命名空间
本文将告诉大家如何在分析器里面获取到项目的默认命名空间 在 Roslyn 分析器里面读取项目的默认命名空间,可以通过读取项目的属性配置实现.通过 IIncrementalGenerator 增量 So ...
- 修改element,vant,mint等ui框架的样式
vant和mint移动端常见,引入单独的css文件,在main.js中引入下即可,直接在对应的vue文件的css通过控制台查看中修改也行,再不济加!important element: 1.vue框架 ...
- JUC并发编程学习笔记(十八)深入理解CAS
深入理解CAS 什么是CAS 为什么要学CAS:大厂你必须深入研究底层!有所突破! java层面的cas------->compareAndSet compareAndSet(int expec ...
- 【python爬虫案例】用python爬豆瓣读书TOP250排行榜!
目录 一.爬虫对象-豆瓣读书TOP250 二.python爬虫代码讲解 三.讲解视频 四.完整源码 一.爬虫对象-豆瓣读书TOP250 今天我们分享一期python爬虫案例讲解.爬取对象是,豆瓣读书T ...
- 基于改进MFCC特征和卷积递归神经网络的心音分类
具体的软硬件实现点击http://mcu-ai.com/MCU-AI技术网页_MCU-AI人工智能 心音分类在心血管疾病的早期发现中起着至关重要的作用,特别是对于小型初级卫生保健诊所.尽管近年来心音分 ...