文档章节

mariadb数据库常用命令

o
 osc_fmg49rzg
发布于 2019/03/18 15:23
字数 2442
阅读 20
收藏 0

精选30+云产品,助力企业轻松上云!>>>

在数据库中使用任何命令最好都用分号结尾

用户管理

        select user();

        #查看当前用户

        grant all on *.* to root@‘%’identified by '123'

        #给root用户所有的权限允许第三方登录(将root改成不存在的用户,也可以创建并赋予权限)

       grant select,create,update,delete on *.* to 'a'@'%' identified by '输入密码';

       #创建用户a,并给a添加查询,创建,更新,删除的权限(在任意主机上)

        grant all privileges on test03.grade to 'aaa'@'%';

       #给aaa赋予test03数据库的grade表最高权限(在任意主机上)

        show grants for 'aaa';

       #查看aaa用户的权限(root用户)

       revoke all on *.* from 'aaa'@'%';

       #收回aaa在任意数据库的任意表的最高权限

       show grants

       #查看权限

 

忘记mysql的root密码

        配置文件 /etc/my.conf.d/server.conf

        添加skip-grant-tables

        重启数据库 systemctl restart mysql

        进入数据库 mysql -uroot | mysql -uroot

        进入mysql数据库中 use mysql;

        修改密码 update user set password=password('填写密码') where user='root';

查看数据库

     show databases;

     #查看数据库

     show variables;

     #查看数据库参数

     show tables;

     #查看数据库中的表,要先进入数据库

     select  * from 表名;

     #查看 某个表中的所有数据

     mysqladmin --version

     #查看数据库版本

     show create database 库名;

     #查看创建数据库状态

      use 库名

     #使用哪个库

 

 修改数据库

       create database test01

       #创建数据库 test01

      create database test01 character set=utf8;

      #创建用户并支持中文

      show create database  test01

      #查看test01的字符集

      mysqladmin -u user -p create test01

      #直接在终端创建数据库,

      drop database test01

      #删除数据库

      mysqladmin -u root -p drop test01

      #另外你也可以在终端运行,

      alter database 库名 default character set=utf8;   

      #修改数据库默认字符集

 

备份/导出数据库

  要创建单个数据库的备份,在终端窗口中运行下列命令,

  mysqldump -u root -p密码 --databases  test > test.sql

 若要一次性创建多个数据库的备份则运行:

   mysqldump -u root -p密码 --databases  db_name1 db_name2 > db_name12_backup.sql

 从备份中恢复数据库

方法一

 从备份中恢复数据库,终端运行:

  mysql -u root -p密码 database_name < db_backup.sql

   但这条命令成功的前提是预先没有存在同名的数据库。如果想要恢复数据库数据到已经存在的数据库中,则需要用到 mysqlimport 命令:

  mysqlimport -u root -p密码 database_name < db_backup.sql

方法二

  进入数据库中确保没有同名的数据库,执行:

  source 备份的数据库名

 

MariaDB 数据类型

   MariaDB数据类型可以分为数字,日期和时间以及字符串值。

    使用数据类型的原则:够用就行, 尽量使用范围小的,而不用大的

  • 常用的数据类型
  1. 整数:int, bit   #bit自能存储0,1
  2. 小数:decimal   #decimal(5,2)  表示一共5位数字小数点后取2位
  3. 字符串:varchar, char #varchar(10) 表示最多可输入10个字符,char(10)输入几个字符也要占10个字符,且最多输入10个10字符
  4. 日期时间:date, time, datetime
  5. 枚举类型(enum)
  6. 自增:auto_incremen
  • 约束
  1. 主键primary key:物理上存储的顺序,不能重复,不能为空,默认有索引的功能
  2. 非空not null:此字段不能为空
  3. 唯一unique:此字段不允许重复
  4. 默认default:当不填写此值时会使用默认值,如果填写则已填写为准
  5. 外键foreign key:对关系字段进行约束,当为关系字段填写值时,会到关联的表中查询此值是否存在,如果存在则填写成功,如果不存在则填写失败并抛出异常

 

 

 表的相关命令

      create table 表名(字段 数据类型和约束可加多个,….可加多个字段用逗号逗号隔开); 

     #创建表 ,表的字段最好使用英文,字段后需要添加数据类型和约束,可添加多种约束

 

查看表

     select now();

     #显示当前时间

      desc 表名;

     #查看表结构

      show create table 表名;

     #查看表的创建

 

修改表

       alter table 表名 add 列名 类型;

      #修改表-添加字段

       alter table 表名 modify 列名 类型及约束;

       #修改表-修改字段:不重命名版

      alter table 表名 change 原名 新名 类型及约束;

      #修改表-修改字段:重命名版

        alter table 表名 drop 列名;

       #修改表-删除字段

删除表

         drop table 表名;

          #删除表

增表的内容

        insert into 表名 values(..),()…;

          #全列插入,每列都必须写入内容,写在括号里,用逗号分隔,(括号外用逗号分隔可一次插入多行) 主键字段 可以用0 null default 来站位,表示默认值

 

修改表的内容

        update 表名 set 列1=值1, 列2=值2... where 条件;

         #条件指的是修改那一部分

删除表的内容

        delete from 表名 where 条件;

物理删除

        delete from 表名;

        #清空表中的所有的数据

 

逻辑删除

        #用一条字段来表示 这条信息是否已经不能在使用了, 用alter table给表添加一个 bit类型的字段,或者创建表的时候直接创建

       select * from 表名;  #进行查看

        select * from 表名 where 带有bit的字段=bit值; #筛选

       #逻辑删除不是真正的删除,一般是用通过bit值来筛选需要的数据

 

查看表的内容

        select  字段1 as '别名',字段2 as '别名', …. from 表名;

         # 使用as给字段起别名    

      select 表名.字段1,表名.字段2 from 表名;

      #通过表名字段查询,可输入不同的表名

        select 别名.字段1,s别名.字段2,…. from 表名 as 别名;

        # 给表起别名查询

       select distinct 字段 from 表名;

       #  消除重复行

 

条件查询
          select * from 表名 where 字段 比较运算符 值;

            # 比较运算符有(=)(<)(>)(<=)(>=)  可以通过and(&&) or(||) 使用多个运算符

     常用的使用方法:

          select * from 表名 where 字段 between 值 and 值;

          select * from 表名 where 字段  比较运算符 or 字段 比较运算符

 

 模糊查询
                % 替代1个或者多个字符甚至是没有

                _ 下划线表示一个字符

               select * from 表名 where 字段 like '%表中数据的关键字%';

               select * from 表名 where 字段 like '收索几个字就写入几个下划线';

 

范围查询
         in (1,3,8)表示在一个非连续的范围内
          select * from 表名 where 字段 in (第一个值, 第二个值,….);

         #in 后面括号中用逗号分隔开的数字表示单个数字,不代表范围,可以用逗号分隔添加多个数值,列如(15,25,35,56):表示一个15,一个25,一个35,一个56

 

空判断

              select * from 表名 where 字段 is null;

              #判断is null,查看字段为空的信息

              select * from 表名 where 字段 is not null;

              判断非空is not null,查看字段为不为空的信息

 

排序             
               select * from 表名 where 条件 order by 字段 ascdesc;

               # order by 字段
              # asc从小到大排列,即升序
              # desc从大到小排序,即降序

 

聚合函数

   总数:count(*)   用*统计是最准确的,也可以在括号里加入某个字段,可能会不准确,最好使用*

  最大值:max(字段)

  最小值:min(字段)

  求和:sum(字段)

  平均值:avg(字段)

       select 函数类型 from 表名 where 条件;

       select round(avg(字段),3) from 表名;

       # 保留3位小数

 

分组

 group by
        select 字段 from 表名 group by 字段;

         #对表中某个字段中的内容分组

         group_concat()  按组显示括号中的内容

         select 字段1,group_concat(字段2) from 表名 where 条件 group by 字段1;

 

分页
     显示5页
    select * from 表名 limit 页5;

      分页显示,每页显示2条数据

       select * from 表名 limit 0, 2;

     

连接查询

    inner join

      select * from 表名1 inner join 表名2;

      #两个表连接查询

      select * from 表名1 inner join 表名2 on 表名1.字段=表名2.字段;   

      #连接两个表的对应字段

      select 表名1.字段, 表名2.字段 from 表名1 inner join 表名2 on 表名1.字段=表名2.字段;

       #按要求显示连接内容 可以使用别名

 

左关联   

select * from 表名1 left join 表名2 on 表名1.字段=表名2.字段;

  # 左关联,以左边表为基准,条件对应不上的显示null

 

右关联

   select * from 表名2 left join 表名1 on 表名1.字段=表名2.字段;

  #右关联,以后边为基准,条件对应不上的显示null

 

自关联

   在一个表中建立关联

   列如: select * from 表名 as 别名1 inner join 表名 as 别名2 on 别名1.字段1=别名2.字段2 where 别名1.字段='关键数据';

 

视图

    视图的用途就是查询

      create view 视图名称 as select语句;

      #定义视图,建议以v_开头

      show tables;

      #查看视图:查看表会将所有的视图也列出来

      drop view 视图名称;

       #删除视图

 

事务

        begin或 transaction

        #开启事务

            commit;

       #将缓存中的数据变更维护到物理表中

        rollback;

      #放弃缓存中变更的数据

 

索引

 创建索引

  方式一:建表时创建索引

create table create_index(
id int primary key,
name varchar(10) unique,
age int,
key (age)
);

方式二:对于已经存在的表,添加索引

如果指定字段是字符串,需要指定长度,建议长度与定义字段时的长度一致
字段类型如果不是字符串,可以不填写长度部分

create index 索引名称 on 表名(字段名称(长度))
例:
create index age_index on create_index(age);

    drop index 索引名称 on 表名;

    #删除索引

    show profiles;

    #查看sql执行时间

   set profiling=1;

   #打开sql语句执行时间 零时修改,重启数据库失效 

 

o
粉丝 0
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。
Linux——LNMP环境介绍

一、LNMP环境概述 1、什么是LNMP环境 LNMP 是 Linux + Nginx + MySQL/Mariadb + PHP 的组合缩写。 Nginx:是一个web服务器,提供HTTP 服务。 MySQL/MariaDB:关系型数据库,用来存放数据(例如...

初雪之路
2019/02/27
0
0
Centos7 使用yum安装MariaDB与MariaDB的简单配置与使用

一.mariadb的安装 MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可。 开发这个分支的原因之一是:甲骨文公司收购了MySQL后,有将MySQL闭源的潜在风险,因此...

osc_rs0lpejm
2018/11/14
6
0
Window下同一台服务器部署多个MariaDB(Mysql)、服务方式启动简要配置

版本:MariaDB 10 环境:D盘下,放2个MariaDB解压版,分别是D:MariaDB、D:MariaDBA 1、进入MariaDB、MariaDBA,复制my-XXX.ini(不同的文件对应不同的硬件配置),改名为my.ini 2、文本编辑器...

GKTest
2014/08/21
425
0
MariaDB数据库服务

一、初始化mariaDB服务程序: yum install mariadb mariadb-server //安装mariaDB systemctl start mariadb //启动mariadb systemctl enable mariadb //添加到开机启动项中 初始化数据库服务...

osc_7zyqbo9l
2018/11/08
1
0
centos7 mysql安装和基本操作yum安装

#yum install mysql #yum install mysql-server #yum install mysql-devel 安装mysql和mysql-devel都成功,但是安装mysql-server失败,如下: # yum install mysql-server 官网下载安装mysql......

osc_agi1kgvn
2019/04/01
9
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周日乱弹 —— 那么长的绳子,你这是放风筝呢

Osc乱弹歌单(2020)请戳(这里) 【今日歌曲】 @ 巴拉迪维:黑豹乐队的单曲《无地自容》 耳畔突然响起旋律,是那首老歌。中国摇滚有了《一无所有》不再一无所有;中国摇滚有了《无地自容》不...

小小编辑
48分钟前
55
1
《吐血整理》-顶级程序员书单集

你知道的越多,你不知道的越多 给岁月以文明,而不是给文明以岁月 前言 王潇:格局决定了一个人的梦想,梦想反过来决定行为。 那格局是什么呢? 格局是你能够看见的深度、广度和密度。 王潇认...

敖丙
2019/12/11
8
0
我可以在Android版式中加下划线吗? - Can I underline text in an Android layout?

问题: 如何在Android布局xml文件中定义带下划线的文本? 解决方案: 参考一: https://stackoom.com/question/A31z/我可以在Android版式中加下划线吗 参考二: https://oldbug.net/q/A31z/...

法国红酒甜
51分钟前
26
0
干掉ELK | 使用Prometheus+Grafana搭建监控平台

什么是Prometheus? Prometheus是由SoundCloud开发的开源监控报警系统和时序列数据库(TSDB)。Prometheus使用Go语言开发,是Google BorgMon监控系统的开源版本。 Prometheus的特点 · 多维度...

木九天
今天
34
0
拉勾网拉你上勾

预览 需求简介 拉勾网是一个互联网行业的一个招聘网站,上面有许多职位,于是乎,小编想提取指定职位的基本信息(职位名,薪水,工作经验,工作地点,教育背景),然后插入 MongoDB 数据库,...

木下瞳
2019/04/17
20
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部