chapter 1 了解SQL
1.1 数据库基础
1.1.1 什么是数据库
数据库:可以看成文件柜,是一个存放数据的物理位置,不管数据是什么以及如何组织的。
人们常用“数据库”来代表所使用的的数据库软件。
确切地说,数据库软件应成为DBMS(数据库管理系统)。数据库是通过DBMS创建和操纵的容器。
总之,数据库究竟是文件或者其他东西,都不重要,因为我们并不会直接访问数据库,我们用的是DBMS。
1.1.2 表
我们在文件柜中创建文件,再将相关资料放入,而不是随便扔进文件柜。
此处的文件(结构化的文件),称作表。
表(table):某种特定类型数据的结构化清单。
关键点在于,存在表中的数据是一种类型的数据 或 一个清单。
绝对不应该将顾客的清单和订单的清单存储在同一个数据库表中,这会是以后的访问困难。应该每个清单一个表。
不同数据库中,可以有相同的表名。
同一数据库中,不可以有相同的表名。
模式(schema):关于数据库和表的布局及特性的信息。
有时,模式用作数据库的同义词。本文中如上定义。
1.1.3 列和数据类型
列(column):表的一个字段。
数据类型(datatype):所容许的数据的类型。每个列有相应的数据类型,限制该列存储的数据。
1.1.4 行
行(row):表中的一个记录。
行和记录(record)很大程度上可以互相替代,但从技术上说,行才是正确的术语。
1.1.5 主键
主键(primary key):一列(或一组列),其值可以唯一区分表中的每个行。
应该总是定义主键 ,没有主键的话,更新或删除表中的特定行很困难,因为没有安全的方法保证只涉及相关的行。
虽然并不总是需要主键,但大多数数据库设计人员都应保证创建的每个表都有一个主键,以便于以后的数据操纵和管理。
同时,几个公认的好习惯:
(1)不更新主键列值;
(2)不重用主键列值;
(3)不在主键列中使用可能会更改的值。
任何列均可作为主键,主要满足以下条件(MySQL本身强制实施的):
- 任意两行都不具有相同的值
- 每个行都必须有一个主键值(不允许NULL)
- 多个列作为主键时,所有列值的组合必须唯一(单个列的值可以不唯一)
1.2 什么是SQL
SQL(Stuctured Query Language),结构化查询语言,是一种专门用来与数据库通信的语言。
优点
- 几乎所有重要的DBMS都支持SQL;
- 简单易学。由描述性很强的英文单词组成;
- 功能强大。可以进行非常复杂和高级的数据库操作。
chapter 2 MySQL简介
2.1 什么是MySQL
MySQL:是一种DBMS,即它是一种数据库软件。
优点
- 成本:开放源代码,一般可以免费使用(甚至可以免费修改)
- 性能:执行很快
- 可信赖:很多公司和站点使用其处理重要数据
- 简单:容易安装和使用
缺点:并不总是支持其他DBMS提供的功能和特性。然而新版本正在不断增加新特性、新功能。
2.1.1 客户机-服务器软件
DBMS可分为两类:
- 基于共享文件系统的DBMS:Microsoft Access & FileMaker,用于桌面用途,通常不用于高端或更关键的应用。
- 基于客户机-服务器的DBMS:MySQL,Oracle,Microsoft SQL Server等数据库,客户机-服务器的应用分为两部分,服务器部分是负责所有数据访问和处理的一个软件。与数据打交道的只有服务器软件,如数据添加、删除、更新都由它完成。客户机是与用户打交道的软件,如你给一个需求,客户机软件通过网络提交给服务器软件,服务器软件再处理这个请求,根据需要过滤、丢弃和排序数据,然后把结果送回到你的客户机软件。
客户机和服务器软件可能装在2台计算机或一台计算机上。不管它们在不在相同的计算机上,为进行所有数据库的交互,客户机软件都要与服务器软件进行通信。
所有这些活动对用户都是透明的。数据存在其他地方,或者数据库服务器为你处理这一事实是隐藏的。你不需要直接访问数据文件。事实上,多数网络的建立,使用户不具有对数据的访问权,甚至不具有对存储数据的驱动器的访问权。
意义:为了使用MySQL,你需要访问运行MySQL服务器软件的计算机 和 发布命令到MySQL的客户机软件的计算机。
- 服务器软件为MySQL DBMS。你可以在本地安装的副本上运行,也可以连接到你具有访问权的远程服务器。
- 客户机可以是MySQL提供的工具、脚本语言(如Perl)、Web应用开发语言(如ASP、ColdFusion、JSP和PHP)、程序设计语言(如C、C++、Java)等。
2.2 MySQL工具
客户机的选择:
(1)MySQL命令行实用工具
(2)MySQL Adiministrator
(3)MySQL Query Browser 图形交互客户机
(4)Navicat Premium 12
chapter 3 使用MySQL
3.1 连接
3.2 选择数据库
--use database_name;
use test;
3.3 了解数据库和表
show databases;
返回可用数据库的列表。包含内部使用的数据库(mysql & information_schema)
show databases;
show tables;
返回一个数据库内的表的列表。
show tables;
show columns from table_name;
返回表列。
describe table_name;
返回表列(快捷方式)。
show columns from user1;
describe user1;
show status;--用于显示广泛的服务器状态信息
show create database;--显示创建特定数据库的MySQL语句
show create table;--显示创建特定表的MySQL语句
show grants;--显示授予用户的安全权限
show errors;--显示服务器错误消息
show warnings;--显示警告消息
自动增量
某些表列需要唯一值,如用户ID。在每个行添加到表中时,MySQL可以自动为每个行分配下一个可用编号。这个功能就是自动增量。如果需要这个功能,必须在用create
创建表时,把它作为表定义的组成部分(chapter
21)。