关系型数据库
采用关系模型,也就是二维表格模型,以行和列的形式存储数据,多行多列组成一张数据表,可以通过完整型约束条件对写入的数据进行规范,通过sql语句(结构化查询语句)对数据库及数据表进行增删改查的操作(类似于excel表)
非关系型数据库
采用键值对形式,不保证数据的 ACID(数据的四大特性 原子性 一致性 隔离性 持久性)特性。数据是以键值对的形式进行存储的,查询效率高 读写性能也很高
1--haha
关系型数据库 mysql mariadb oracle(海量数据)甲骨文
非关系型数据库 mongdb (海量数据) redis
数据库内部结构
结构化查询语句 sql
数据定义语言 DDL 常用命令 create drop alter
数据操作语言 DML 常用的命令 insert delete update
数据查询语言 DQL 常用命令 select
数据控制语言 DCL 常用命令 grant revoke
server 192.168.2.10
[root@localhost ~]# yum -y install mariadb*
mariadb-server
mariadb-client
主配置文件
[root@localhost ~]# vim /etc/my.cnf
datadir=/var/lib/mysql
[root@localhost ~]# netstat -anput | grep mysqld
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 31277/mysqld
数据库设置密码
1.命令设置
[root@localhost ~]# mysqladmin -u root password
New password:
Confirm new password:
2.进入数据库当中设置密码
[root@localhost ~]# mysql -uroot -p
Enter password:
MariaDB [(none)]> set password=password('123.com');
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> SET PASSWORD=PASSWORD('123.com');
Query OK, 0 rows affected (0.00 sec)
数据库中的常用操作
数据库的创建
create database 数据库名;
MariaDB [(none)]> create database one;
Query OK, 1 row affected (0.01 sec)
MariaDB [(none)]> show databases;
数据库切换
use 库名
MariaDB [(none)]> use one;
Database changed
数据库的删除
MariaDB [one]> use test;
Database changed
MariaDB [test]> drop database one;
Query OK, 0 rows affected (0.37 sec)
MariaDB [test]> show databases;
查看当前的用户访问信息
MariaDB [test]> show processlist;
小练习 创建数据库 user和log 查看所有的已创建的数据库 切换到数据库user中 并查看当前的数据库是否是user 删除数据库log 并查看验证
数据表的操作
先进入到数据库当中 创建表的结构 也就是每个行中存放的数据类型
create table 表名 (
字段一 数据类型 [完整约束条件],
字段二 数据类型 [完整约束条件],
字段三 数据类型 [完整约束条件],
);
列子:创建关于学生的信息表
字段 数据类型 数据类型char(字符串)(15)限制15个字 int(数字)
姓名 字符串
性别 字符串
联系方式 数值
MariaDB [user]> create table student_info (
-> name char(15),
-> sex char(1),
-> phone_num int
-> );
#查看数据库中的表
MariaDB [user]> show tables;
#查看当前的表结构 查看表有几个列
MariaDB [user]> desc student_info;
+-----------+----------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------+----------+------+-----+---------+-------+
| name | char(15) | YES | | NULL | |
| sex | char(1) | YES | | NULL | |
| phone_num | int(11) | YES | | NULL | |
+-----------+----------+------+-----+---------+-------+
#删除表
drop table 表名;
MariaDB [user]> drop table student_info;
Query OK, 0 rows affected (0.01 sec)
练习 创建班级信息表
表名 class_info
字段
班级编号 class_id 数值 int
学生的数量 stu_num 数值 int
教师姓名 t_name 字符串(10)
MariaDB [user]> create table class_info (
-> class_id int,
-> stu_num int,
-> t_name char(10)
-> );
Query OK, 0 rows affected (0.00 sec)
MariaDB [user]> show tables;
+----------------+
| Tables_in_user |
+----------------+
| class_info |
+----------------+
作业:
1.搭建httpd+https
2.创建一个aa库 在aa库中创建学习进度表1
创建学习进度表
表名 study_info
学生姓名 name 字符串 (20)
已经学习过的 learnd 字符串 (30)
正在学习的 learning 字符串 (30)
未学习的 not_learn 字符串 (30)
分数 grade 数值 int
MariaDB [user]> use user
修改表结构
alter table 表名 drop 字段名 ; 删除
alter table 表名 add 字段名 ; 添加
alter table 表名 modify 字段名; 修改字段的类型
alter table 表名 change 旧字段名 新字段名; 修改字段名
MariaDB [user]> alter table class_info drop stu_num; #删除字段
MariaDB [user]> alter table class_info add aa int; #添加字段
MariaDB [user]> alter table class_info modify aa char(10); #修改字段类型
MariaDB [user]> alter table class_info change aa bb char(10);
MariaDB [user]> create table student (
-> id int,
-> name char(10),
-> age int,
-> sex char(1),
-> phone_num int
-> );
Query OK, 0 rows affected (0.01 sec)
如何往表中插入数据
insert into 表名 values (值1,值2。。。。)
MariaDB [user]> insert into student values (1,"one",18,"m",123456);
MariaDB [user]> insert into student values (2,"two",17,"w",123456);
MariaDB [user]> insert into student values (3,"three",17,"w",123456),(4,"four",20,'m',222222);
查看表中所有数据
select * from 表名;
MariaDB [user]> select * from student;
+------+-------+------+------+-----------+
| id | name | age | sex | phone_num |
+------+-------+------+------+-----------+
| 1 | one | 18 | m | 123456 |
| 2 | two | 17 | w | 123456 |
| 3 | three | 17 | w | 123456 |
| 4 | four | 20 | m | 222222 |
+------+-------+------+------+-----------+
给指定字段中插入数据
insert into 表名(字段) values(数据)
insert into 表名(字段1,字段2) values(数据1,数据2)
MariaDB [user]> insert into student(name) values("five");
查看数据表中指定字段的数据
select 字段1,字段2 from 表名
MariaDB [user]> select name from student;
MariaDB [user]> select id,name from student;
where 判断条件 查看满足条件的指定数据 = != > <
select */字段1 ,字段2 from 表名 where 条件
查看男孩的学生信息
MariaDB [user]> select * from student where sex="m";
MariaDB [user]> select name,age from student where age>19;
修改数据表中的数据
update 表名 set 字段名=新值 [where 条件语句]
MariaDB [user]> update student set phone_num=666666 where name="three";
删除数据表中的数据
delete from 表名 [where 条件语句]
MariaDB [user]> delete from student where name="three";
删除所有的数据;
delete from 表名;
库 增删查
create database
drop database
show databases
use
表 增删改查
create table 。。。
drop table
show tables
desc
alter table 。。。。
数据
insert into
delete
select
update
数据库的备份:
常用的备份方式:
全量备份:对数据表中的所有数据进行备份 一般一周一次
增量备份:从最近一次备份的数据开始备份 一般一天一次
备份的方法:
物理备份:直接对数据表存储的目录和文件进行备份/var/lib/data 直接对data目录备份
逻辑备份: 对数据库执行的sql语句进行备份 二进制文件
热备份 在备份数据的时候可以正常读写数据 mysqlhotcopy 安装插件
温备份 在备份数据的时候只能读不能写
冷备份 在备份数据的时候不能写也不能读 mysqldump
对于数据库的备份
mysqldump 用户 密码 要备份的库 > 文件名
[root@localhost ~]# mysqldump -uroot -p123.com user > /user.sql
对于表进行备份
mysqldump 用户 密码 要备份的库 表名 > 文件名
[root@localhost ~]# mysqldump -uroot -p123.com user class_info > /class.sql
对于所有的数据进行备份
mysqldump 用户 密码 --all-databases > 文件名
[root@localhost ~]# mysqldump -uroot -p123.com --all-databases > /all.sql
恢复数据
[root@localhost ~]# mysql -uroot -p123.com
MariaDB [(none)]> drop database user;
MariaDB [(none)]> create database user;
MariaDB [(none)]> use user;
MariaDB [user]> show tables;
[root@localhost ~]# mysql -uroot -p123.com user < /user.sql
[root@localhost ~]# mysql -uroot -p123.com
MariaDB [(none)]> use user;
MariaDB [user]> show tables;