一、数据库介绍

1.什么是数据库?
简单的说,数据库就是一个存放数据的仓库,这个仓库是按照一定的数据结构(数据结构是指数据的组织形式或数据之间的联系)来组织,存储的,我们可以通过数据库提供的多种方法来管理数据库里的数据
更简单的理解形象,数据库和我们生活追踪存放杂物的储物间仓库性质一样,区别只是存放的东西不通,杂物间存放实体的物件,而数据库里存储的是数据,这样我们就对数据库有一个初步了解了。
数据库诞生于1950年,随着信息技术的发展和人类社会的不断进步,特别是2000年后,数据库不在仅仅是存储和管理数据了,而转变成用户所需要的各种数据管理的方式,数据库有很多种类和功能,从最简单的存储有各种数据的表格到能够进行海量数据存储的大型数据库系统都在各个方面得到了广泛的应用。
2.数据库的种类
层次式数据库,网络式数据库和关系型数据库,常见的数据库模型主要是两种,即关系型数据库(mysql,oracle,db2)和非关系型数据库(mongodb,redias)
3.数据库的来源

MySQL之父Widenius先生离开了Sun之后,觉得依靠Sun/Oracle来发展MySQL,实在很不靠谱,于是决定另开分支,这个分支的名字叫做MariaDB

MariaDB跟MySQL在绝大多数方面是兼容的,对于开发者来说,几乎感觉不到任何不同。目前MariaDB是发展最快的MySQL分支版本,新版本发布速度已经超过了Oracle官方的MySQL版本。
在Oracle控制下的MySQL开发,有两个主要问题:1. MySQL核心开发团队是封闭的,完全没有Oracle之外的成员参加。很多高手即使有心做贡献,也没办法做到。2. MySQL新版本的发布速度,在Oracle收购Sun之后大为减缓。Widenius有一个ppt,用数据比较了收购之前和之后新版本的发布速度。有很多bugfix和新的feature,都没有及时加入到发布版本之中。
4.RDBMS(数据库管理工具)
  • sql语句主要分为:
    • DQL:数据查询语言,用于对数据进行查询,如select
    • DML:数据库操作语言,对数据库进行增删改查,如:insert,update,delete
    • TPL:事物处理语言,对事物进行处理,包括begin,transaction,commit,rollback
    • DCL:数据控制语言,如grant,revoke                     #权限管理
    • DDL:数据定义语言:进行数据库,表的管理等,如create,drop                   #
    • CCL:指针控制语言,通过控制指针完成表的操作,如declare cursor
  • sql是一门特殊的语言,专门用来操作关系型数据库
  • 不区分大小写

5. 表:

特定类型数据的结构性列表

表是结构化的文件,用来存储特定类型的数据,表可能存储客户清单,产品目录,或者其他信息列表。
存储在表中的数据是一种类型的数据或一个列表,绝对不应该将顾客的列表信息和订单的列表信息存储到同一个数据库表中,
这样做会使随后的数据检索和访问变得困难,代替的解决方案是创建两个表,在每个表中存储其相应的列表信息。
数据库中每个表都有一个名字来标识它,
并且在一个数据库中表名是唯一的

 
二、mariadb的基础命令
1)安装包写入yum源:
[mariadb]
name = MariaDB
baseurl = http://mirrors.ustc.edu.cn/mariadb/yum/10.3/centos7-amd64/
gpgkey=http://mirrors.ustc.edu.cn/mariadb/yum/RPM-GPG-KEY-MariaDB
gpgcheck=

yum -y install mariadb-server 下载并安装10.3版本的服务端

2)重启并自启mariadb

systemctl restart mariadb  && systemctl enable mariadb

3)进行简单配置:

mysql_secure_installation

Enter current password for root (enter for none):<–初次运行直接回车

设置密码

Set root password? [Y/n] <– 是否设置root用户密码,输入y并回车或直接回车
New password: <– 设置root用户的密码
Re-enter new password: <– 再输入一次你设置的密码 其他配置 Remove anonymous users? [Y/n] <– 是否删除匿名用户,回车 Disallow root login remotely? [Y/n] <–是否禁止root远程登录,回车, Remove test database and access to it? [Y/n] <– 是否删除test数据库,回车 Reload privilege tables now? [Y/n] <– 是否重新加载权限表,回车 初始化MariaDB完成,接下来测试登录

4)mysql -uroot -ppassword             (root:用户名   password:密码)

成功则进入mariadb界面。

*如果忘记密码怎么办?

vim /etc/my.cnf.d/server.cnf
将skip-grant-tables 添加到【server】下或者其他模块下。保存退出
mysql -uroot -p 或 mysql -uroot
**库
create database 库名; #自定义库名
use 库名; #进入指定库
show create database mysql; #查看字符集
mysql | CREATE DATABASE `mysql` /*!40100 DEFAULT CHARACTER SET latin1 */ | alter database mysql default character set=utf8; #将字符类型从拉丁文改为utf-8
show create database mysql;       #再次执行查看发现字符类型已经更改
drop database 库名; #删除库
show databases; #默认和创建的数据库全部显示
**表
create table schools;        #创建shcool(表结构) 注意table不能加s,组成部分为(字段,数据类型,以及约束)
create table students (id int unsigned not null auto_increment primary key, name varchar(20), 
age tinyint unsigned default 0,high decimal(5,2),gender enum('man','women','secreate'));

MariaDB [mysql]> desc students;
+--------+--------------------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |        
+--------+--------------------------------+------+-----+---------+----------------+
| id | int(10) unsigned | NO | PRI | NULL | auto_increment |     
| name | varchar(20) | YES | | NULL | |
| age | tinyint(3) unsigned | YES | | 0 | |
| high | decimal(5,2) | YES | | NULL | |
| gender | enum('man','women','secreate') | YES | | NULL | |
+--------+--------------------------------+------+-----+---------+----------------+

desc school;             #查看表的结构(数据类型、结构等)

show create table 表名;   查看表的信息,和结构不同。注意后面没有 from 数据库 这一选项。

drop table  school;   删除表(如果是在自己创建的用户下,得要有drop得权限)

drop 字段名;          删除字段

show tables  from 库名;              #查看库下的所有表(不指定则显示当前库的表)

select * from 数据库.表名;         #查看表的所有字段(注意表的字段内容如果为空则不会显示创建的字段)   *可以根据自己需要查看不同字段

**用户

select user();             #查看当前用户,()不能少

create user mama@'localhost' identified by '123';  #创建用户mama并设置密码和只允许在这台主机上登陆

grant all on *.* to mama@'%' identified by '123';   #授予mama所有数据库下的所有表的所有权限,并且允许第三方登陆。/all指代所有权限,*.*前面的*代表所有数据库,后面的*代表所有表,'%'表示允许第三方登陆

例:

grant select,delete on mysql.user to mama@'localhost' identified by '123';        #授予mama用户在mysql数据库的user表上的删除和查看的权限,并且只能当前主机登陆。

show grants for mama;    #查看mama的权限

如果出现报错:

#The MariaDB server is running with the --skip-grant-tables option so it cannot execute this statement
MariaDB [zz]> show grants for mama;Ctrl-C -- exit!

#这是因为设置了免密登陆,注释skip-grant-tables并且重启则可以查看了。或者登陆root用户去查看mama的权限。

+--------------------------------------------------------------------------------------------------------------+
| Grants for mama@% |
+--------------------------------------------------------------------------------------------------------------+
| GRANT SELECT, DELETE ON *.* TO 'mama'@'%' IDENTIFIED BY PASSWORD '*E6CC90B878B948C35E92B003C792C46C58C4AF40' |

revoke select on *.* from mama;           #s收回mama用户的select权限

drop user 用户名;                         #删除用户名,或者

Delete FROM user Where User='test' and Host='localhost';

如果报错:Access denied for user 'mama'@'localhost' (using password: YES),则是因为在mama用户下无法查看和收回、授权给自己,只能通过root办到。

#如果需要重新设置密码?

vim /etc/my.cnf.d/server.cnf

将skip-grant-tables 添加到【mysql】模块下。保存退出,重启

免密进入mysql数据库,然后

mysql> use mysql;
mysql> update user set password=password("你的新密码") where user="root";   #密码和用户自己根据需求设置
mysql> flush privileges;
mysql> quit

****有时候会出现重置密码也无法登陆的情况,并且不用密码却可以登陆,这是因为数据库里存在空用户。这样解决:

select * from mysql.user where user='';
查询如果有,然后通过
use mysql;
delete from user where user = '';
删除了多余的空白账户, 然后,通过
flush privileges;­
重载一次权限表,最后用
service mysqld restart
重启mysql服务,问题得到解决,至此mark一下!
Tip:
、一定要记住重启mysql服务,否则不会生效,自己就是因为没有重启msyql导致一直得不到解决!
、msyql的用户表在mysql数据库中的user表中,主要字段有host,user,password等,作为mysql用的管理的主要表。

注意:表结构数据库结构的修改都用alter。

三、mariadb数据类型

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

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

  • 常用的数据类型
  1. 整数:int, bit
  2. 小数:decimal                                     #decimal(5,2),五位小数取两位
  3. 字符串:varchar, char  #varchar是动态
  4. 日期时间:date, time, datetime
  5. 枚举类型(enum)          #
  • 约束
  1. 主键primary key:物理上存储的顺序
  2. 非空not null:此字段不能为空
  3. 唯一unique:此字段不允许重复
  4. 默认default:当不填写此值时会使用默认值,如果填写则已填写为准
  5. 外键foreign key:对关系字段进行约束,当为关系字段填写值时,会到关联的表中查询此值是否存在,如果存在则填写成功,如果不存在则填写失败并抛出异常
 

mariadb(一)基础的更多相关文章

  1. MariaDB——数据库基础与sql语句

    数据库介绍 什么是数据库? 简单的说,数据库就是一个存放数据的仓库,这个仓库是按照一定的数据结构(数据结构是指数据的组织形式或数据之间的联系)来组织,存储的,我们可以通过数据库提供的多种方法来管理数据 ...

  2. Spring Boot 2 + MariaDB + HikariCP基础实例

    在已有SpringBoot工程中基于MariaDB驱动使用HikariCP 连接池 环境:SpringBoot2.0.2 .MariaDB驱动版本2.2.3.HikariCP2.7.8 1.在Spri ...

  3. mariadb数据库基础知识及备份

    数据库介绍 1.什么是数据库? 简单的说,数据库就是一个存放数据的仓库,这个仓库是按照一定的数据结构(数据结构是指数据的组织形式或数据之间的联系)来组织,存储的,我们可以通过数据库提供的多种方法来管理 ...

  4. mariadb数据库基础

    1.数据库介绍 简单的说,数据库就是一个存放数据的仓库,这个仓库是按照一定的数据结构(数据结构是指数据的组织形式或数据之间的联系)来组织,存储的,我们可以通过数据库提供的多种方法来管理数据库里的数据 ...

  5. Centos 7.2天兔(Lepus 3.8)数据库监控系统部署

    天兔(Lepus 3.8)数据库监控系统部署 转载自:https://blog.csdn.net/m0_38039437/article/details/79613260 一.安装LAMP基础环境 首 ...

  6. CentOS7.2下部署zabbix4.0

    整体部署采用centos7+php+apache+mariadb 基础环境配置优化 1. 关闭防火墙 [root@monitor_53 ~]$ systemctl stop firewalld [ro ...

  7. CentOS7通过YUM安装MySQL5.6

    检查系统中的 MySQL,并删除现有的 Mysql 软件包. $ rpm -qa | grep mysql 这里如果没有返回任何东西证明没有安装任何 MySQL 相关的应用.如下图: 由于 cento ...

  8. Mysql的基础使用之MariaDB安装

    初学mysql的小白,首次写博客,为了能让自己记得更加深刻,也是以一种小白的角度交代初学者的经历和困难,也算是记录自己成长的步伐吧 我首次用mysql是在ubuntu上 ,现在用的是linux 中的R ...

  9. MariaDB基础详解

    数据库结构模型分类 1.层次模型 2.网状模型 3.关系模型 关系模型的组成部分 二维关系 表 row column 索引 index 视图 view (只包含固定字段,不包含其他字段) 关系型数据库 ...

随机推荐

  1. RESUful风格

    1.7 RESTful风格 1.7.1 RESTful风格介绍 RESTful是一种软件架构风格! RESTful架构风格规定,数据的元操作,即CRUD(create, read, update和de ...

  2. Greg and Array CodeForces 296C 差分数组

    Greg and Array CodeForces 296C 差分数组 题意 是说有n个数,m种操作,这m种操作就是让一段区间内的数增加或则减少,然后有k种控制,这k种控制是说让m种操作中的一段区域内 ...

  3. python学习第四十四天斐波那契数列和yield关键词使用

    斐波那契数列是数学中的常见的算法,第一个第二个不算,从第三个开始,每个数的都是前面两个数的和,使用yield关键词把生成的数列保存起来,调用的时候再调用,下面举例说明一下 def fab(max): ...

  4. [TabControl] TabControl控件的最佳实践,可以把一个窗体和用户控件添加进来

    看下效果吧<ignore_js_op> 下面是一个公共的添加方法看代码 [C#] 纯文本查看 复制代码 ? 01 02 03 04 05 06 07 08 09 10 11 12 13 1 ...

  5. python基础面试题:(1)

    1.以下用C语言开发的Python解释器是( ) A:python是Java语言开发的Python解析器,B:PyPy是使用Python语言开发的Python解析,C:IronPython是.net平 ...

  6. SAAS多租户数据逻辑隔离

    基于Mybatis 的SAAS应用多租户数据逻辑隔离 package com.opencloud.common.interceptor;import org.apache.commons.lang3. ...

  7. [书接上一回]在Oracle Enterprise Linux (v5.7) 中安装DB - (2/4)

    在最后一行,书写shmfs /dev/shm tmpfs size=2g 0 用来调高数据库运行是的内存分配问题. 创建需要的路径和分配权限. 设置 oracle 用户环境参数. 修改标头显示的部分. ...

  8. python常用函数 Y

    yield有点像return,但他会在下一次执行的时候从上次结束点继续执行,带有 yield 的函数在 Python 中被称之为 generator(生成器),生成器无法通过索引获取数据,同时也承诺使 ...

  9. Angular 一个简单的指令实现 阻止事件扩散

    //指令定义 @Directive({ selector: `click-stop-propagation` events: 'stopClick($event)' }) class ClickSto ...

  10. hashlib模块subprocess模块

    '''通过一种算法,将字符串得出一种编码内容相同则hash运算结果相同,内容稍微改变则hash值改变不可逆推相同算法,无论校验多长的数据,得到的hash值长度固定'''# import hashlib ...