一、数据库介绍

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. 词频统计小程序-WordCount.exe

    一. 背景 ​ 最近顶哥为了完成学历提升学业中的小作业,做了一个词频统计的.exe小程序.因为当时做的时候网上的比较少,因此顶哥决定把自己拙略的作品发出来给需要的人提供一种思路,希望各位看官不要dis ...

  2. Java数据结构之链表(Linked List)

    1.链表(Linked List)介绍 链表是有序的列表,但是它在内存存储结构如下: 2.特点: 链表是以节点的方式来存储,是链式存储 每个节点包含 data 域, next 域:指向下一个节点. 链 ...

  3. 基于TMS320C6678、FPGA XC5VLX110T的6U CPCI 8路光纤信号处理卡

    基于TMS320C6678.FPGA XC5VLX110T的6U CPCI 8路光纤信号处理卡 1.板卡概述 本板卡由我公司自主研发,基于CPCI架构,符合CPCI2.0标准,采用两片TI DSP T ...

  4. 完整项目:网上图书商城(一、MySQL数据库设计)未完

    一.建立数据库 CREATE DATABASE IF NOT EXISTS bookshop CHARACTER utf8; 二.建立数据库表 1.建立用户表 #用户表(用户id号,用户名,用户密码, ...

  5. Ansible笔记(7)---常用模块之系统类模块(cron、service)

    一.cron模块 1.1作用: cron 模块可以帮助我们管理远程主机中的计划任务,功能相当于 crontab 命令. 在了解cron模块的参数之前,先写出一些计划任务的示例: # 示例1,每天的1点 ...

  6. [CF] 8C Looking for Order

    状压模板题 CF难度2000? 我得好好了解一下CF的难度机制了 反正CF的难度比洛谷真实就好了 Code #include<algorithm> #include<iostream ...

  7. UML快速理解

    在团队协作过程中最常见的就是开会.开会最常用的就是图,而图中最常见的就是流程图.时序图.类图,这三个图可以清楚的描述你想解释的内容.学好类图不仅仅能帮助自己更清楚的梳理业务,还能提高开会效率. 上图是 ...

  8. Spring Boot Shiro

    Shiro 核心 API Subject:用户主体(每次请求都会创建Subject). principal:代表身份.可以是用户名.邮件.手机号码等等,用来标识一个登录主体的身份. credentia ...

  9. XML 语法

    XML 语法规则 本节的目的是想让你了解 XML 中的语法所依据的规则,避免在编写 XML 文档的时候遇到错误. XML 的语法规则很简单,且很有逻辑.这些规则很容易学习,也很容易使用. 所有的 XM ...

  10. git 常用命令记录

    删除远程分支 git push origin --delete 远程分支名 删除本地分支 git branch -d 本地分支名 从master新建分支 git checkout -b 新分支名 建立 ...