目录
1.了解SQL
1.1 数据库基础
1.1.1 数据库(database)
- 可以把数据库想象为一个文件柜。这个文件柜是一个存放数据的物理位置,不管数据是什么,也不管数据是如何组织的。
- 数据库软件应称为数据库管理系统(即DBMS),如Microsoft Access,MySQL,Microsoft SQL Server,Oracle等。
1.1.2 表(table)
- 虽然在相同数据库中不能两次使用相同的表名,但在不同的数据库中完全可以使用相同的表名。
- 模式(schema):关于数据库和表的布局及特性的信息。模式代表了数据在表中如何存储,包含存储什么样的数据,数据如何分解,各部分信息如何命名等信息。
1.1.3 列和数据类型
- 分解数据:正确地将数据分解为多个列极为重要。例如,城市、州、邮政编码应该总是彼此独立的列。通过分解这些数据,才有可能利用特定的列对数据进行分类和过滤(如找出特定州或特定城市的所有顾客)。如果城市和州组合在一个列中,则按州进行分类或过滤就会很困难。你可以根据自己的具体需求来决定把数据分解到何种程度。例如,一般可以把门牌号和街道名一起存储在地址里。这没有问题,除非你哪天想用街道名来排序,这时,最好将门牌号和街道名分开。
- 数据类型(datatype)定义了列可以存储哪些数据种类。
- 数据类型兼容
数据类型及其名称是SQL不兼容的一个主要原因。虽然大多数基本数据类型得到了一致的支
持,但许多高级的数据类型却没有。更糟的是,偶然会有相同的数据类型在不同的DBMS
中具有不同的名称。对此用户毫无办法,重要的是在创建表结构时要记住这些差异。
1.1.4 行(row)
你可能听到用户在提到行时称其为数据库记录(record)。这两个术语多半是可以交替使用的,但从技术上说,行才是正确的术语。
1.1.5 主键(primary key)
一列(或一组列),其值能够唯一标识表中每一行。
主键用来表示一个特定的行。没有主键,更新或删除表中特定行就极为困难,因为你不能保证操作只涉及相关的行。应该总是定义主键。表中的任何列都可以作为主键,只要它满足以下条件:
- 任意两行都不具有相同的主键值;
- 每一行都必须具有一个主键值(主键列不允许NULL值);
- 主键列中的值不允许修改或更新;
- 主键值不能重用(如果某行从表中删除,它的主键不能赋给以后的新行)。
在一起使用多个列作为主键时,上述条件必须应用到所有列,所有列值的组合必须是唯一的(但单个列的值可以不唯一)。
1.2 什么是SQL
SQL(发音为字母S-Q-L或sequel)是结构化查询语言(Structured Query Language)的缩写。SQL是一种专门用来与数据库沟通的语言。
SQL有如下的优点:
- SQL不是某个特定数据库供应商专有的语言。几乎所有重要的DBMS都支持SQL,所以学习此语言使你几乎能与所有数据库打交道。
- SQL简单易学。它的语句全都是由有很强描述性的英语单词组成,而且这些单词的数目不多。
- SQL虽然看上去很简单,但实际上是一种强有力的语言,灵活使用其语言元素,可以进行非常复杂和高级的数据库操作。
SQL的扩展:许多DBMS厂商通过增加语句或指令,对SQL进行了扩展。这种扩展的目的是提供执行特定操作的额外功能或简化方法。虽然这种扩展很有用,但一般都是针对个别DBMS的,很少有
两个以上的供应商支持这种扩展。
1.3 动手实践
Sams Teach Yourself SQL in 10 Minutes (Fourth Edition) – Ben Forta(含附录)
附录A给出了具体的样例表,并介绍了获得(或创建)它们的详细步骤,便于读者理解每一课讲授的内容。
附录B介绍在各种应用程序中执行SQL所需的步骤。
在进入下一课之前,需要先阅读这两个附录的内容。
1.4 怎么使用MySQL执行SQL
下载mysql,在下载过程中选择下载mysql+mysql workbench+mysql shell。
在workbench中新增mysql connections,自定义connection name。
点击进入一个connection,就可以开始写sql了。