⼀、数据库的发展历史
- ⼈⼯处理
- ⽂件系统
- 数据库管理
⼆、数据库的相关概念
1. 数据库系统(DBS)
以数据库为核⼼的计算机系统,主要包含:
硬件、系统软件、数据库管理系统(DBMS)、数据库管理员(DBA)、数据(Data)
2. 数据库(DB)
存放数据的仓库
3. 数据(Data)
符号记录,⼀般表现为⽂字、字符、图⽚、声⾳、视频…
4、数据库管理系统(DBMS)
⽤来定义数据、管理和维护数据的软件
5、数据模型
对现实世界的模拟
- 概念模型:对现实世界的信息进⾏概括,抽象 ==> E-R模型(又叫E-R图)
- 逻辑模型:系统分析设计⼈员对数据存储的观点,是对概念数据模型进⼀步的分解和细化
- ⽹状模型
- 层次模型
- 关系模型:以表格的⽅式来管理数据(关系表)
- ⾯向对象模型
- 物理模型
物理模型是对真实数据库的描述。
数据库中的⼀些对象如下:表,视图,字段,数据类型、⻓度、主键、外键、索引、是否可为空,默认值。
6、关系数据库
逻辑模型为关系模型的数据库管理系统,常⽤的关系数据库有:Oracle、DB2、Sybase、SQL Server、Postgre
SQL、MySQL、Sqlite、H2、Access等。
7、SQL
Structured Query Language(简称SQL),结构化查询语⾔,数据库管理系统可以通过SQL语⾔来管理数据库中的数
据。通俗地讲,它是⽤于与数据库通信的语⾔。主要有以下四种分类:
DDL(Data Defination Language):数据定义语⾔,主要⽤于定义数据库、表、视图、索引、触发器等。有
drop、create、alter等语句。
DML(Data Manipulation Language):数据操作语⾔,主要包括对数据的增、删、改。
DQL(Data Query Language):数据检索语⾔
DCL(Data Control Language):数据控制语⾔
三、数据库的设计过程
第⼀:收集信息
第⼆:标识对象(实体、实体对象)
第三:标识属性
第四:标识对象间的关系
第五:绘制E-R图
实体:矩形
属性:椭圆形
关系:菱形
连接:直线(箭头)
第六:把E-R图转换为数据表(关系表)
1.把实体名转换为表名
2.把属性转换为表的字段
3.标识主键
4.标识表间的关系(外键) 第七:使⽤范式规范化数据表
案例
要求:根据以上需求描述,绘制E-R图,并使⽤T-SQL定义相关的表,每张表⾄少要录⼊三条记录。
四、范式
1、概念
规范化数据(表)
2、⽬的
为了"消除"数据的冗余
⼀对⼀ 1:1
1对多 1:M 、 1:N 、 1:
多对多 M:N 、 :*
图书借阅管理系统的基本功能
⽤户注册和登录后,数据库中存储⽤户的注册信息
数据库中存储所有图书的详细信息
⽤户借书后,数据库中存储⽤户的借阅信息,如:借书时间、图书信息,⽤户信息等
⽤户还书后,数据库中存储归还的时间等信息
"消除"CRUD的异常
3、分类
第⼀范式:保证每列不可再分(原⼦性)
第⼆范式:确保表中的每列都和主键相关(确保⼀张表只描述⼀件事情)
第三范式:确保每列都和主键列直接相关,⽽不是间接相关
注:有时为了性能和效率,可以放弃范式的约束。
五、MySQL特点 - 免费、开源
- 跨平台、⽀持多种编程语⾔,如Java、C/C++、Python、PHP等
- 功能强⼤、使⽤⽅便
- 标准的SQL
- 版本
- 社区版(免费)
- 企业版(收费)
六、安装与配置
1、安装
1)Window系统安装
安装包:根据向导安装、配置
压缩包:解压到指定⽬录、配置
以下是以压缩包安装为例
第⼀:下载、并解压到指定位置
安装包:https://dev.mysql.com/downloads/installer/
压缩包:https://dev.mysql.com/downloads/mysql/5.7.html#downloads
解压位置
C:\dev\mysql-5.7.32-winx64
第⼆:配置环境变量
第三:创建MySQL配置⽂件
在MySQL安装的根⽬录,创建 my.ini 配置⽂件,内容如下:
注意:其中的data⽬录是⽤于存放数据的⽬录,⽤户可以不需要创建,下⼀步初始化⼯作中会⾃动创建!
第四:初始化数据库
以管理员身份运⾏CMD并进⼊MySQL安装⽬录下的bin⽬录,执⾏命令: mysqld –initialize [-user=root]
–console。
C:\dev\mysql-5.7.32-winx64\bin
[mysqld] [mysqld]
设置3306端⼝
port=3306
设置mysql的安装⽬录
basedir=C:\dev\mysql-5.7.32-winx64
设置mysql数据库的数据的存放⽬录
datadir=C:\dev\mysql-5.7.32-winx64\data
允许最⼤连接数
max_connections=200
允许连接失败的次数。这是为了防⽌有⼈从该主机试图攻击数据库系统
max_connect_errors=10
服务端使⽤的字符集默认为UTF8
character-set-server=utf8
创建新表时将使⽤的默认存储引擎
default-storage-engine=INNODB
默认使⽤“mysql_native_password”插件认证
default_authentication_plugin=mysql_native_password
[mysql] [mysql]
设置mysql客户端默认字符集
default-character-set=utf8
[client] [client]
设置mysql客户端连接服务端时默认使⽤的端⼝
port=3306
default-character-set=utf8
C:\dev\mysql-5.7.32-winx64\bin> mysqld –initialize –user=mysql –console
…
…(root@localhost: aB4rvf335G,Z) # 初始密码
…
注意:
1) –initialize :初始化数据库,创建⼀个root帐号并指定了⼀个默认的密码。
其中root@localhost后⾯的 aB4rvf335G,Z 就是初始密码。在没有更改密码前,需要记住这个密码,便于后续登
录。
当然,如果忘记,则删除data⽬录,重新执⾏以上命令即可。
2) –initialize-insecure :功能同上,但不会⽣成默认密码。
3) –user=mysql :在 Unix 和类 Unix 系统上,数据库⽬录和⽂件由 mysql 登录帐户拥有是很重要的,这样服
务器在您以后运⾏时可以对它们进⾏读写访问。如果不使⽤-user参数,则默认创建root帐号。
4) –defaults-file=d:\my.ini :指定默认配置⽂件
第五:安装服务
同样的,进⼊MySQL安装⽬录下的bin⽬录,执⾏命令: mysqld –install [服务名称] ,如果不指定服务名
称,则默认为 mysql
第六:启动服务
$ mysql -u root -p
输⼊初始密码:aB4rvf335G,Z
跳过密码登录
$ mysql -u root -p –skip-password
bin\mysqld –defaults-file=C:\my.ini –initialize –console
C:\dev\mysql-5.7.32-winx64\bin> mysqld –install MySQL5.7
启动服务
net start mysql5.7
停⽌服务
net stop mysql5.7
删除服务
sc delete 服务名称
mysqld -remove 服务名称
第七:登录MySQL
第⼋:修改初始密码
第九:退出重新登录
第⼗、安装图形界⾯客户端
2)Linux系统安装
3)Mac系统安装
2、⽬录结构
bin⽬录:存储可执⾏⽂件
data⽬录:存储数据⽂件
include⽬录:存储包含的头⽂件
lib⽬录:存储库⽂件
docs⽬录:⽂档
mysql -u帐号 -p[密码]
mysql -uroot -paB4rvf335G,Z
mysql -uroot -p
mysql> ALTER USER ‘root’@’localhost’ IDENTIFIED WITH mysql_native_password BY ‘新密码’;
mysql> set password = password(‘密码’)
exit
mysql -uroot -p
输⼊新密码
查看进程
[zing@localhost ~]$ ps -ef | grep mysql
root 1371 1 0 2018 ? 00:00:00 /bin/sh /usr/bin/mysqld_safe —
datadir=/var/lib/mysql –socket=/var/lib/mysql/mysql.sock –pid-file=/var/run/mysqld/mysqld.pid
–basedir=/usr –user=mysql
mysql 1479 1371 0 2018 ? 00:20:46 /usr/libexec/mysqld –basedir=/usr —
datadir=/var/lib/mysql –user=mysql –log-error=/var/log/mysqld.log –pidfile=/var/run/mysqld/mysqld.pid –socket=/var/lib/mysql/mysql.sock
zing 17405 17387 0 09:35 pts/0 00:00:00 grep mysql
share⽬录:错误消息和字符集⽂件
3、登录MySQL
其它参数:
-u:⽤户名
-p:密码
-h:服务器名,默认是本机服务器
-p:端⼝号,默认是3306
-D:打开指定数据库
–prompt=name:指定命令提示符
–delimiter=name:指定分隔符
-V:输出版本信息并退出
–version:同-V
注意:如果远程连接失败,则进⾏以下授权
mysql -u 帐号 -p
[zing:~]$ mysql -uroot -h192.168.0.1 -P3306 -p
Enter password:
ERROR 1045 (28000): Access denied for user ‘root’@’192.168.0.1’ (using password: YES)
解决
进⼊mysql数据库
use mysql
授权:授予此帐号允许所有IP访问全部数据库及相关的数据表
GRANT ALL PRIVILEGES ON . TO ‘帐号’@’%’ IDENTIFIED BY ‘密码’ WITH GRANT OPTION;
其中,.表示全部数据库的全部表,%表示所有的ip地址
GRANT ALL PRIVILEGES ON . TO ‘root’@’%’ IDENTIFIED BY ‘root’ WITH GRANT OPTION;
从 MySQL 8 开始,不能⽀持⼀段式授权⽤户,需要先创建再授权。
mysql> CREATE USER ‘root’@’%’ IDENTIFIED BY ‘密码’;
mysql> GRANT ALL PRIVILEGES ON . TO ‘root’@’%’ WITH GRANT OPTION;
刷新⽣效
mysql> flush privileges;
查看配置是否成功
select host,user from user;
+————————-+———-+
4、退出MySQL
5、操作技巧
1)命令⾏结束符以;或\g结束
2)\c取消当前命令执⾏
3)可以通过help、?、\h加上相关关键字查看⼿册
4)注释
单⾏注释
5)查看MySQL版本
| host | user |
+————————-+———-+
| % | root |
| ……… | …. |
+————————-+———-+
exit
quit
\q
语法:? 关键字 | help 关键字 | \h 关键字
? create database;
? int
\h use
单⾏注释
— 单⾏注释(空格)
/
多⾏注释
/
查看MySQL版本(登录MySQL)
select version() ;
查看MySQL版本(退出MySQL)
mysql –version
mysql -V
6、配置⽂件
1、查看MySQL配置
注意:必须在MySQL命令下执⾏
2、创建配置⽂件
在MySQL安装⽬录下,创建my.ini⽂件,格式如下所示:
3、乱码问题
在MySQL安装⽬录下,创建my.ini⽂件,并配置如下:
查看字符编码
mysql> \s
mysql> status # 功能同上
客户端配置
[mysql]
…
服务端配置
[mysqld]
…
客户端字符编码配置
[mysql] [mysql]
default-character-set=utf8
…
服务端字符编码配置
[mysqld] [mysqld]
character-set-server=utf8
…
mysql> show variables like ‘character%’;
+————————–+—————————-+
| Variable_name | Value |
+————————–+—————————-+
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | utf8 |
7、卸载
1)停⽌服务
2)删除⽂件
在控制⾯板中,卸载以mysql开头的软件
在硬盘中,删除MySQL的安装⽬录
删除注册表(win+R,输⼊regedit)
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\Eventlog\Application\MySQL ⽬录删除
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet002\Services\Eventlog\Application\MySQL ⽬录删除
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\Application\MySQL ⽬录删除
3)删除mysql服务
4)删除注册表 win+R 然后输⼊regedit回⻋进⼊注册表编辑
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\Eventlog\Application\MySQL ⽬录删除
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet002\Services\Eventlog\Application\MySQL ⽬录删除
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\Application\MySQL ⽬录删除
七、图形界⾯
| character_set_filesystem | binary |
| character_set_results | latin1 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+————————–+—————————-+
8 rows in set (0.00 sec)
character_set_database 默认是latin1
停⽌服务
$ net stop MySQL5.7 # 其中,MySQL5.7为安装时的服务名称
$ mysqld -remove # 删除后台进程,否则在删除⽂件时可能会提示⽂件被占⽤
其中,MySQL5.7为安装时的服务名称
$ sc delete MySQL5.7
1、Navicat
⽬前开发者⽤的最多的⼀款mysql图形⽤户管理⼯具,界⾯简洁、功能也⾮常强⼤,与微软的SQLServer管理器很
像,简单易学,⽀持中⽂,提供免费版本。
2、Workbench
Mysql官⽅的⼀个图形管理⼯具,⽀持数据库的创建、设计、迁移、备份、导出、导⼊等功能,⽀持windows、
linux、mac主流的操作系统,使⽤起来⾮常的棒。
3、SQLyog
Webyog公司的产品,⼀款易于使⽤、快速⽽简洁的mysql数据库图形化管理⼯具,可以直观的在任何地点⾼效地管
理你的数据库。
⼋、数据库管理
1、创建数据库
2、查看当前服务器下的数据库列表
3、查看指定数据库的定义
语法:create database | schema [if not exists] 数据库名称 [[default] character set [=] 字符集名称];
create database if not exists pms default character set = ‘UTF8’;
语法:show databases | schemas ;
show databases;
语法:show create database | schema 数据库名称;
show create database test_db;
4、修改指定数据库的编码⽅式
5、打开指定数据库
6、删除指定数据库
7、查看上⼀步操作产⽣的警告信息
语法:alter database | schema 数据库名称 [default] character set [=] 字符集名称;
alter database test_db default character set = ‘utf8’;
语法:use 数据库名;
use test_db;
查看当前打开的数据库,如果没打开则显示null
语法:select database() | schema() ;
select database();
语法:drop database | schema [if exists] 数据库名称;
drop database if exists test_db;
show warnings ;