数据库
数据库相关概念
- DB(database):数据库,保存一组有组织的数据的容器
- DBMS(database management system):数据库管理系统,又称为数据库软件(产品),用于管理 DB 中的数据
- SQL(structure query language):结构化查询语言,用于和 DBMS 通信的语言
RDBMS
指关系型数据库管理系统,全称 Relational Database Management System
RDBMS
是 SQL
的基础,也是所有现代数据库系统的基础
RDBMS
中的数据存储在被称为表的数据库对象中,表是相关的数据项的集合,由列和行组成
数据库是通过 DBMS 创建和操纵的容器,其可以是保存在硬件设备上的文件,也可以不是;数据库究竟是什么并不重要,我们使用 DBMS,它替我们访问数据库
常见的数据库管理系统有:MySQL、Oracle、DB2、SQLserver
数据库的好处
- 将数据持久化保存到本地
- 可以实现数据的结构化查询,方便管理
数据库存储数据的特点
- 数据存放在表中,表存放在数据库中
- 一个数据库中可以有多个表,每个表都有一个的名字,用来标识自己
表名具有唯一性 - 表具有一些特性,这些特性定义了数据在表中如何存储,类似
java
中 “类”的设计 - 表由
列(column)
组成,我们也称为字段(filed)
所有表都是由一个或多个列组成的,每一列类似java
中的”属性” - 表中的数据是按
行(row 、record)
存储的,每一行类似于java
中的“对象”
表
表(table): 某种特定类型数据的 结构化清单,数据库中的每个表都有一个名字,用来标识自己,此名字是唯一的
表名的唯一性取决于多个因素 :
如数据库名和表名等的结合;
这表明,虽然在相同数据库中不能两次使用相同的表名,但是在不同的数据库中却可以使用相同的表名
表具有一些特性, 这些特性定义了数据在表中如何存储, 可以存储什么样的数据, 数据如何分解, 各部分信息如何命名, 等等。描述表的这组信息就是所谓的模式,模式可以用来描述数据库中特定的表以及整个数据库(和其中表的关系)
模式(schema): 关于数据库和表的布局以及特性的信息
列
表是由列组成的,列中存储着表中某部分的信息
列(column): 表中的一个字段,所有表都是由一个或多个列组成的
将数据库表想象为一个网格,网格中每一列存储着一条特定的信息。例如,在顾客表中,一个列存储着顾客编号,另一个列存储着顾客名,而地址、城市、州以及邮政编码全都存储在各自的列中
分解数据:
正确地将数据分解为多个列极为重要;
例如,城市、州、邮政编码应该总是独立的列。
通过把它分解开,才有可能利用特定的列对数据进行排序和过滤
数据库中每个列都有相应的数据类型
数据类型(datatype) 定义列可以存储的数据种类,并且可以帮助正确地排序数据,在优化磁盘使用方面起到重要的作用
行
表中的数据是按行存储的,所保存的每个记录存储在自己的行内
行(row): 表中的一个 记录(record)
表中每一行都应该有可以唯一标识自己的一列(或者一组列)
主键(primary key): 一列(或者一组列),其值可以唯一地区分表中的每一行
主键用来标识一个特定的行,可以借助主键安全地更新或删除表中的特定行
主键应该满足的一些规则和习惯:
1、任意两行都不具有相同的主键值
2、每个行都必须具有一个主键值
3、主键列不允许NULL
值
4、使用多个列作为主键时,上述条件应该应用到构成主键的所有列,所有列值的组合必须是唯一的
5、不更新主键列中的值
6、不重用主键列中的值
7、不在主键列中使用可能会更改的值
SQL 能做什么 ?
SQL
面向数据库执行查询
SQL
可从数据库取回数据
SQL
可在数据库中插入新的记录
SQL
可更新数据库中的数据
SQL
可从数据库删除记录
SQL
可创建新数据库
SQL
可在数据库中创建新表
SQL
可在数据库中创建存储过程
SQL
可在数据库中创建视图
SQL
可以设置表、存储过程和视图的权限
MySQL
DBMS 可分为两类:
- 一类是基于共享文件系统的 DBMS,用于桌面用途,通常不用于高端或者更关键的应用;
- 另一类是基于客户机-服务器的 DBMS。
MySQL 是基于客户机-服务器的数据库,是开放源代码的,执行速度快,简单可信赖。
客户机-服务器应用分为两个不同的部分:
- 服务器 部分是负责所有数据访问和处理的一个软件,这个软件运行在称为数据库服务器的计算机上
与数据文件打交道的只有服务器软件,关于数据添加、删除和更新的所有请求都由服务器软件完成;这些请求或者更改来自运行客户机软件的计算机。 - 客户机 是与用户打交道的软件
例如,如果申请一个按字母顺序列出的产品表,则客户机软件通过网络提交该申请给服务器软件;
服务器软件处理这个请求,根据需要过滤、丢弃和排序数据;最后把结果送回到客户机软件。
客户机和服务器软件可能安装在两台计算机上,也可以安装在一台计算机上;
不管是否在相同的计算机上,为进行所有数据库交互,客户机软件都要和服务器软件进行通信。
MySQL 驱动
安装驱动
mysql-connector-java 与 Mysql 和 Java 对应版本
MySQL Connector/J 8.0 is highly recommended for use with MySQL Server 8.0, 5.7, and 5.6. Please upgrade to MySQL Connector/J 8.0.
MySQL5.6 以上更推荐使用 connector/j 8.0
JRE 1.7 support requires Connector/J 5.1.21 and higher.
JRE 1.7 需要 connector/J 5.1.21 以上
初步使用
MySQL 与所有客户机-服务器 DBMS 一样,要求在能执行命令之前登录到 DBMS,MySQL 在内部保存自己的用户列表,并且把每个用户与各种权限关联起来
在最初连接到 MySQL 时,没有任何数据库可以使用,执行任意数据库操作前,需要选择一个数据库,使用 USE
关键字
关键字(
key word
):
作为 MySQL 语言组成部分的一个保留字,不可以使用关键字命名一个表或者列
《SQL必知必会》书中源代码使用 案例数据库导入
之后,每次打开 mysql 后,直接使用 USE
就可以了
使用 SHOW databases
则可以看到,可以使用数据库的一个列表;列表中既包含了 MySQL 内部使用的数据库,也包含了自己使用 USE
加载的数据库
为了获得一个数据库内的表的列表,可以使用 SHOW TABLES
也可以显示表列
SHOW COLUMNS FROM customers;
SHOW COLUMNS
要求给出一个表名(如 FROM customers
),它对每个字段返回一行,行中包含字段名、数据类型、是否允许 NULL、键信息、默认值以及其他信息(如字段 cust_id 的 auto_increment)
自动增量:
某些表列需要唯一值;
在每个行添加到表中时,MySQL 可以自动地为每个行分配下一个可用编号,不用在添加一行时手动分配唯一值
DESCRIBE customers;
是 SHOW COLUMNS FROM customers;
的一种快捷方式
SHOW STATUS
用于显示广泛的服务器状态信息
SHOW CREATE DATABASE
和 SHOW CREATE TABLE
分别用来显示创建特定数据库或者表的 MySQL 语句
SHOW GRANTS
用来显示授予用户(所有用户或特定用户)的安全权限
SHOW ERRORS
和 SHOW WARNINGS
,用来显示服务器错误或者警告信息
使用
HELP SHOW;
可以显示所有允许的SHOW
语句
SQLyog 使用问题
问题描述
一段时间没有连接 SQLyog 后,再次连接出现错误1862:your password has expired
但是密码没有出错,通过以下方式重设密码(可与原来密码相同),成功解决问题
解决方式
- 打开 cmd(用管理员身份)
- 连接 mysql,输入命令:
mysql -u root -p
回车后,输入密码 - 输入命令:
SET PASSWORD = PASSWORD('root');
其root
为设置的数据库密码,可与原来密码相同 - 执行命令
flush privileges;
- 再次连接 SQLyog,成功!
教程汇总
以下是《MySQL 必知必会》与 《SQL 必知必会》的所有学习笔记的链接汇总: