表、记录、字段
数据库的E-R(entity-relationship,实体-关系)模型中有三个主要概念: 实体集 、 属性 、 关系集 。
一个实体集对应于数据库中的一个表,一个实体则对应于数据库表 中的一行,也称为一条记录。一个属性对应于数据库表中的一,也称为一个字段。
比如在日常生活之中,可以这样描述一本书的信息,《三国演义》是中华书局出版的图书,作者是罗贯中,定价89.00,出版于2008年5月1日,这样的信息在计算机中就可以使用下面的方式来描述:
- (三国演义,中华书局,罗贯中,89.00,2008-5-1),将信息按照“(图书名称,出版社,作者,价格,出版日期)”的方式组织在一起,这样就组成了一条记录。
如果现在有多条这种记录,那么就可以列成一张表,通过表来管理数据。
下面是一个表的结构,每一行的数据都成为记录,那么每一列的内容都称为字段。每一列都有自己的数据类型。

SQL规范与测试数据导入
SQL语句规范
使用SQL语句需要遵循以下规范:
- SQL语句不区分大小写。但字符串常量区分大小写,建议命令大写,表名库名小写;
- SQL语句可单行或多行书写,以分号结尾;
- 用空格和缩进来提高语句的可读性。
- 注释:有三种风格的注释
- 单行注释可以用“#”
- 单行注释第二种写法用“-- ”,“–" 与注释之间是有空格的。
- 多行注释可以用/* */
##一些数据类型
| 数据类型 | 说明 | 示例 |
|---|---|---|
| 整数类型 | 存储整数值 | INT, BIGINT, TINYINT |
| 浮点数类型 | 存储浮点数值 | FLOAT, DOUBLE |
| 定点数类型 | 存储精确小数值 | DECIMAL(10,2) |
| 日期与时间类型 | 存储日期和时间 | DATE, DATETIME, TIMESTAMP |
| 字符串类型 | 存储文本数据 | VARCHAR(255), CHAR(10), TEXT |
| 二进制字符串类型 | 存储二进制数据 | BINARY(10), VARBINARY(255), BLOB |
| 空间数据类型 | 存储空间数据 | POINT, GEOMETRY, POLYGON |
准备测试数据(导入数据)
登录MySQL,输入source xxx/test.sql导入sql文件,sql文件实际上是一个脚本文件,里面有多行SQL语句,通过source命令可以批量执行。
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

执行完毕之后,使用show databases;查看所有数据库,发现多了一个名为test的数据库。

使用show tables;查看test数据库下所有的数据表,发现有四个表。

test数据库表
部门表:dept
| No. | 字段名 | 类型 | 描述 |
|---|---|---|---|
| 1 | DEPTNO | SMALLINT | 部门编号 |
| 2 | DNAME | VARCHAR(14) | 部门名称,最多14个字符 |
| 3 | LOC | VARCHAR(13) | 部门位置,最多13个字符 |

雇员表:emp
| No. | 字段名 | 类型 | 描述 |
|---|---|---|---|
| 1 | EMPNO | SMALLINT | 雇员编号 |
| 2 | ENAME | VARCHAR(10) | 雇员姓名 |
| 3 | JOB | VARCHAR(9) | 职位(工作) |
| 4 | MGR | SMALLINT | 一个员工对应的领导编号,领导也是雇员 |
| 5 | HIREDATE | DATE | 雇佣日期 |
| 6 | SAL | DECIMAL(7,2) | 基本工资 |
| 7 | COMM | SMALLINT | 佣金(奖金),销售人员可以领取 |
| 8 | DEPTNO | SMALLINT | 雇员所属部门编号,与dept表对应 |

工资等级表:salgrade
| No. | 字段名 | 类型 | 描述 |
|---|---|---|---|
| 1 | GRADE | SMALLINT | 工资等级编号 |
| 2 | LOSAL | SMALLINT | 此等级的最低工资 |
| 3 | HISAL | SMALLINT | 此等级的最高工资 |

工资补贴表(工资条):bonus
| No. | 字段名 | 类型 | 描述 |
|---|---|---|---|
| 1 | ENAME | VARCHAR(10) | 雇员姓名 |
| 2 | JOB | VARCHAR(9) | 工作 |
| 3 | SAL | DECIMAL(7,2) | 基本工资 |
| 4 | COMM | SMALLINT | 佣金 |
工资补贴表没有数据
数据库的基本操作
在MySQL之中有许多的数据库,可以使用以下命令SHOW DATABASES查看所有数据库:
SHOW DATABASES;
+--------------------+
| Database |
+--------------------+
| information_schema | #主要存储了系统中的一些数据库对象信息,比如用户表信息、列信息、权限信息、字符集信息和分区信息等。
| mysql | #MySQL的核心数据库,主要负责存储数据库用户、用户访问权限等 MySQL 自己需要使用的控制和管理信息。
| performance_schema | #主要用于收集数据库服务器性能参数。
| sys | #sys 数据库主要提供了一些视图,数据都来自于 performation_schema,主要是让开发者和使用者更方便地查看性能问题。
+--------------------+
这些数据库彼此之间是可以进行相互切换的。而切换的基本语法:
USE <dbname>;

要想知道当前使用的是哪个数据库,那么可以使用select database();命令来查看:

在一个数据库下一定会存在多张数据表,那么这个时候也可以直接利用以下命令查看所有表:
SHOW TABLES;
而如果想要知道某些数据表的表结构,那么可以使用DESC命令:
DESC emp;

如果想要自己创建数据库,则需要使用以下命令:
CREATE DATABASE <dbname>;
如果数据库已经存在则会报错 Can't create database '<dbname>'; database exists,我们可以先判断数据库是否存在,不存在就创建,存在则忽略(只有警告没有报错)。
CREATE DATABASE IF NOT EXISTS <dbname>;
如果想要删除数据库,则可以使用以下命令:
DROP DATABASE <dbname>;
如果数据库不存在则会报错Can't drop database 'ss'; database doesn't exist,所以在删除数据库时可以判断是否存在。
DROP DATABASE IF EXISTS <dbname>; #如果数据库存在则删除
使用 DROP DATABASE 命令时要非常谨慎,在执行该命令后,MySQL 不会给出任何提示确认信息。DROP DATABASE 删除数据库后,数据库中存储的所有数据表和数据也将一同被删除,而且不能恢复。