Py学习  »  DATABASE

MySQL 运维 - 从零开始学习 | 超详细

serendipity_cat • 3 年前 • 103 次点击  

MySQL 运维 - 从零开始学习

MySQL 是一款免费开源的关系型数据库管理系统,关系型数据库将数据保存在不同的表中,有效的提高了灵活性


一、数据库类型

► 常见的数据库类型

关系型数据库 :用于存储字符、字符串、数值以及布尔值等
MySQL SQL_Server access Oracle DB2 sybase

非关系型数据库 :用于存储图片、视频、语言等
MongoDB Redis (内存/缓存数据库) Memcache
Redis和Memcache对比
相同点:存储高热数据(在内存中高速运行)
不同点: Redis 可以做持久化保存,可以存储对象


二、数据库管理系统 DBMS

项目架构,不是只有服务,还有一些通用的管理系统
比如 BOSS CRM OA

►数据库系统

它的处理比直接作用在数据库中操作要简单一些
目前主流的运行方式是关系型数据库+非关系型数据库集成为一个完整的架构
SQL + NoSQL 保存数据并用分压

►关系型数据库

E-R 关系模型三要素
实体
可以是事物本身
关系
实体集之间对应的关系
属性
一个实体可以有多个属性,描述实体的特征

主键
唯一且非空
唯一键
可以为空(空值只能出现一次)
主键包含唯一键的部分属性

►非关系型数据库 Not Only SQL

存储海量数据,给与大数据进行分析,筛选出有价值的部分
redis 数据保存在内存中,也会定期将数据写入磁盘

Not Only SQL 不限于SQL
不需要遵循关系数据库模型
也不使用SQL作为查询语言


三、安装MySQL

官方下载地址
国内源下载地址

► Linux的RPM包功能

  • MySQL 只用于连接 MySQL 服务器
  • MySQL-client 顾名思义(客户端),用于控制 MySQL 服务器
  • MySQL-devel 用于编译客户端
  • MySQL-shared 动态装载的共享库 (libmysqlclient.so*)
  • MySQL-bench 性能测试工具

四、MySQL数据库基础操作命令

► 常用的数据类型

变量 介绍
int 整型
float 单精度浮点 4字节32位
double 双精度浮点 8字节64位
char 固定长度的字符类型
varchar 可变长度的字符类型
text 文本
image 图片
decimal (3,2) 3个有效长度数字,小数点后面有2位

► 常用的基础指令

登录mysql数据库

mysql -u 用户名 -p
  • 1
  • 1

选中[使用]数据库

use 数据库名;
  • 1
  • 1

查看数据库

show databases;
  • 1
  • 1

查看数据表

show tables;
  • 1
  • 1

查看库的字符集

show character set;
  • 1
  • 1

查看数据表的数据类型




    
desc 数据表名;
  • 1
  • 1

创建数据库

create database 数据库名;
  • 1
  • 1

创建UT8编码的数据库

create datebase 表名 default characret set utf8 collate utf8_general_ci
  • 1
  • 1

创建数据表

create table 数据表名 (字段名 字段值(number));
  • 1
  • 1

举例:

create table info (uid int(50),name varchar(100),sex varchar(2),status varchar(100));
  • 1
  • 1

向数据表插入数据

insert into 数据表名 (字段名1,字段名2...) values (字段值1,字段值2...)
  • 1
  • 1

举例:

insert into info (uid,name,sex,status) values (1,'Frisk','未知','雪镇');
  • 1
  • 1

查看数据表内容

select * from 表名
  • 1
  • 1

数据表内容纵向列出

select * from 表名\g
  • 1
  • 1

显示数据表内容的第二行

select * from 表名 limit 2;
  • 1
  • 1

显示数据表内容从第二行开始的一行

select * from 表名 limit 2,1;
  • 1
  • 1

查询多表内容




    
select * from 表名1,表名2
  • 1
  • 1

IN显示指定范围内的重复内容

select * from 表名 where 字段名 in ();
  • 1
  • 1

举例:

select * from info where kill in (100);
  • 1
  • 1

修改表名

alter table 旧表名 rename 新表名
  • 1
  • 1

扩展表结构(增加字段)

alter table 表名 add 字段名 varchar(100) not null default '未填写';
  • 1
  • 1

修改字段

alter table 表名 change 旧列名 新列名 字段();
  • 1
  • 1

删除数据库

drop database 数据库名;
  • 1
  • 1

删除数据表

drop table 数据表名;
  • 1
  • 1

删除数据表字段

alter table 表名 drop 字段;
  • 1
  • 1

删除数据表主键

alter table 表名 drop primary key;
  • 1
  • 1

删除数据表所有记录

一条一条删除速度较慢

delete from 表名;
  • 1
  • 1

删除数据表指定内容

delete from 表名 where 字段名=字段值;
  • 1
  • 1

清空数据表数据

整体删除速度较快

truncate 表名;
  • 1
  • 1

全局修改数据表内数据

update 表名 set 字段名=字段值
  • 1
  • 1

举例:

update info set sex='男'
  • 1
  • 1

修改表内指定内容的数据

update 表名 set 字段名=字段值 where 字段名=字段值;
  • 1
  • 1

举例:

update info set sex='女' where name='Frisk';
  • 1
  • 1

修改表内指定数据类型

alter table 表名 modify 字段名 数据类型();
  • 1
  • 1

举例:

alter table info modify uid int(10) not null default 'tan90°';
  • 1
  • 1

将字段至于首位

alter table 表名 modify 字段名 数据类型() frist;
  • 1
  • 1

将字段名临时修改并显示

select 字段名 as 新字段名 from 表名;
  • 1
  • 1

举例:

select name as 名字 from info;
  • 1
  • 1

判断查询

select * from 表名 where 字段名>字段值;
  • 1
  • 1

举例:

select * from info where uid>0;
  • 1
  • 1

多重判断查询

关键词 AND | OR

select * from 表名 where 字段名>字段值 and (字段名<字段值);
  • 1
  • 1

排序查询内容

select * from 表名 order by 字段名 asc;
  • 1
  • 1

反向排序查询内容

select * from 表名 order by 字段名 desc;
  • 1
  • 1

表内容加盐

update 表名 set 字段名=加密方式('');
  • 1
  • 1

常用加密方式

  • password
  • md5
insert into user (password) values (md5('123456'));
  • 1
  • 1
  • encode
  • decode

encode decode 有些特殊

update user set pwd=decode('123456','123456');
  • 1
  • 1

克隆表

create table 表名 (select * from 克隆的表名)
  • 1
  • 1
create table 表名 like 克隆的表名
  • 1
  • 1

复制备份

insert into 表名 select * from 表名
  • 1
  • 1

创建临时表

临时表在退出后会销毁, show tables 无法查看,一般用于测试

create temporary table 表名(字段1 数据类型...);
  • 1
  • 1

创建用户

create user '用户名'@'来源地址' IDENTIFIED BY '密码';
  • 1
  • 1

生成密文

select password('值');
  • 1
  • 1

使用密文创建用户

select password('123456')


    
;
create user 'Toby'@'localhost' IDENTIFIED BY '*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9';
  • 1
  • 2
  • 1
  • 2

重命名指定

rename user '用户名'@'来源地址' to '新用户名'@'新来源地址';
  • 1
  • 1

来源地址 可指IP、网段 192.168.1.% 、域名

删除用户

drop user '用户名'@'来源地址';
  • 1
  • 1

修改当前登录用户的密码

set password = password('值');
  • 1
  • 1

修改其他用户密码

set password for '用户名'@'来源地址' = password('值');
  • 1
  • 1

忘记root密码的解决办法

进入 MySQL 配置文件

vim /etc/my.conf
  • 1
  • 1

[mysqld] 语句下增加 skip-grant-tables

[mysqld]
skip-grant-tables
#登陆时无需密码
  • 1
  • 2
  • 3
  • 1
  • 2
  • 3
systemctl restart mysqld
  • 1
  • 1

修改密码

update mysql.user set authentication_string = password('') where user='root'

flush privileges;
  • 1
  • 2
  • 3
  • 1
  • 2
  • 3

数据库用户提权

grant 权限列表 on 数据库名.表名 to '用户名'@'location' []
  • 1
  • 1

查看权限

show grant for '用户名'@'来源地址'
  • 1
  • 1

删除权限

revoke all on *.*


    
 from 用户名@地址;
  • 1
  • 1

查询数据去重

select distinct 字段 from 表名
  • 1
  • 1

► MySQL中6常见的约束

  • 主键约束 (primary key)
  • 外键约束 (foreign key)
  • 非空约束 (not null)
  • 唯一性约束 (unique)
  • 默认性约束 (default)
  • 自增约束 (auto_increment)

非空约束

create table user(
                       -> id int(10) not null,
                       -> name varchar(16)
                       -> );
  • 1
  • 2
  • 3
  • 4
  • 1
  • 2
  • 3
  • 4

向表中添加数据

insert into user (name) values('Bob');
  • 1
  • 1

拒绝添加

(1364, "Field 'id' doesn't have a default value")
  • 1
  • 1

唯一性约束

列级约束

所有语法都支持,但是外建上没有用处

create table user(
                       -> id int(10),
                       -> name varchar(16) not null,
                       -> sex varchar(2) unique
                       -> );
  • 1
  • 2
  • 3
  • 4
  • 5
  • 1
  • 2
  • 3
  • 4
  • 5

表级约束

除了非空约束以外全部支持

create table user(
                       -> id int(10),
                       -> name varchar(16) not null,
                       -> sex varchar(2),
                       -> unique(sex)
                       -> );
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

联合约束

同时约束多个目标

create table user(
                       -> id int(10),
                       -> name varchar(16) not null,
                       -> sex varchar(2),
                       -> unique(name,sex)
                       -> );
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

主键约束

列级定义

create table user(
                       -> id int(10) primary key,
                       -> name varchar(16)
                       -> );
  • 1
  • 2
  • 3
  • 4
  • 1
  • 2
  • 3
  • 4

表级定义

create table user(
                       -> id int(10),
                       -> name varchar(16) not null,
                       -> constraint password primary key (id)
                       -> );
  • 1
  • 2
  • 3
  • 4
  • 5
  • 1
  • 2
  • 3
  • 4
  • 5

外键约束

create table user (
                       -> id int(10),
                       -> name varchar(16) not null
                       -> );
  • 1
  • 2
  • 3
  • 4
  • 1
  • 2
  • 3
  • 4
create table password(
                       -> id int(10) primary key auto_increment,
                       -> name varchar(16),
                       -> foreign key


    
(id) references user(uid)
                       -> );
  • 1
  • 2
  • 3
  • 4
  • 5
  • 1
  • 2
  • 3
  • 4
  • 5
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/111458
 
103 次点击