第1章 了解SQL
1.1 数据库基础
1.1.1 什么是数据库(database)
数据库是一个以某种有组织的方式存储的数据集合
数据库(database)保存有组织的数据的容器(通常是一个文件或一组文件)
人们经常混淆数据库和DBMS,把DBMS当做数据库
数据库是可以保存在硬件设备上的文件,它是可以通过DBMS创建和操作的容器
DBMS是代替你访问数据库的工具
1.1.2 表(table)
某种特定类型数据的结构化清单
-
不同类型的数据应该用不同的表存储:例如顾客和顾客订单
-
数据库中的表名唯一,用来标识自己
-
同一数据库中不能有相同表名,但不同数据库中可以有相同表名
模式:关于数据库和表的布局及特性的信息
-
表的一些特性决定了数据在表中如何存储、可以存什么样的数据、数据如何分解、各部分信息如何命名等 👉 模式
-
用来描述数据库中特定的表以及整个数据库
-
有时,模式用作数据库的同义词
1.1.3 列(column)和数据类型(datatype)
表由列组成,列存储这表中某部分的信息
列是表中的一个字段,所有表都是由一个或多个列组成
把数据库表想象成一个网格,每一列都存储着一条特定的信息 👉 分解数据
数据库中每个列都有相应的数据类型
-
数据类型可以限制存储在列中的数据种类
-
还能帮助正确地排序数据
1.1.4 行(row)
虽然表由列组成,但是表中的数据是按行存储的
行:是表中的一个记录
1.1.5 主键(primary key)
表中每一行都应该有可以唯一标识自己的一列(或一组列)
主键:一列(或一组列),其值能够唯一区分表中每个行。唯一标识表中每行的这个列(或这组列)称为主键
-
每个表都应该确保有一个主键
-
没有主键,更新或删除表中特定行很困难,因为没有安全的方法保证只涉及相关的行
表中的任何列都可以作为主键,只要它满足以下条件:
-
任意两行都不具有相同的主键值(即主键的值不重复)
-
每个行都必须具有一个主键值(主键列不允许NULL值,即主键不为空)
-
主键值规则:MySQL本身强制实施的
所以主键可以不唯一
在使用多列作为主键时,上述条件必须应用到构成主键的所有列,所有列值的组合必须是唯一的(但单个列的值可以不唯一)
关于主键的好习惯
-
不更新主键列中的值
-
不重用主键列的值
-
不在主键列中使用可能会更改的值(例如,如果使用一个名字作为主键以标识某个供应商,当该供应商合并和更改其名字时,必须更改这个主键;但如果用数字或字母来表示,则可能可以不用更改)
还有外键
1.2 什么是SQL
Structured Query Language 结构化查询语言
是一种专门用来与数据库通信的语言
SQL语言的优点
-
几乎所有重要的DBMS都支持SQL
-
简单易学
-
但是十分强力
MySQL的多数语法也适用于其他DBMS,但并不是完全适用(实现方式各不相同)
1.3 动手实践
~
1.4 小结
什么是SQL、为什么SQL很有用,因为SQL是用来和数据库打交道的
一些基本的数据库术语:数据库、表、列、数据类型、行、主键、外键
第2章 MySQL简介
2.1 什么是MySQL?
MySQL是一种DBMS,即它是一种数据库软件
被全世界广泛使用的原因
-
成本:开源、免费
-
性能
-
可靠
-
简单
MySQL受到的唯一真正的批评是它并不总是支持其他DBMS提供的功能和特性。然而,这一点也正在逐步得到改善,MySQL的各个新版本正不断增加新特性、新功能
2.1.1 客户机——服务器软件
DBMS可分为两类:
-
一类为基于共享文件系统的DBMS
-
诸如Microsoft Access和FileMaker用于桌面用途,通常不用于高端或更关键的应用
-
-
另一类为基于客户机——服务器的DBMS
-
MySQL、Oracle以及Microsoft SQL Server等数据库是基于客户机——服务器的数据库
-
客户机—服务器应用分为两个不同的部分:客户机的数据库软件、服务器的数据库软件
服务器部分是负责所有数据访问和处理的一个软件。这个软件运行在称为数据库服务器的计算机上。与数据文件打交道的只有服务器软件:关于数据、数据添加、删除和数据更新的所有请求都由服务器软件完成
例如,如果你请求一个按字母顺序列出的产品表,则客户机软件通过网络提交该请求给服务器软件(客户机软件 👉 服务器软件)。服务器软件处理这个请求,根据需要过滤、丢弃和排序数据;然后把结果送回到你的客户机软件
客户机和服务器软件可能安装在两台计算机或一台计算机上。不管它们在不在相同的计算机上,为进行所有数据库交互,客户机软件都要与服务器软件进行通信
所有这些活动对用户都是透明的(看不见的,隐藏的)。数据存储在别的地方,或者数据库服务器为你完成这个处理这一事实是隐藏的。你不需要直接访问数据文件。事实上,多数网络的建立使用户不具有对数据的访问权,甚至不具有对存储数据的驱动器的访问权
这样的意义何在?因为为了使用MySQL,你需要发布命令到 MySQL的客户机软件 的计算机 来 访问运行 MySQL服务器软件 的计算机 (这块我其实没有很懂)
-
服务器软件为MySQL DBMS。你可以在本地安装的副本上运行,也可以连接到运行在你具有访问权的远程服务器上的一个副本
-
客户机可以是MySQL提供的工具、脚本语言(如Perl)、Web应用开发语言(如ASP、ColdFusion、JSP和PHP)、程序设计语言(如C、C++、Java)等
我的理解如下图(不知道对不对)
2.1.2 MySQL版本
2.2 MySQL工具
MySQL是一个客户机——服务器DBMS。有许多客户机应用可供选择
2.2.1 mysql命令行实用程序
2.2.2 MySQL Administrator
MySQL Administrator(MySQL管理器)是一个图形交互客户机,用来简化MySQL服务器的管理。
2.2.3 MySQL Query Browser
MySQL Query Browser为一个图形交互客户机,用来编写和执行MySQL命令
2.3 小结
介绍了什么是MySQL,以及一些MySQL工具
我目前用过navicat,所以以下是mysql和navicat的安装参考
Mysql的安装
Navicat的安装
他人博客:普通网友-[新人向]MySQL和Navicat下载、安装及使用详细教程