概念
Relational Database Management System:RDBMS—关系数据库管理系统
NoSQL: Not Only SQL -----非关系型数据库
- DBMS(关系型数据库):常见的关系型数据库有 Oracle、DB2、Microsoft SQL Server、Microsoft Access、MySQL;
- NoSQL(非关系型数据库):常见的非关系型数据库有 MongoDB、Redis、Voldemort、Cassandra、Riak、Couchbase、CouchDB 等。
Redis 全称 Remote Dictionary Server(即远程字典服务),它是一个基于内存实现的键值型非关系(NoSQL)数据库。
MongoDB 是一个开源的、可扩展的、跨平台的、面向文档的非关系型数据库。
Sql
[root@docker01 ~]# mysql -uroot -p密码 -e “show databases;” #不登录数据库中查看
[root@docker01 ~]# yum install mariadb-server 安装
[root@docker01 ~]# yum remove mariadb-server 卸载
[root@docker01 ~]# rpm -qif `which mysql` #返回软件包的有关信息
[root@docker01 ~]# rpm -qf `which mysql` #返回软件包的全名
[root@docker01 ~]# rpm -qlf `which mysql` #返回软件安装的文件列表
[root@hadoop101 network-scripts]# rpm -qf `which mysql`
mariadb-5.5.68-1.el7.x86_64
[root@docker01 ~]# systemctl start mariadb
[root@docker01 ~]# systemctl status mariadb
[root@docker01 ~]# systemctl enable mariadb # 设置为开机自启动服务
[root@docker01 ~]# systemctl is-enabled mariadb ##是否开机自启
首次安装需要进行数据库的配置:
[root@docker01 ~]# mysql_secure_installation
Enter current password for root (enter for none): # 输入数据库超级管理员root的密码(注意不是系统root的密码),第一次进入还没有设置密码则<strong>直接回车</strong>
Set root password? [Y/n] # 设置密码,y
New password: # 新密码
Re-enter new password: # 再次输入密码
Remove anonymous users? [Y/n] # 移除匿名用户, y
Disallow root login remotely? [Y/n] # 拒绝root远程登录,n,不管y/n,都会拒绝root远程登录
Remove test database and access to it? [Y/n] # 删除test数据库,y:删除。n:不删除,数据库中会有一个test数据库,一般不需要
Reload privilege tables now? [Y/n] # 重新加载权限表,y。或者重启服务也许
###登录数据库
[root@docker01 ~]# mysql -uroot -p123456
[root@docker01 ~]# mysql -uroot -pmysql -e "show databases;"#不登录数据库中查看
###常见操作
MariaDB [(none)]> show databases; ##查看有哪些库
MariaDB [(none)]> use mysql; #进入mysql这个库;
MariaDB [mysql]> show tables; #显示mysql这个库中有哪些表
MariaDB [mysql]> describe user; #显示user这个表的表结构组成
MariaDB [mysql]> select host,user,password from user; #显示user表中的host,user,password字段
MariaDB [mysql]> select host,user,password from mysql.user; ##方式二, #显示mysql库中user表的host,user,password字段
刷新权限表:
MariaDB [mysql]> flush privileges;或者[root@docker01 ~]# systemctl restart mariadb
MariaDB [(none)]> show processlist; #查看连接到我们数据库的信息
MariaDB [mysql]> describe proc; ##显示proc表
MariaDB [mysql]> describe proc\G ###显示proc表 和上述结果不一样
*************************** 1. row ***************************
Field: db
Type: char(64)
Null: NO
Key: PRI
Default:
Extra:
*************************** 2. row ***************************
Field: name
Type: char(64)
Null: NO
Key: PRI
Default:
Extra:
MariaDB [(none)]> create user mysql1@'192.168.23.%' identified by '123'; #创建个mysql1用户,允许在192.168.23网段的机器上可以登录,密码是123
MariaDB [(none)]> drop user mysql1@'192.168.23.%' ; # 删除用户
MariaDB [(none)]> show grants for mysql@'192.168.23.%'; #查看用户权限
MariaDB [(none)]> grant insert,create on mysql.* to mysql1@'192.168.23.%' identified by '123'; 给用户添加权限
库操作:
MariaDB [(none)]> show databases; ##查看有哪些库
MariaDB [(none)]> use mysql; #进入mysql这个库;
MariaDB [(none)]> create database csren; #创建一个库
MariaDB [(none)]> help create database #查看create database 这个命令怎么用
MariaDB [(none)]> show create database csren; #看下创建过程
##表操作
MariaDB [(none)]> use csren; #切换库,要在哪个库下创建表,就切换到哪个库
MariaDB [csren]> create table t1(id int,name varchar(20)); #创建一个叫t1的表,定义两个列项和数据类型
MariaDB [csren]> show tables; #查看csren这个库有哪些表
MariaDB [csren]> describe t1; #查看t1表结构.或者desc t1
MariaDB [csren]> drop table t1; #删除t1整个表
MariaDB [csren]> alter table t1 add age int; #给现有的t1表再增加一列数据
MariaDB [csren]> alter table t1 add level int,add score int; #添加两列内容
MariaDB [csren]> alter table t1 add sex varchar(20) after id; #在id列后添加一列sex
MariaDB [csren]> alter table t1 add sid int first; #在第一列添加sid
MariaDB [csren]> alter table t1 drop level; #删除level列
MariaDB [csren]> alter table t1 modify score varchar(20); #修改score的数据类型
MariaDB [csren]> alter table t1 change score score_1 varchar(20); #修改t1表的score列名为score_1
###DML主要针对数据库表中的行进行操作:insert \delete \update
MariaDB [csren]> insert into t3 values(1,'M','ren',18,72); #因为数据结构是5个,所以插入数据的时候也要写五个
MariaDB [csren]> select * from t3;
MariaDB [csren]> insert into t3 values(2,'M','ren',18,72),(3,'W','LI',34,23); #插入多行
MariaDB [csren]> select * from t3;
MariaDB [csren]> insert into t3(id) values(4); #只对某列数据进行插入
更新表中的某个值:
MariaDB [csren]> update t3 set name='cheng' where id=2; #将id=2那一行中的name设置成cheng
MariaDB [csren]> delete from t3 where id=4; #删除某一行
--select条件查询配合where
MariaDB [csren]> select * from t3 where name='ren'; #从t3表中查询name=ren的一行数据
MariaDB [csren]> select * from t3 where id=2; #查找ID=2的数据;条件为字符串的时候需要用引号引起来,mysql不区分大小写
MariaDB [csren]> select * from t3 where id=2 and name='cheng'; #与条件查询,两个条件都满足才能打印
MariaDB [csren]> select * from t3 where id=2 or name='ren'; #满足一个条件的都会打印,意思是满足条件id=2的打印出来,name=ren的也打印出来
MariaDB [csren]> select * from t3 where id between 1 and 3; #查询ID从1-3的值
MariaDB [csren]> select * from t3 where name in ('ren','cheng'); #查询name字段是ren或者cheng
MariaDB [csren]> select * from t3 where name like 're%'; #查找name中是re*的字段的值
MariaDB [csren]> select * from t3 where name like '%e%';
MariaDB [csren]> select * from t3 where name like '%e%' order by id desc; #在t3表中,查找name中包含e的字段,且按id降序排列输出;asc升序排列
MariaDB [csren]> select * from t3 where name like '%e%' order by id desc limit 3; #limit 3代表只显示前3行
MongoDB
mongodb 的collection就是关系型数据库种的table;
> show dbs ##查看非空数据库;如果存在为空的数据库,显示不出来;只有有数据才能显示出来
> use database_name #创建数据库,如果该数据库不存在,则会创建一个新的数据库,如果该数据库已经存在,则将切换到该数据库
> db #查看当前选择的数据库
> db.website.insert({title:"编程帮",url:"www.biancheng.net"}) ##数据库创建数据
> use biancheng #先进入库,再删除
> db.dropDatabase() # 先进入要删除的库,再删除
########MongoDB 中的集合是一组文档的组合,类似于关系型数据库(例如 MySQL)中的数据表
> db.createCollection("user") ##创建一个名为“user”的集合
> show collections #show collections命令或者show tables命令来查看数据库中的集合
> db.collection_name.drop() #例如db.mycol.drop() 删除mycol集合
>