MySQL介绍
1 数据库介绍
数据库本质是一款基于网络通信的应用程序,用于存储和管理数据的仓库。
数据库实现了:数据统一存放且格式固定,即数据存放于服务端的特定位置,所有客户端都必须去该位置操作数据。
数据库主要分为两类:关系型数据库和非关系型数据库。
关系型数据库:
- 数据之间彼此有约束或联系;
- 通常以表格的形式存储数据,字段可以限制存储数据的类型。
- 代表:MySQL,Oracle,Access,SQL Server,SQLite
非关系型数据库
- 通常以键值对的形式存储数据;
- 速度比较快,可用于数据缓存;
- 代表:MongoDB (最像关系型数据库的非关系型数据库), Redis,Memcache
2 MySQL介绍
2.1 重要概念
名称 | 类比 |
---|---|
库 | 文件夹 |
表 | 文件 |
记录 | 表格文件内每一行数据 |
表头 | 表格文件的开头部分,一般是第一行字段 |
字段 | 字段名 + 字段类型 |
表单 | 文件中表头以外的数据 |
2.2 服务端和客户端
mysql/bin目录下
服务端:mysqld.exe (mysql daemon,监听3306端口)
客户端:mysql.exe
启动服务端
C:\mysql\bin>mysqld
启动客户端连接本地服务端
C:\mysql\bin>mysql -h 127.0.0.1 -P 3306 -uroot -p
简写,可以省略ip地址和端口号
C:\mysql\bin>mysql -uroot -p
- 常用的端口号
MySQL:3306
Redis:6379
MongoDB:27017
dJango:8000
flask:5000
Tomcat:8080 - 第一次以管理员用户root登录,默认没有密码;
- 退出MySQL可以使用命令 quit 或者 exit,不需要分号;
- 连接服务端时如果仅输入mysql,是以游客模式登录,不是以管理员用户登录,因此可以使用的功能有限;
- 进程相关
查看当前具体进程
tasklist
tasklist |findstr mysqld
杀死进程,要以管理员身份登录cmd。
taskkill /F /PID [PID号]
- 服务相关
需要以管理员身份运行cmd
建立mysqld.exe服务
C:\mysql\bin>mysqld --install
移除mysqld.exe服务
C:\mysql\bin>mysqld --remove
3 基本配置
MySQL中的SQL语句是以分号作为一条语句的结束标准;
可以在语句结尾添加 \c 来放弃执行本语句,此时不需要分号。
3.1 基本命令
- 查看所有的数据库名称
show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| test |
+--------------------+
4 rows in set (0.00 sec)
在mysql主目录下的data文件夹中,默认有三个文件夹,分别为mysql,performance_schema,test,与上面输出的后三个相对应,而information_schema是用于保存MySQL服务器所维护的所有其它数据库的信息。
- 修改密码,在cmd中输入
C:\mysql\bin>mysqladmin -uroot -p[原密码] password[新密码]
- 破解密码
方法:绕过用户名和密码认证
首先关闭mysql服务端;
然后以跳过授权表的方式启动mysql服务端;
C:\mysql\bin>mysqld --skip-grant-tables
此时登录客户端不需要输入密码;
C:\mysql\bin>mysql -uroot -p
重置当前用户的密码;
update mysql.user set password=password([新密码]) where user='root' and host='localhost';
立刻将数据从内存刷到硬盘;
flush privileges;
最后需要关闭服务端,以正常校验授权表的形式重新启动服务端。
3.2 修改配置文件
mysql默认的配置文件是 my-default.ini,程序启动时会加载配置文件中的设置,这个配置文件不可修改。
自定义配置需要新建配置文件my.ini。
[mysqld]
# 服务端启动时加载的配置
[mysql]
# 客服端启动时加载的配置
[client]
# 其它编程语言编写的客户端启动时加载的配置
例如,统一字符编码为utf-8,并且实现在客户端管理员不需要用户名密码自动登录。
[mysqld]
character-set-server=utf8
collation-server=utf8_general_ci
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
user="root"
password=123456
配置完成后需要重启mysql服务端和客户端。
4 基本SQL语句介绍
4.1 库
增
create database db1;
create database db2 charset='gbk'
查
show databases;
show create database db2;
改
alter database db2 charset='utf8';
删
drop database db2;
4.2 表
查看当前所在库的名字
select database();
切换库
use db1;
增
create table t1(id int, name char(4));
create table db2.t1(id int, name char(4));
查
show tables;
show create table t1;
describe t1;
desc t1;
改
alter table t1 modify name char(16);
删
drop table t1;
4.3 数据
增
insert into t1 values(1, 'Tom');
insert into t1 values(2, 'Mary'), (3, 'Ben');
查
select * from t1;
select id, name from t1;
改
update t1 set name='Jean' where id = 2;
删
delete from t1 where id > 1;