zoukankan      html  css  js  c++  java
  • 02 数据库基本操作

    数据库的基本概念

    字段:表的标题

    记录:文件中的一行内容

    表:文件

    库:文件夹

    数据库管理软件:本质就是一个基于网络通信的套接字软件socket

    数据库服务器:运行数据库管理软件服务端的计算机

    数据库管理软件分为两大类

    关系型:MySQL、oracle、db2、sqlserver
    
    非关系型:key:value--->查询速度快mongodb、redis、memcache
    

    数据库的优化

    统一字符编码

    #1. 修改配置文件
    [mysqld]
    default-character-set=utf8mb4 
    [client]
    default-character-set=utf8mb4
    [mysql]
    default-character-set=utf8mb4
    
    #mysql5.5以上:修改方式有所改动
    [mysqld]
    character-set-server=utf8mb4
    collation-server=utf8mb4_general_ci
    [client]
    default-character-set=utf8mb4
    [mysql]
    default-character-set=utf8mb4
    
    #2. 重启服务
    #3. 查看修改结果:
    s
    show variables like '%char%';
    

    忘记密码修改重启

    vi /etc/my.cnf
    [mysqld] #下面加上:
    skip-grant-tables
    
    update mysql.user set password=password("123") where user="root" and host="localhost";
    flush privileges;
    

    基础SQL语句

    # 增
    MariaDB [(none)]> create database db1 charset utf8mb4;
    
    # 改
    MariaDB [(none)]> alter database db1 charset gbk;
    
    # 查
    MariaDB [(none)]> show create database db1;
    
    # 删
    MariaDB [(none)]> drop database db1;
    

    # 增
    MariaDB [(none)]> create table db1.t1(id int,name varchar(16));
    
    # 改
    MariaDB [(none)]> alter table t1 modify name varchar(20);
    
    # 查
    MariaDB [db1]> show create table t1;
    MariaDB [(none)]> desc t1;
    
    # 删
    MariaDB [(none)]> drop table t1;
    

    记录

    # 增
    MariaDB [(none)]> insert db1.t1 values(1,"baim0"),(2,"tom"),(3,"jack");
    MariaDB [(none)]> insert db1.t1(name,id) values(5,"lili");
    MariaDB [(none)]> insert db1.t1(id) values(5);
    
    # 改
    MariaDB [(none)]> update db1.t1 set name="JACK" where id=3;
    
    # 查
    MariaDB [db1]> select * from db1.t1;
    MariaDB [db1]> select id,name from db1.t1;
    MariaDB [db1]> select id,name from db1.t1 where id=1;
    MariaDB [db1]> select id,name from db1.t1 where id<3;
    
    # 删
    MariaDB [(none)]> delete from db1.t1 where id=3;
    # 清空
    MariaDB [(none)]> delete from db1.t1;# 不要这么干
    MariaDB [(none)]> truncate db1.t1;	#把表所有状态还原成初始状态
    

    MySQL数据备份

    使用mysqldump实现逻辑备份

    #语法:
    # mysqldump -h 服务器 -u用户名 -p密码 数据库名 > 备份文件.sql
    
    #示例:
    #单库备份
    mysqldump -uroot -p123 db1 > db1.sql
    mysqldump -uroot -p123 db1 table1 table2 > db1-table1-table2.sql
    
    #多库备份
    mysqldump -uroot -p123 --databases db1 db2 mysql db3 > db1_db2_mysql_db3.sql
    
    #备份所有库
    mysqldump -uroot -p123 --all-databases > all.sql
    

    恢复逻辑备份

    #方法一:
    [root@egon backup]# mysql -uroot -p123 < /backup/all.sql
    
    #方法二:
    mysql> use db1;
    mysql> SET SQL_LOG_BIN=0;
    mysql> source /root/db1.sql
    
    #注:如果备份/恢复单个库时,可以修改sql文件
    DROP database if exists school;
    create database school;
    use school;
    

    备份脚本

    备份计划:
    1. 什么时间 2:00
    2. 对哪些数据库备份
    3. 备份文件放的位置
    
    备份脚本:
    [root@egon ~]# vim /mysql_back.sql
    #!/bin/bash
    back_dir=/backup
    back_file=`date +%F`_all.sql
    user=root
    pass=123
    
    if [ ! -d /backup ];then
    mkdir -p /backup
    fi
    
    # 备份并截断日志
    mysqldump -u${user} -p${pass} --events --all-databases > ${back_dir}/${back_file}
    mysql -u${user} -p${pass} -e 'flush logs'
    
    # 只保留最近一周的备份
    cd $back_dir
    find . -mtime +7 -exec rm -rf {} ;
    
    手动测试:
    [root@egon ~]# chmod a+x /mysql_back.sql 
    [root@egon ~]# chattr +i /mysql_back.sql
    [root@egon ~]# /mysql_back.sql
    
    配置cron:
    [root@egon ~]# crontab -l
    2 * * * /mysql_back.sql
    

    数据库的迁移

    务必保证在相同版本之间迁移
    # mysqldump -h 源IP -uroot -p123 --databases db1 | mysql -h 目标IP -uroot -p456
    
  • 相关阅读:
    84. Largest Rectangle in Histogram (Solution 2)
    84. Largest Rectangle in Histogram (Solution 1)
    73. Set Matrix Zeroes
    【JavaScript】Symbol 静态方法
    【JavaScript】Date
    【JavaScript】Math
    725. Split Linked List in Parts把链表分成长度不超过1的若干部分
    791. Custom Sort String字符串保持字母一样,位置可以变
    508. Most Frequent Subtree Sum 最频繁的子树和
    762. Prime Number of Set Bits in Binary Representation二进制中有质数个1的数量
  • 原文地址:https://www.cnblogs.com/zhaokunhao/p/14951959.html
Copyright © 2011-2022 走看看