MySQL 学习笔记 —— 0、了解 MySQL

数据库

数据库相关概念

  1. DB(database):数据库,保存一组有组织的数据的容器
  2. DBMS(database management system):数据库管理系统,又称为数据库软件(产品),用于管理 DB 中的数据
  3. SQL(structure query language):结构化查询语言,用于和 DBMS 通信的语言

RDBMS 指关系型数据库管理系统,全称 Relational Database Management System
RDBMSSQL 的基础,也是所有现代数据库系统的基础
RDBMS 中的数据存储在被称为表的数据库对象中,表是相关的数据项的集合,由列和行组成

数据库是通过 DBMS 创建和操纵的容器,其可以是保存在硬件设备上的文件,也可以不是;数据库究竟是什么并不重要,我们使用 DBMS,它替我们访问数据库

常见的数据库管理系统有:MySQL、Oracle、DB2、SQLserver

数据库的好处

  1. 将数据持久化保存到本地
  2. 可以实现数据的结构化查询,方便管理

数据库存储数据的特点

  1. 数据存放在表中,表存放在数据库中
  2. 一个数据库中可以有多个表,每个表都有一个的名字,用来标识自己
    表名具有唯一性
  3. 表具有一些特性,这些特性定义了数据在表中如何存储,类似 java 中 “类”的设计
  4. 表由 列(column) 组成,我们也称为 字段(filed)
    所有表都是由一个或多个列组成的,每一列类似 java 中的”属性”
  5. 表中的数据是按 行(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 可分为两类:

  1. 一类是基于共享文件系统的 DBMS,用于桌面用途,通常不用于高端或者更关键的应用;
  2. 另一类是基于客户机-服务器的 DBMS。

MySQL 是基于客户机-服务器的数据库,是开放源代码的,执行速度快,简单可信赖。

客户机-服务器应用分为两个不同的部分:

  1. 服务器 部分是负责所有数据访问和处理的一个软件,这个软件运行在称为数据库服务器的计算机上
    与数据文件打交道的只有服务器软件,关于数据添加、删除和更新的所有请求都由服务器软件完成;这些请求或者更改来自运行客户机软件的计算机。
  2. 客户机 是与用户打交道的软件
    例如,如果申请一个按字母顺序列出的产品表,则客户机软件通过网络提交该申请给服务器软件;
    服务器软件处理这个请求,根据需要过滤、丢弃和排序数据;最后把结果送回到客户机软件。

客户机和服务器软件可能安装在两台计算机上,也可以安装在一台计算机上;
不管是否在相同的计算机上,为进行所有数据库交互,客户机软件都要和服务器软件进行通信。

MySQL 驱动

安装驱动

mysql-connector-java 与 Mysql 和 Java 对应版本

MySQL 驱动与 MySQL 对应版本

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 加载的数据库
图1
为了获得一个数据库内的表的列表,可以使用 SHOW TABLES
tu2
也可以显示表列

SHOW COLUMNS FROM customers;

tu 3

SHOW COLUMNS 要求给出一个表名(如 FROM customers),它对每个字段返回一行,行中包含字段名、数据类型、是否允许 NULL、键信息、默认值以及其他信息(如字段 cust_id 的 auto_increment)

自动增量:
某些表列需要唯一值;
在每个行添加到表中时,MySQL 可以自动地为每个行分配下一个可用编号,不用在添加一行时手动分配唯一值

DESCRIBE customers;SHOW COLUMNS FROM customers; 的一种快捷方式
图4

SHOW STATUS 用于显示广泛的服务器状态信息
SHOW CREATE DATABASESHOW CREATE TABLE 分别用来显示创建特定数据库或者表的 MySQL 语句
SHOW GRANTS 用来显示授予用户(所有用户或特定用户)的安全权限
SHOW ERRORSSHOW WARNINGS ,用来显示服务器错误或者警告信息

使用 HELP SHOW; 可以显示所有允许的 SHOW 语句

SQLyog 使用问题

问题描述

一段时间没有连接 SQLyog 后,再次连接出现错误1862:your password has expired
但是密码没有出错,通过以下方式重设密码(可与原来密码相同),成功解决问题

解决方式
  1. 打开 cmd(用管理员身份
  2. 连接 mysql,输入命令:mysql -u root -p 回车后,输入密码
  3. 输入命令:SET PASSWORD = PASSWORD('root');root 为设置的数据库密码,可与原来密码相同
  4. 执行命令 flush privileges;
  5. 再次连接 SQLyog,成功!

教程汇总

以下是《MySQL 必知必会》与 《SQL 必知必会》的所有学习笔记的链接汇总:

win10 安装 MySQL

了解 MySQL

案例源码导入

检索数据

排序检索数据

过滤数据

用通配符进行过滤

高级数据过滤

使用正则表达式

创建计算字段

使用函数处理数据

汇总数据

分组数据

使用子查询

联结表

创建高级联结

组合查询

全文本搜索

插入数据

更新和删除数据

创建和操纵表

使用视图

使用存储过程

管理事务处理

使用游标

高级 SQL 特性

使用正则表达式

全文本搜索

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值