mariadb数据库数据管理和备份
- 1. 管理数据库中的库
- 2. 管理库中的表
- 3. 管理表中的字段(列)
- 4. 管理表中的数据(行)
- 5. 数据库数据备份与恢复
1. 管理数据库中的库
- 进入指定数据库:
use 数据库名字
- 库的增删改查
- 创建数据库:
create database 数据库名字
- 指定字符及创建数据库:
CREATE DATABASE oldgirl CHARACTER SET utf8;
- 删除数据库:
drop database 库名
- 更改数据库的字符集:
alter database oldgirl character set utf8mb4;
- 查看mysql的库:
show databases
- 创建数据库:
2. 管理库中的表
- 表的增删改查
- 创建表格语法
create table <表名> (<字段名1> <类型1> ,…<字段名n> <类型n>);
- 字段名说明: 内容可以是数字 字母 下划线 开头不能用数字
- 字段类型(也可以说是选项 约束)说明
- 数据类型(Type)
- 整型:数字-整数
- 微小整型 (tinyint) :1byte=8bit=2^8=256
- 大整型 (int) : 4byte=2^32=(40亿+)
- 超大整型 (bigint) : 8byte=2^64(40亿*40亿=1600亿亿)
- 字符:所有符号都是字符,含整数
- 变长字符类型(varchar ): 创建指定空间大小的字符串但是不为它分配初始空间, 只为它分配上限
- 定长字符类型(char): 创建指定空间大小, 并为它分配初始空间
- 整型:数字-整数
- 是否为空(Null): YES or NO
- 此外还有很多约束这里就不一一列举了
- 数据类型(Type)
- 删除表:
drop table 表名
- 改表的名字:
rename table 原名字 to 新名字
- 查看库中的表:
show tables
- 查看建表语法:
show create table stu1\G
- 查看表结构:
desc 表名
CREATE TABLE `stu1` ( #<== CREATE TABLE是创建表的固定关键字,stu1为表名。`id` int(4) NOT NULL, #<==学号列,数字类型,长度为4,不为空值。`name` char(20) NOT NULL, #<==名字列,定长字符类型,长度20,不为空值。`age` tinyint(2) NOT NULL DEFAULT '0', #<==年龄列,很小的数字类型,长度为2,不为空,默认为0值。`dept` varchar(16) DEFAULT NULL #<==系别列,变长字符类型,长度16,默认为空。 ) ENGINE=InnoDB DEFAULT CHARSET=utf8 #<==引擎和字符集,引擎默认为InnoDB,字符集,继承库utf8。
- 创建表格语法
- 创建表例子
- 创建并进入库:
create database oldboy;
use oldboy;
- 建表
create table stu1( id int(10) not null, name varchar(20) not null, age tinyint(2) NOT NULL default '0', dept varchar(16) default NULL );
- 查看表:
show tables;
- 查看表结构:
desc stu1;
- 查看建表的语句:
show create table stu1\G
- 修改表名:
rename table
- 删除表:
drop table <表名>
- 创建并进入库:
3. 管理表中的字段(列)
- 增加字段
- 最后一行增加:
alter table stu1 add 字段名 varchar(类型大小) not null(是否为空) comment 'address'(注释);
- 指定位置增加:
alter table stu1 add 字段名 varchar(类型大小) after 某个字段的名字;
- 在首行添加:
alter table stu1 add number varchar(11) first;
- 前后对比
+-------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+-------------+------+-----+---------+-------+ | id | int(10) | NO | | NULL | | | name | varchar(20) | NO | | NULL | | | age | tinyint(2) | NO | | 0 | | | dept | varchar(16) | YES | | NULL | | +-------+-------------+------+-----+---------+-------+ 4 rows in set (0.01 sec)
+--------+--------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +--------+--------------+------+-----+---------+-------+ | number | varchar(11) | YES | | NULL | | | id | int(10) | NO | | NULL | | | name | varchar(20) | NO | | NULL | | | qq | varchar(25) | YES | | NULL | | | age | tinyint(2) | NO | | 0 | | | dept | varchar(16) | YES | | NULL | | | addr | varchar(256) | NO | | NULL | | +--------+--------------+------+-----+---------+-------+ 7 rows in set (0.00 sec)
- 最后一行增加:
- 删除字段:
alter table 表名 drop 字段名字;
- 改字段:
alter table 表名 change name sname varchar(128);
- 查看表中的内容:
select * for 表名
4. 管理表中的数据(行)
- 重新建一个表
create table stu1( id int(10) PRIMARY KEY not null AUTO_INCREMENT, name varchar(20) not null, age tinyint(2) NOT NULL default '0', dept varchar(16) default NULL);
- 往表里加入数据
- 语法:
insert into <表名> [( <字段名1>[,..<字段名n > ])] values ( 值1 )[, ( 值n )]
(方括号表示可选项) - 查看表结构
MariaDB [oldboy]> desc stu1; +-------+-------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------+-------------+------+-----+---------+----------------+ | id | int(10) | NO | PRI | NULL | auto_increment | | name | varchar(20) | NO | | NULL | | | age | tinyint(2) | NO | | 0 | | | dept | varchar(16) | YES | | NULL | | +-------+-------------+------+-----+---------+----------------+
- 插入数据
- 方法一(指定列):
insert into stu1(id,name,age,dept) values(1,'oldboy',35,'net sec');
(说明:字符列要加引号引起来,数字列不加引号) - 方法二(省略列):
insert into stu1 values(2,'oldgirl',25,'linux');
- 方法三:(同时插入多行):
insert into stu1 values(3,'littlegirl',5,'net sec'),(4,'littleboy',2,'Linux');
- 方法一(指定列):
- 语法:
- 删除表中的数据
- 命令:
delete from 表名 where 表达式
- 例子:
delete from stu1 where id=6;
- 命令:
- 修改表中的数据
- 语法:
update 表名 set 字段=新值 where 条件
- 例子:
update stu1 set name='zhangsan' where id=6;
- 语法:
- 查询表中的数据
- 基础语法:
select <字段1,字段2,...> from <表名> [WHERE 条件]
- 例子:
SELECT * FROM city WHERE countrycode='CHN';
- 基础语法:
5. 数据库数据备份与恢复
- 备份原理: 以SQL语句的形式将数据导出
- 备份语法:
mysqldump -uroot -poldboy123 -B oldboy >/opt/oldboy.sql
- 备份所有库
mysqldump -uroot --poldboy123 -A -B >路径
- -A 所有
- -B库(没有B就是备份表)
- 备份多个库
5.mysqldump -uroot --poldboy123 -B 库名 >路径
- 压缩备份
mysqldump -uroot --poldboy123 -B 库名 |gzip>路径
- 检查备份的数据:
grep -Ev "^$|^-|^/" /opt/oldboy.sql
- 还原恢复:
source /opt/oldboy.sql;
或者mysql -uroot -poldboy123 </opt/oldboy.sql
- 不登录查看内容(非交互式查看数据):
mysql -uroot -poldboy123 -e "select * from oldboy.stu1;"