Mariadb 操作如下:(下载:https://downloads.mariadb.org/

一、Window10上进行zip安装

1、解压,把\mariadb-10.3.11-winx64\bin)配置入环境变量 Path

2、以管理员权限启动CMD开始安装服务,首先必须定位到上述bin目录,否则亲测安装之后启动不了,系路径错误!,命令:“mysqld.exe --install mariadb” (mariadb 为服务名,可以自定义),显示 “Service successfully installed.” 安装成功。

PS D:\developer\mariadb-10.3.13-winx64\bin> mysqld.exe --install mariadb

Service successfully installed.

3、启动这个服务,命令:“net start mariadb”,启动成功!

PS D:\developer\mariadb-10.3.13-winx64\bin> net start mariadb

mariadb 服务正在启动 .

mariadb 服务已经启动成功。

删除服务:mysqld.exe --remove mariadb

4、配置:

D:\developer\mariadb-10.3.13-winx64\bin> mysql -uroot
MariaDB [(none)]> set password = password("1234");  #设置密码
MariaDB [(none)]> flush privileges;                                   #刷新
MariaDB [(none)]> exit
C:\Users\liubo>mysql -uroot -p1234 
MariaDB [(none)]> show variables like 'character%';        #显示编码集
set character_set_client=utf8mb4 ;             # 配置编码
set character_set_connection=utf8mb4 ;  
set character_set_database=utf8mb4; 
set character_set_filesystem=binary ; 
set character_set_results=utf8mb4; 
set character_set_server=utf8mb4; 
set character_set_system=utf8 ; 
show variables like 'character%';           # 查看配置结果

用户授权

mysql>grant all privileges on *.* to 'root'@'%' identified by '123456' with grant option;
mysql>flush privileges;

二、数据库操作

查看数据库状态 # show create database 数据库名;
创建数据库(如果有特殊符号,要用` `引起来)
# create database 数据库名;
使用指定数据库 # use 数据库名;
修改数据库默认字符 
# alter database 数据库名 default character set=utf8;
查看当前用户 # select user();
添加用户 # create user aaa identified by bbb;
赋予权限: # grant all privileges on *.* to bbb@'%';
all:权限,所有权限,最高权限
第一个*:数据库名字(可以指定个别数据库)
第二个*:数据库里的所有表(可以指定个别表)
bbb:给那个用户赋予权限
@:分隔符
%:指定登录模式
权限有四种:
select:查询
create:创建
update:更新
delete:删除
all:全部权限,最高权限 
登录权限:
localhost:只能本地登录(在数据库的主机上登录,在linux终端)
%:本地和第三方软件都可以登录 
 
刷新权限 # flush privileges;
查看指定用户权限 # show grants for '用户名';
收回权限 # revoke all on *.* from 'aaa'@'%';
查看权限 # show grants
添加表 # insert into student (name,age,gid) values ('zl',12,6)
创建root远程连接mysql # delete from mysql.user where user='';
删除匿名用户 # delete from mysql.user where user='';
查看用户命令表 # select Host,user,password from user;
创建一个root用户给最高权限设置密码为123
# grant all privileges on *.* to 'root'@'%' identified by '123';
如果root忘记密码:
先在配置文件中添加跳过密码验证
重启服务 
进入mysql,设置密码
update user set password=password('123') where user='root';
--显示当前时间
select now();
--查看表结构
desc table_name
--查看表的规则
show create table table_name
--插入信息
insert into students values(0,'金星',18, 188.88, '中性', 0);
--查看表中所有字段
select * from students;
--修改表-添加字段
--alter table 表名 add 列名 类型;
alter table students add birthday datetime;
-- 修改表-修改字段:不重命名版
-- alter table 表名 modify 列名 类型及约束;
alter table students modify birthday date;
-- 修改表-修改字段:重命名版
-- alter table 表名 change 原名 新名 类型及约束;
alter table students change birthday birth date default '2000-01-01';
-- 修改表-删除字段
-- alter table 表名 drop 列名;
alter table students drop xxx;
-- 删除表
-- drop table 表名;
drop table students;
--全列插入
--insert into 表名 values(..)
--主键字段 可以用0 null default 来站位
insert into classes values (0, '大神班');
-- 向students表里插入 一个学生信息
insert into students values (0, '鹿鼎记', 20, '女', 1, '1990-01-01')
insert into students values (null, '鹿鼎记', 20, '女', 1, '1990-01-01')
insert into students values (default, '鹿鼎记', 20, '女', 1, '1990-01-01')
--部分插入
insert into students(name, gender) values ('小乔', 2);
insert into students(name, gender) values ('大乔', 2),('貂蝉', 2);
--修改
--update 表名 set 列1=值1, 列2=值2... where 条件;
update students set 
--删除
-- 物理删除
-- delete from 表名 where 条件
delete from students;
delete from students where id=17;
-- 逻辑删除
-- 用一条字段来表示 这条信息是否已经不能在使用了
-- 给students表添加一个is_delete字段 bit 类型
alter table students add is_delete bit default 0;
update students set is_delete=1 where id=6;
alter table students add is_delete bit default 0;
--查询基本使用(条件,排序,聚合函数,分组,分页)
 
--创建
--创建学生表
create table students (
 id int unsigned not null auto_increment primary key,
 name varchar(20) default '',
 age tinyint unsigned default 0,
 high decimal(5,2),
 gender enum('男', '女', '中性', '保密') default '保密',
 cls_id int unsigned default 0,
 is_delete bit default 0
);
--创建班级表
create table classes(
 id int unsigned auto_increment primary key not null,
 name varchar(20) not null
);
--往students表里插入数据
insert into students values
(0,'小明',18,180.00,2,1,0),
(0,'小月月',19,180.00,2,2,0),
(0,'彭于晏',28,185.00,1,1,0),
(0,'刘德华',58,175.00,1,2,0),
(0,'黄蓉',108,160.00,2,1,0),
(0,'凤姐',44,150.00,4,2,1),
(0,'王祖贤',52,170.00,2,1,1),
(0,'周杰伦儿',34,null,1,1,0),
(0,'程坤',44,181.00,1,2,0),
(0,'和珅',55,166.00,2,2,0),
(0,'刘亦菲',29,162.00,3,3,0),
(0,'金星',45,180.00,2,4,0),
(0,'静香',18,170.00,1,4,0),
(0,'郭静',22,167.00,2,5,0),
(0,'周杰',33,178.00,1,1,0),
(0,'钱小豪',56,178.00,1,1,0),
(0,'钱小豪',38,175.00,1,1,0);
--向classes表里插入数据
insert into classes values (0, '云唯_01期'),(0, '云唯_02期');
 
--查询
-- 查询所有列
 --select * from 表名
 select * from students;
 --一定条件查询
 select * from students where name='周杰伦儿';
 select * from students where id>3;
 -- 查询制定列
 select name, gender from students;
 -- 使用as给字段起别名
 select name as 姓名, age as 年龄 from students;
 -- 通过表名字查询
 select students.name, students.age from students;
 -- 给表起别名查询
 select s.name, s.age from students as s;
 --消除重复行
 -- distinct
 select distinct gender from students;
 --条件查询
 --比较运算符
 -- 查询年纪大于18岁的信息
 select * from students where age > 18;
 select id, name, gender from students where age > 18;
 --18岁到28岁之间(and)
 select * from students where age>18 and age<28;
 --在18岁以上或者身高180以上的人(or)
 select * from students where age>18 or high>=180;
 -- 模糊查询
 -- like
 -- % 替代1个或者多个甚至是没有
 select * from students where name like '小%';
 -- 查询姓名中有‘小’的所有名字
 select * from students where name like '%小%';
 -- 查询有两个字的名字
 select * from students where name like '__';
 -- 查询至少有2个字的名字
 select * from students where name like '__%';
  -- rlike 正则
 -- 查询以周开始的名字
 select * from students where name rlike '^周.*';
 select * from students where name rlike '^周.*儿$';
 --范围查询
 -- in (1,3,8)表示在一个非连续的范围内
 -- 查询 年纪为18,34的人
 select * from students where age=18 or age=34;
 select * from students where age=18 or age=34 or age=12;
 select * from students where age in (12,18,34);
  --查询 年龄在17岁到34岁之间的信息
 select * from students where age between 18 and 34;
 --查询 年纪不在18到34岁的信息
 select * from students where age not between 18 and 34;
 -- 空判断
 -- 判断is null
 -- 查询身高为空的信息
 select * from students where high is null;
 -- 判断非空is not null
 select * from students where high is not null;
-- 排序
 -- order by 字段
 -- asc从小到大排列,即升序
 -- desc从大到小排序,即降序
 -- 查询年纪在18到34岁之间的男性,按照年纪从小到大
 select * from students where age between 18 and 34 and gender=1;
 select * from students where age between 18 and 34 and gender=1 order by age;
 select * from students where age between 18 and 34 and gender=1 order by age asc;
 select * from students where (age between 18 and 34) and gender=1 order by age desc;
 -- 查询年纪在18到34岁之间的女性,身高从高到矮
 select * from students where (age between 18 and 34) and gender=2 order by high desc;
 -- order by 多字段
 -- 查询年纪在18到34岁的女性,身高从高到矮排序,如果身高相同的情况下按照年纪从小到大排序
 select * from students where (age between 18 and 34) and gender=2 order by high desc, age desc;
 -- 查询年纪在18到34岁的女性,身高从高到矮排序,如果身高相同的情况下按照年纪从小到大排序,如果年龄也相等那么按照id从小到大排序;
 select * from students where (age between 18 and 34) order by high desc, age,id;
 -- 按照年纪从小到大、身高从高到矮的排序
 select * from students order by age asc, high desc;
 
--聚合函数
 -- 总数
 -- count 
 -- 查询男性有多少人
 select * from students where gender=1;
 select count(*) from students where gender=1;
 select count(*) as '男性' from students where gender=1;
 -- 最大值
 -- max
 -- 查询最大的年纪
 select age from students;
 select max(age) from students;
 -- 查询女性的最高 身高
 select gender,max(high) from students where gender=2;
 -- 最小值
 -- min
 select min(age) from students;
 -- 求和
 -- sum
 -- 计算所有人的年龄总和
 select sum(age) from students;
 -- 平均值
 -- avg
 -- 计算平均年纪
 select avg(age) from students;
 -- 计算平均年纪 sum(age)/count(*)
 select sum(age)/count(*) from students;
 -- 保留2位小数
 select round(avg(age), 2) from students;
 
-- 分组
 -- group by
 -- 按照性别分组,查询所有的性别
 select gender from students group by gender;
 -- 计算每组性别的人数
 select gender, count(*) from students group by gender;
 -- 计算男性人数
 select gender, count(*) from students where gender=1 group by gender;
 --把查出来的内容拼接成一个字符串concat 
 select concat(id,name,age) from students;
 select concat(id,' ',name,' ',age) from students;
 -- 查询男性组中的姓名 group_concat

select gender, group_concat(name) from students where gender=1 group by gender;
  select gender, group_concat(name,age) from students where gender=1 group by gender;
  select gender, group_concat(name,age,id) from students where gender=1 group by gender;
  select gender, group_concat(name,age," ",id) from students where gender=1 group by gender;
  -- having


 -- 查询平均年纪超过30岁的性别,以及姓名 having avg(avg) > 30
 select gender, group_concat(name), avg(age) from students group by gender having avg(age)>30;
 -- 失败操作:
 select gender, group_concat(name), avg(age) from students where avg(age)>30 group by gender;
 -- 查询每种性别中的人数多于4个组的信息
 select gender, group_concat(name) from students group by gender having count(*)>4;
-- 分页
 -- 显示5页
 select * from students limit 2;
 -- 分页显示,每页显示2条数据
 select * from students limit 0, 2;
 -- 按照身高从高到矮排序,查找出所有女性,并且分页显示,每页显示2条数据
 select * from students where gender=2 order by high desc limit 0, 2;
   -- 数据库的备份与恢复
    备份并不是将数据库的信息备份,而是将数据库的sql语句备份,备份的时候在linux界面备份,还原的时候进入数据库还原
 备份一个数据库:      
    # mysqldump -uroot -proot --databases 数据库名 > 数据库名.sql
 备份所有数据库:      
    # mysqldump -uroot -proot --all-databases > all_databases.sql
 备份一个数据库中的一个表: 
    # mysqldump -uroot -proot 数据库名 表名 > 表名.sql
 还原数据库:
    # source xxxx.sql