day42
一.mysql相关概念介绍
mysql 使用方法:
方法一:通过图形界面工具,如Navicat等(高级课使用)
方法二:通过在命令行敲命令来操作(基础阶段使用)
mysql => 数据库管理软件,本质上就是一个套接字程序,记录事物一些数据特征
字段=>标题
记录=>文件中的一行内容
表=>文件
库=>文件夹
数据服务器 => 运行有数据库管理软件服务端的计算机
数据库管理软件分两大类:
关系型:如db2,oracle,sql server,MySQL,注意:sql语句通用
非关系型:mongodb,redis,memcache
可以简单的理解为:
关系型数据库需要有表结构(表与表之间有联系)
非关系型数据库是key-value存储的,没有表结构
二.mysql基本管理
设置密码
# 方法一:
5.6版本设置密码方式
update mysql.user set password=password("123") where user="root" and host="localhost";
flush privileges; # 刷新MySQL的系统权限相关表
5.7版本
update mysql.user set authentication_string=password("123") where user="root" and host="localhost";
# 方法二:
set password = password("123456");
忘记密码
可以将mysql获取用户名和密码校验的功能看成是一个装饰器,装饰在了客户端请求访问的功能上
我们如果将该装饰器移除,那么mysql服务端就不会校验用户名和密码了
(1)先关闭mysqld服务端
(2)重新启动:
命令行的方式启动(让mysql跳过用户名密码验证功能)
mysqld --skip-grant-tables
(3)启动客户端:
# 直接以无密码的方式连接
mysql -uroot -p 直接回车
update mysql.user set password=password("") where user="root" and host="localhost";
'''
真正存储用户表的密码字段 存储的肯定是密文
只有用户自己知道明文是什么 其他人都不知道 这样更加的安全
密码比对也只能比对密文
'''
# 立刻将修改数据刷到硬盘
flush privileges;
(4) 关闭当前服务端 然后以正常校验授权表的形式启动,重新启动mysqld
三.sql语句基础
mysql服务端软件即mysqld帮我们管理好文件夹以及文件,前提是作为使用者的我们,需要下载mysql的客户端,或者其他模块来连接到mysqld,然后使用mysql软件规定的语法格式去提交自己命令,实现对文件夹或文件的管理。该语法即sql(Structured Query Language 即结构化查询语言)
SQL语言分为4个部分:DDL(定义),DML(操作),DQL(查询),DCL(控制)
1.DDL语句 数据库定义语言:数据库,表,视图,索引,存储过程,例如CREATE, DROP ,ALTER
2.DCL语句 数据库控制语言:例如控制用户的访问权限GRANT , REVOKE
3.DML语句 数据库操纵语言:插入数据INSERT,删除数据DELETE,更新数据UPDATE
4.DQL语句 数据库操纵语言:查询数据SELECT
SQL语句中的快捷键
>>> \G 格式化输出(文本式,竖立显示)
>>> \s 查看服务器端信息
>>> \c 结束命令输入操作
>>> \q 退出当前sql命令行模式
>>> \h 查看帮助
操作数据库的步骤
连接,打开库,操作,关闭退出
1.通过命令行连接MySql
数据库语法的特点:
①SQL语句可以换行,要以分号结尾
②命令不区分大小写,关键字和函数建议用大写
③如果提示符为’> 那么需要输入一个’ 回车
④命令打错了换行后不能修改,可以用\c取消
数据库操作
# 查看数据库 show databases;
# 创建数据库 create database 库名 default charset=utf8;
# 删除数据库 drop database 库名;
# 打开数据库 use 库名;
系统数据库
information_schema: 虚拟库,不占用磁盘空间,存储的是数据库启动后的一些参数,如用户表信息、列信息、权限信息、字符信息等
performance_schema: MySQL
5.5开始新增一个数据库:主要用于收集数据库服务器性能参数,记录处理查询请求时发生的各种事件、锁等现象 mysql: 授权库,主要存储系统用户的权限信息 test: MySQL数据库系统自动创建的测试数据库
1.库操作=>文件夹
创建库数据库
语法:
CREATE DATABASE 数据库名 charset utf8;
数据库命名规则:
可以由字母、数字、下划线、@、#、$
区分大小写
唯一性
不能使用关键字如 create select
不能单独使用数字
最长128位
# 增
# 创建数据库 charset utf8mb4是默认的,可以不写
create database db1 charset utf8mb4;
# 查
# 查看所有数据库
show databases;
# 查看数据库的建表语句
show create database db1;
# 改
alter database db1;
# 更改数据库的字符集
alter database db1 charset gbk;
# 删除
drop database db1
2.表操作=>文件
数据库管理系统中,可以有很多’库’,每个数据库中可以包括多张数据’表’
# 增
# 方式一:
create table db1.t1(id int,name char);
# 方式二:
# 切换文件夹
use db1;
select database();
create table t1(id int,name char);
# 查
# 查看所有的表名
show tables;
# 查看刚刚创建的命令
show create table db1.t1;
show create table db1.t1\G # (加上\G垂直显示,默认横向显示)
# 查看创建成功的表的结构
desc/describe t1;
# 改
# 更改表名 :rename
alter table t1 rename tt1;
# 只能改变数据类型:modify
alter table tt1 modify name char(10);
# 字段名+数据类型一起改变:change
alter table tt1 change name mingzi char(3);
# 删
drop table tt1;
3.记录操作=>文件中的一行内容
mysql null 相当于python None 是一样的,代表空,什么也没有
# 增
# 插入单条数据
insert t2 values(1,"egon");
# 插入多条数据
insert t2 values(2,"tom"),(3,"lxx"),(4,"hxx");
# into可写可不写
insert into t2(id) values(5),(6);
# 查
# *代表所有
select * from t2;
select name from t2 where id=3;
# 改
# update 表名 set 字段=值,id=值 where 条件
update t2 set name="lxx",id=444 where id=4;
# 如果不加条件,所有的数据都会改掉
update t2 set name="lxx"
# 删
delete from t2 where id=444;
# 清空整张表(推荐)
truncate t2
# primary key :主键
# auto_increment : 自增
create table t3(id int primary key auto_increment,name char(10));
insert t3(name) values("egon"),("tom"),("jack");
退出MySQL
exit;
quit;
卸载MySQL(Windows)
# 关闭服务
cmd:mysqld remove
# 删除已经解压的文件夹
# 重启电脑
存储引擎场景
日常生活中文件格式有很多中,并且针对不同的文件格式会有对应不同存储方式和处理机制(txt,pdf,word,mp4…)
针对不同的数据应该有对应的不同的处理机制来存储
存储引擎就是不同的处理机制
MySql主要存储引擎:
InnoDB
用于事务处理应用程序,支持外键和行级锁.
是MySql5.5版本及之后默认的存储引擎
存储数据更加的安全
MyISAM
是MySql5.5版本之前默认的存储引擎
速度要比InnoDB更快,但是我们更加注重的是数据的安全
Memory
内存引擎(数据全部放在内存中) 断电数据丢失
blackhole
无论存什么,都立刻消失(黑洞)
查看当前的默认存储引擎:
show variables like "default_storage_engine";
更改表的存储引擎
alter table t1 engine = innodb;
# 方法2:
# my.ini文件
[mysqld]
default_storage_engine=INNODB
四.mysql安装
从官方提供的mysql-apt-config.deb包进行APT源设置
APT源下载地址:https://dev.mysql.com/downloads/repo/apt/
windows安装mysql5.7
### windows安装mysql5.7
# mysql的配置文件(自己新建一个my.ini的配置文件)
ini结尾的一般都是配置文件
程序启动会先加载配置文件中的配置之后才真正的启动
(1) 在D:\MySQL5.7\mysql-5.7.25-winx64文件下创建一个my.ini文件
以下部分可以黏贴: 但是要注意路径,除非你和我的一模一样.
[mysql] # 一旦客户端启动立刻加载下面的配置
# 设置mysql客户端默认字符集
default-character-set=utf8
[mysqld] # 一旦服务端启动立刻加载下面的配置
# 设置3306端口
port = 3306
# 设置mysql的安装目录
basedir=D:\MySQL5.7\mysql-5.7.25-winx64
# 设置mysql数据库的数据的存放目录
datadir=D:\MySQL5.7\mysql-5.7.25-winx64\data
# 允许最大连接数
max_connections=200
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
以管理员身份运行cmd,进入bin目录,执行:
(2)初始化,创建mysql默认的root账户
mysqld --initialize-insecure --user=mysql 命令。不进行这一步,安装完成之后无法启动服务。
(3)依然在管理员cmd窗口的bin目录下,执行 mysqld install 命令安装。完成后会提示安装成功。
(4)依然在管理员cmd窗口的bin目录下,执行 net start mysql 命令启动MySQL服务。
(5)修改环境变量,添加"D:\MySQL5.7\mysql-5.7.25-winx64\bin"。
(6)cmd窗口中,执行 mysql -uroot -p 命令,默认没有密码,回车进入
(7)若要卸载,需要先停止服务,再删除即可
# 启动mysql服务
net start mysql
# 停止mysql服务
net stop mysql
# 重启:先停止在启动
mysql相关基础操作
"""
命令可以用tab来补全
d:
D:\>cd MySQL5.7
D:\>cd D:\MySQL5.7\mysql-5.7.25-winx64\bin 直接切换到对应的路径
D:\>dir 来查看文件夹里面的内容
"""
cls 清屏(windows) ctrl + l 清屏(linux)
ctrl + c 终止
[windows] 在超级管理员权限下才能使用:
net start mysql 启动mysql
net stop mysql 停止mysql
[linux]
service mysql start 启动mysql
service mysql stop 停止mysql
service mysql restart 重启mysql
# ### part1
登录完整语法:
mysql -u用户名 -p密码 -h地址ip
# (1) 登录到本地mysql 默认用户root 是最高权限账户
mysql -uroot -p
localhost => 127.0.0.1 本地ip地址
# (2) 退出mysql
\q 或者 exit
# (3) 远程连接mysql 服务器
mysql -uroot -p -h192.168.65.130
# ### part2
# 查询当前登录的用户是谁
select user();
# 设置密码
set password = password("123456");
# 去除密码
set password = password("");
小知识点
1.如何查看当前具体进程
tasklist
tasklist |findstr mysqld
2.如何杀死具体进程(只有在管理员cmd窗口下才能成功)
taskkill /F /PID PID号
查看当前计算机的运行进程数
services.msc
将mysql制作成系统服务
mysqld --install
移除mysql系统服务
mysqld --remove