数据库简介

数据库--即电子文件柜,用户可以对文件中的数据进行增,删,改,查等操作。

数据库分类

  1. 关系型数据库

    关系型数据库管理系统(Relational Database Management System,RDBMS)
  2. 非关系型数据库

    noSQL(Not Only SQL )

关系型数据库与非关系型数据库的区别

关系型数据库

  1. 数据以二维表格的形式存储,可以通过外键关联,一致性强;
  2. 数据存储在磁盘中,每次读取数据都是一次I/O请求,数度慢,系统开销大,高并发的情况下很影响性能
  3. 使用方便,易于维护

非关系型数据库

  1. 数据以key-value形式存储,只适合存储以一些简单的数据;不适合持久存储海量数据;
  2. 数据存储在内存中,关联性弱,读取速度快;

常见关系型数据库管理系统

  • Oracle
  • Mysql
  • MariaDB
  • Microsoft SQL Server
  • db2
  • .......

常见非关系型数据库

  • Redis
  • MongoDB
  • Amazon
  • .......

MariaDB

MariaDB 数据库管理系统是Mysql的一个分支,是RDMS,主要由开源社区来维护;由于SUN被甲骨文公司收购,Mysql的所有权归oracle所有,不再开源。MySQL之父----Monty在2009年发起了MariaDB 开源项目。

MariaDB安装

MariaDB 10.3版本安装源

  1. [mariadb]
  2. name = MariaDB
  3. baseurl = http://mirrors.ustc.edu.cn/mariadb/yum/10.3/centos7-amd64/
  4. gpgkey=http://mirrors.ustc.edu.cn/mariadb/yum/RPM-GPG-KEY-MariaDB
  5. gpgcheck=1

MariaDB数据类型

常用数据类型

  • 整数型:int,bit
  • 小数型:decimal #decimal(5,2)
  • 字符串:varchar,char
  • 时间:date,time,datetime
  • 枚举类型:enum

约束

  • primary key:主键
  • not null:不为空
  • unique:字段不重复
  • default:默认
  • foreign key:外键,对关系字段进行约束,当关系字段填写值时,会到关联的表中查询此值是否存在,如果存在则填写成功,如果不存在则填写失败并抛出异常。

数值类型常用

类型 字节大小 有符号范围(signed) 无符号范围(unsigned)
tinyint 1 -128~127 0~255
smallint 2 -32768~32767 0~65535
mediumint 3 -8388608~8388607 0~16777215
int/integer 4 -2147483648~2147483647 0~4294967295
bigint 8 -9223372036854775808~
9223372036854775807
0~18446744073709551615

字符串

类型 字节大小 示例
char 0~255 不能伸缩(定多少我就取多少)
varchar 0~255 可以伸缩(要浪费一个字节指定字符长度)
text 0~65535 大文本

日期时间类型

类型 字节大小 示例
date 4 '2019-01-01'
time 3 '12:30:30'
datetime 8 '2019-01-01 12:30:30'
timestamp 4 '1970-01-01 00:00:01'UTC~'2038-01-01 00:00:01'UTC

SQL语句(命令)

数据库管理

  • 忘记数据库的root密码怎么办?
  1. vim /etc/my.conf.d/server.conf
  2. [server]
  3. skip-grant-tables #添加
  4. #重启数据库
  5. #无密码登陆数据库
  • 创建或修改密码初始化数据库
  1. ╭─root@localhost.localdomain ~
  2. ╰─➤ mysql_secure_installation
  • 进入RDBMS
  1. ╭─root@localhost.localdomain ~
  2. ╰─➤ mysql -uroot -p123456 #SQLuser和passward
  • 退出RDBMS
  1. MariaDB [mysql]> quit
  2. Bye
  3. ╭─root@localhost.localdomain ~
  4. ╰─➤
  • 查看所有数据库
  1. MariaDB [(none)]> show databases;
  2. +--------------------+
  3. | Database |
  4. +--------------------+
  5. | information_schema |
  6. | mysql |
  7. | performance_schema |
  8. +--------------------+
  • 创建数据库
  1. MariaDB [(none)]> create database test1;
  2. Query OK, 1 row affected (0.001 sec)
  3. #指定字符编码
  4. MariaDB [(none)]> create database test2 character set utf8;
  5. Query OK, 1 row affected (0.003 sec)
  • 设置与更改用户密码
  1. SET PASSWORD FOR 'username'@'host' = PASSWORD('newpassword')
  2. #如果是当前登陆用户
  3. SET PASSWORD = PASSWORD("newpassword");
  • 查看创建数据库的状态
  1. MariaDB [test1]> show create database test1;
  2. +----------+------------------------------------------------------------------+
  3. | Database | Create Database |
  4. +----------+------------------------------------------------------------------+
  5. | test1 | CREATE DATABASE `test1` /*!40100 DEFAULT CHARACTER SET latin1 */ |
  6. +----------+------------------------------------------------------------------+
  • 修改指定数据库的字符编码
  1. MariaDB [test1]> alter database test1 default character set=utf8;
  2. Query OK, 1 row affected (0.002 sec)
  • 使用数据库
  1. MariaDB [(none)]> use test1;
  2. Database changed
  3. MariaDB [test1]>
  • 删除数据库
  1. MariaDB [test1]> drop database test2;
  2. Query OK, 0 rows affected (0.005 sec)

用户管理

  • 查看当前用户
  1. MariaDB [test1]> select user();
  2. +----------------+
  3. | user() |
  4. +----------------+
  5. | root@localhost |
  6. +----------------+
  7. 1 row in set (0.002 sec)
  • 查看用户信息

用户信息储存在mysql数据库的user表

  1. MariaDB [mysql]> select Host,User,Password from user;
  2. +-----------+------+-------------------------------------------+
  3. | Host | User | Password |
  4. +-----------+------+-------------------------------------------+
  5. | localhost | root | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
  6. | 127.0.0.1 | root | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
  7. | ::1 | root | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
  8. +-----------+------+-------------------------------------------+
  • 在localhost主机上所有库所有表上给user250用户所有权限,认证密码'123456'
  1. MariaDB [mysql]>-- grant 权限 on 库名.表 to 用户@主机 identified by '密码';
  2. MariaDB [mysql]> grant all privileges on *.* to user250@localhost identified by '123456';
  3. Query OK, 0 rows affected (0.003 sec)
  • 给root用户在所有主机上的所有权限(用于第三方登录数据库)(端口号:3306)
  1. MariaDB [(none)]> grant all privileges on *.* to root@'%' identified by '123456';
  2. Query OK, 0 rows affected (0.001 sec)
  3. MariaDB [(none)]> use mysql;
  4. Reading table information for completion of table and column names
  5. You can turn off this feature to get a quicker startup with -A
  6. Database changed
  7. MariaDB [mysql]> select host,user,password from user;
  8. +-----------+---------+-------------------------------------------+
  9. | host | user | password |
  10. +-----------+---------+-------------------------------------------+
  11. | localhost | root | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
  12. | 127.0.0.1 | root | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
  13. | ::1 | root | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
  14. | % | root | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
  15. | localhost | user250 | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
  16. +-----------+---------+-------------------------------------------+
  • 给user250用户添加 查询 的权限
  1. MariaDB [mysql]> grant select on *.* to user250@localhost ;
  2. Query OK, 0 rows affected (0.000 sec)

select:查询权限

create:创建权限

update:更新权限

delete:删除权限

  • 查看user250的权限
  1. MariaDB [(none)]>-- show grants for 用户@主机;
  2. MariaDB [(none)]> show grants for user250@localhost;
  • 收回user250用户的所有权限
  1. MariaDB [(none)]> revoke all on *.* from user250@localhost;
  2. Query OK, 0 rows affected (0.001 sec)

表结构操作

  • 显示当前时间
  1. MariaDB [(none)]> select now();
  2. +---------------------+
  3. | now() |
  4. +---------------------+
  5. | 2019-07-03 07:00:39 |
  6. +---------------------+
  • 创建葫芦娃表
  1. MariaDB [test1]> create table huluwa (
  2. -> id int unsigned auto_increment primary key,
  3. -> name varchar(10),
  4. -> age tinyint unsigned,
  5. -> high decimal(5,2),
  6. -> gender enum('boy','girl','unknow')default 'unknow'
  7. -> );
  8. Query OK, 0 rows affected (0.206 sec)
  • 查看所有表
  1. MariaDB [test1]> show tables;
  2. +-----------------+
  3. | Tables_in_test1 |
  4. +-----------------+
  5. | huluwa |
  6. +-----------------+
  • 查看表结构
  1. MariaDB [test1]> desc huluwa;
  2. +--------+-----------------------------+------+-----+---------+----------------+
  3. | Field | Type | Null | Key | Default | Extra |
  4. +--------+-----------------------------+------+-----+---------+----------------+
  5. | id | int(10) unsigned | NO | PRI | NULL | auto_increment |
  6. | name | varchar(10) | YES | | NULL | |
  7. | age | tinyint(3) unsigned | YES | | NULL | |
  8. | high | decimal(5,2) | YES | | NULL | |
  9. | gender | enum('boy','girl','unknow') | YES | | unknow | |
  10. +--------+-----------------------------+------+-----+---------+----------------+
  • 给表添加字段
  1. MariaDB [test1]>-- alter table 表名 add 列名 类型;
  2. MariaDB [test1]> alter table huluwa add color varchar(10);
  3. Query OK, 0 rows affected (0.406 sec)
  4. Records: 0 Duplicates: 0 Warnings: 0
  • 修改表字段;不重命名(modify)
  1. MariaDB [test1]>-- alter table 表名 modify 列名 类型及约束;
  2. MariaDB [test1]> alter table huluwa modify name varchar(20);
  3. Query OK, 0 rows affected (0.005 sec)
  4. Records: 0 Duplicates: 0 Warnings: 0
  • 修改表字段;重命名
  1. MariaDB [test1]>-- alter table 表名 change 原名 新名 类型及约束;
  2. MariaDB [test1]> alter table huluwa change age bir_day date;
  3. Query OK, 0 rows affected (0.426 sec)
  4. Records: 0 Duplicates: 0 Warnings: 0
  • 删除字段
  1. MariaDB [test1]>-- alter table 表名 drop 列名;
  2. MariaDB [test1]> alter table huluwa drop color;
  3. Query OK, 0 rows affected (0.018 sec)
  4. Records: 0 Duplicates: 0 Warnings: 0
  • 删除表
  1. MariaDB [test1]>-- drop table 表名;
  2. MariaDB [test1]> drop table huluwa;
  3. Query OK, 0 rows affected (0.010 sec)

表数据 增,删,改

注意:bit 型数据有值只是终端显示不明显

  • 创建表
  1. MariaDB [test]> create table huluwa (
  2. -> id int unsigned auto_increment primary key,
  3. -> name varchar(10),
  4. -> age tinyint unsigned,
  5. -> high decimal(5,2),
  6. -> gender enum('boy','girl','unknow')default 'unknow',
  7. -> lost bit(1));
  • 表结构
  1. MariaDB [test1]> desc huluwa;
  2. +--------+-----------------------------+------+-----+---------+----------------+
  3. | Field | Type | Null | Key | Default | Extra |
  4. +--------+-----------------------------+------+-----+---------+----------------+
  5. | id | int(10) unsigned | NO | PRI | NULL | auto_increment |
  6. | name | varchar(10) | YES | | NULL | |
  7. | age | tinyint(3) unsigned | YES | | NULL | |
  8. | high | decimal(5,2) | YES | | NULL | |
  9. | gender | enum('boy','girl','unknow') | YES | | unknow | |
  10. | lost | bit(1) | YES | | NULL | |
  11. +--------+-----------------------------+------+-----+---------+----------------+
  • 查询表创建状态
  1. MariaDB [test1]> show create table huluwa;
  • 增加:全列插入(大娃出生了)
  1. MariaDB [test1]>-- insert into 表名 values (...);
  2. MariaDB [test1]> insert into huluwa values (0,'大娃',1,1.324,'boy',0);
  3. Query OK, 1 row affected, 1 warning (0.003 sec)
  4. MariaDB [test1]> select * from huluwa;
  5. +----+--------+------+------+--------+------+
  6. | id | name | age | high | gender | lost |
  7. +----+--------+------+------+--------+------+
  8. | 1 | 大娃 | 1 | 1.32 | boy | |
  9. +----+--------+------+------+--------+------+
  • 修改:(大娃丢了,lost列变为1)
  1. MariaDB [test1]>-- update 表名 set 列=值... where 过滤条件;
  2. MariaDB [test1]> update huluwa set lost=1 where name='大娃';
  3. Query OK, 1 row affected (0.003 sec)
  4. Rows matched: 1 Changed: 1 Warnings: 0
  5. MariaDB [test1]> select * from huluwa;
  6. +----+--------+------+------+--------+------+
  7. | id | name | age | high | gender | lost |
  8. +----+--------+------+------+--------+------+
  9. | 1 | 大娃 | 1 | 1.32 | boy | |
  10. +----+--------+------+------+--------+------+
  • 数字类型数据可以使用运算符
  • in(' ',' ',' ')语法的使用
  1. update huluwa set age=age+1 where name in('大娃','二娃');
  • 增加:部分插入(二娃出生了)
  1. MariaDB [test1]>-- insert into 表名(字段) valuse(...);
  2. MariaDB [test1]> insert into huluwa(id, name,lost) values(0,'二娃',0);
  3. Query OK, 1 row affected (0.003 sec)
  4. MariaDB [test1]> select * from huluwa;
  5. +----+--------+------+------+--------+------+
  6. | id | name | age | high | gender | lost |
  7. +----+--------+------+------+--------+------+
  8. | 1 | 大娃 | 1 | 1.32 | boy | |
  9. | 2 | 二娃 | NULL | NULL | unknow | |
  10. +----+--------+------+------+--------+------+
  • 增加:插入多条(三娃和四娃一起出生了)
  1. MariaDB [test1]>-- insert into 表名 valuse (...),(...),...;
  2. MariaDB [test1]> insert into huluwa(id, name,lost) values(0,'三娃',0),(0,'四娃',0);
  3. Query OK, 2 rows affected (0.003 sec)
  4. Records: 2 Duplicates: 0 Warnings: 0
  5. MariaDB [test1]> select * from huluwa;
  6. +----+--------+------+------+--------+------+
  7. | id | name | age | high | gender | lost |
  8. +----+--------+------+------+--------+------+
  9. | 1 | 大娃 | 1 | 1.32 | boy | |
  10. | 2 | 二娃 | NULL | NULL | unknow | |
  11. | 3 | 三娃 | NULL | NULL | unknow | |
  12. | 4 | 四娃 | NULL | NULL | unknow | |
  13. +----+--------+------+------+--------+------+
  • 删除(delete / truncate)(删除丢了的葫芦娃)
  1. MariaDB [test1]>-- delete from 表名 where 条件;
  2. MariaDB [test1]> delete from huluwa where lost=1;
  3. MariaDB [test1]> select * from huluwa;
  4. +----+--------+------+------+--------+------+
  5. | id | name | age | high | gender | lost |
  6. +----+--------+------+------+--------+------+
  7. | 2 | 二娃 | NULL | NULL | unknow | |
  8. | 3 | 三娃 | NULL | NULL | unknow | |
  9. | 4 | 四娃 | NULL | NULL | unknow | |
  10. +----+--------+------+------+--------+------+
  1. MariaDB [test1]> truncate table huluwa;
  2. Query OK, 0 rows affected (0.040 sec)
  3. MariaDB [test1]> show tables;
  4. +-----------------+
  5. | Tables_in_test1 |
  6. +-----------------+
  7. | huluwa |
  8. +-----------------+
  9. 1 row in set (0.000 sec)
  10. MariaDB [test1]> select * from huluwa;
  11. Empty set (0.000 sec)

MariaDB数据库 ----数据库简介,用户管理,数据库创建,数据类型、数据增删改(实例演示)的更多相关文章

  1. 【HICP Gauss】数据库 数据库管理(文件 用户管理 系统权限 对象权限 profile)-7

    数据库运行 依赖不同类型的文件 ,数据文件 参数文件 控制文件 redo日志文件 运行日志文件 审计日志文件等 数据文件 就是表空间文件 存储数据库的数据文件 参数文件 用户修改的配置信息 控制文件 ...

  2. MongoDB 表(集合) 创建删除、数据增删改查

    MongoDB 表(集合) 创建删除和增删改查数据 创建一个集合(emp) 在创建集合之前先使用use xxx,选择数据库,如果没有会创建(并不是真正的创建,只有在数据库里面保存集合数据之后才能够真正 ...

  3. ORACLE用户管理方式下备份数据和复制数据库

    首先要明确的是,oracle数据库的备份可以分为逻辑备份和物理备份.           逻辑备份的是通过数据导出对数据进行备份,主要方式有老式的IMP/EXP和数据泵灯方式.适合变化较少的数据库,而 ...

  4. (转)Android学习笔记---SQLite介绍,以及使用Sqlite,进行数据库的创建,完成数据添删改查的理解

    原文:http://blog.csdn.net/lidew521/article/details/8655229 1.SQLite介绍:最大特点是,无数据类型;除了可以使用文件或SharedPrefe ...

  5. 啊啊啊啊啊啊啊今天就写,炒鸡简单 数据库Sqlite的创建,库的增删改查

    啦啦啦啦啦啦啦 写这个不用多长时间,我直接写代码注释都是些语句,Sql语句和Api来操作数据库 ,语句的参数我会注释 SQLite数据库创建数据库需要使用的api:SQLiteOpenHelper必须 ...

  6. VS连接Access数据库--连接字符串及执行查询语句的方法(增删改查,用户名查重,根据用户获取密码查询)

    ACCESS数据的连接及语句执行操作,不难,久不用会生疏,每次都要找资料,干脆自己整理下,记录下来,需要的时候,直接查看,提高效率.也供初学者参考 1.连接字符串 public static stri ...

  7. sybase用户管理(创建、授权、删除)

    一.登录用户管理:1.创建用户:sp_addlogin loginame, passwd [, defdb] [, deflanguage] [, fullname] [, passwdexp] [, ...

  8. MVC设计模式((javaWEB)在数据库连接池下,实现对数据库中的数据增删改查操作)

    设计功能的实现: ----没有业务层,直接由Servlet调用DAO,所以也没有事务操作,所以从DAO中直接获取connection对象 ----采用MVC设计模式 ----采用到的技术 .MVC设计 ...

  9. C#在winform中操作数据库,实现数据增删改查

    1.前言: 运行环境:VS2013+SQL2008+Windows10 程序界面预览: 使用的主要控件:dataGridview和menuStrip等. 2.功能具体介绍: 1.首先,我们要先实现基本 ...

随机推荐

  1. 谈谈 Vue 模板和 JSX

    工具链 从学习曲线角度来讲,结合我个人体会,React 学习路线是比 Vue 陡峭的,这个和 JSX.Template 有关吗?当然有.在 React 中使用 JSX,众所周知, JSX 需要经过 T ...

  2. 【linux】系统编程-5-线程

    目录 前言 7. 线程 7.1 概念 7.2 创建线程 7.2.1 pthread_create() 7.3 设置线程属性 7.3.1 pthread_attr_init() 7.3.2 销毁一个线程 ...

  3. Spring Boot 计划任务中的一个“坑”

    计划任务功能在应用程序及其常见,使用Spring Boot的@Scheduled 注解可以很方便的定义一个计划任务.然而在实际开发过程当中还应该注意它的计划任务默认是放在容量为1个线程的线程池中执行, ...

  4. Vue css过渡 和 js 钩子过渡

    css过渡 <transition name="slide"> <div v-show="!showChatInput" class=&quo ...

  5. MVC和MVVM的差别

    MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑.数据.界面显示分离的方法组织代码 ...

  6. SpringBoot整合Shiro完成验证码校验

    SpringBoot整合Shiro完成验证码校验 上一篇:SpringBoot整合Shiro使用Redis作为缓存 首先编写生成验证码的工具类 package club.qy.datao.utils; ...

  7. (十五)xml模块

    xml是实现不同语言或程序之间进行数据交换的协议,跟json差不多,但json使用起来更简单,不过在json还没诞生的黑暗年代,大家只能选择用xml呀,至今很多传统公司如金融行业的很多系统的接口还主要 ...

  8. 【Java】面向对象 - 封装

    继承 封装 多态 重新搞一波 复习巩固 简单记录 慕课网 imooc Java 零基础入门-Java面向对象-Java封装 封装 封装是什么? 将类的某些信息隐藏在类内部,不允许外部程序直接访问 通过 ...

  9. 【EXPDP】指定导出,只导出函数,导出的时候加上where条件过滤

    expdp导出的时候可以使用parfile这个参数,在parfile中添加想要的导出信息: 这里简单写了几句: vim test.par include=function     --导出函数 inc ...

  10. LeetCode590. N叉树的后序遍历

    题目 1 class Solution { 2 public: 3 vector<int>ans; 4 vector<int> postorder(Node* root) { ...