网络安全 Day23-mariadb数据库数据管理和备份

1. 管理数据库中的库

  1. 进入指定数据库: use 数据库名字
  2. 库的增删改查
    1. 创建数据库: create database 数据库名字
    2. 指定字符及创建数据库: CREATE DATABASE oldgirl CHARACTER SET utf8;
    3. 删除数据库: drop database 库名
    4. 更改数据库的字符集: alter database oldgirl character set utf8mb4;
    5. 查看mysql的库: show databases

2. 管理库中的表

  1. 表的增删改查
    1. 创建表格语法
      create table <表名> (
      	 <字段名1> <类型1> ,<字段名n> <类型n>);
      
      1. 字段名说明: 内容可以是数字 字母 下划线 开头不能用数字
      2. 字段类型(也可以说是选项 约束)说明
        1. 数据类型(Type)
          1. 整型:数字-整数
            1. 微小整型 (tinyint) :1byte=8bit=2^8=256
            2. 大整型 (int) : 4byte=2^32=(40亿+)
            3. 超大整型 (bigint) : 8byte=2^64(40亿*40亿=1600亿亿)
          2. 字符:所有符号都是字符,含整数
            1. 变长字符类型(varchar ): 创建指定空间大小的字符串但是不为它分配初始空间, 只为它分配上限
            2. 定长字符类型(char): 创建指定空间大小, 并为它分配初始空间
        2. 是否为空(Null): YES or NO
        3. 此外还有很多约束这里就不一一列举了
    2. 删除表: drop table 表名
    3. 改表的名字: rename table 原名字 to 新名字
    4. 查看库中的表: show tables
    5. 查看建表语法: show create table stu1\G
    6. 查看表结构: 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。
      
  2. 创建表例子
    1. 创建并进入库: create database oldboy; use oldboy;
    2. 建表
      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 
      );
      
    3. 查看表: show tables;
    4. 查看表结构: desc stu1;
    5. 查看建表的语句: show create table stu1\G
    6. 修改表名: rename table
    7. 删除表: drop table <表名>

3. 管理表中的字段(列)

  1. 增加字段
    1. 最后一行增加: alter table stu1 add 字段名 varchar(类型大小) not null(是否为空) comment 'address'(注释);
    2. 指定位置增加: alter table stu1 add 字段名 varchar(类型大小) after 某个字段的名字;
    3. 在首行添加: alter table stu1 add number varchar(11) first;
    4. 前后对比
      +-------+-------------+------+-----+---------+-------+
      | 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)
      
  2. 删除字段: alter table 表名 drop 字段名字;
  3. 改字段: alter table 表名 change name sname varchar(128);
  4. 查看表中的内容: select * for 表名

4. 管理表中的数据(行)

  1. 重新建一个表
    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);
    
  2. 往表里加入数据
    1. 语法: insert into <表名> [( <字段名1>[,..<字段名n > ])] values ( 值1 )[, ( 值n )](方括号表示可选项)
    2. 查看表结构
      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    |                |
      +-------+-------------+------+-----+---------+----------------+
      
    3. 插入数据
      1. 方法一(指定列): insert into stu1(id,name,age,dept) values(1,'oldboy',35,'net sec');(说明:字符列要加引号引起来,数字列不加引号)
      2. 方法二(省略列): insert into stu1 values(2,'oldgirl',25,'linux');
      3. 方法三:(同时插入多行): insert into stu1 values(3,'littlegirl',5,'net sec'),(4,'littleboy',2,'Linux');
  3. 删除表中的数据
    1. 命令: delete from 表名 where 表达式
    2. 例子: delete from stu1 where id=6;
  4. 修改表中的数据
    1. 语法: update 表名 set 字段=新值 where 条件
    2. 例子: update stu1 set name='zhangsan' where id=6;
  5. 查询表中的数据
    1. 基础语法: select <字段1,字段2,...> from <表名> [WHERE 条件]
    2. 例子: SELECT * FROM city WHERE countrycode='CHN';

5. 数据库数据备份与恢复

  1. 备份原理: 以SQL语句的形式将数据导出
  2. 备份语法: mysqldump -uroot -poldboy123 -B oldboy >/opt/oldboy.sql
  3. 备份所有库
    1. mysqldump -uroot --poldboy123 -A -B >路径
      1. -A 所有
      2. -B库(没有B就是备份表)
  4. 备份多个库
    5. mysqldump -uroot --poldboy123 -B 库名 >路径
  5. 压缩备份
    1. mysqldump -uroot --poldboy123 -B 库名 |gzip>路径
  6. 检查备份的数据:grep -Ev "^$|^-|^/" /opt/oldboy.sql
  7. 还原恢复: source /opt/oldboy.sql;或者mysql -uroot -poldboy123 </opt/oldboy.sql
  8. 不登录查看内容(非交互式查看数据): mysql -uroot -poldboy123 -e "select * from oldboy.stu1;"

猜你喜欢

转载自blog.csdn.net/m0_73293867/article/details/131947774