备份、恢复数据库

备份数据库表中的数据

    •cmd> mysqldump -u 用户名 -p 数据库名> 文件名.sql

恢复数据库(前提创建空的数据库,并且use)

    •source 文件名.sql   // 在mysql内部使用•mysql –u 用户名 p 数据库名 <文件名.sql  // 在cmd下使用

MySQL数据库的备份和恢复

1、备份命令mysql/bin/mysqldump 将数据库SQL语句导出

    语法:mysqldump-u 用户名 -p 数据库名 > 磁盘SQL文件路径例如:备份day12数据库 --- c:\day12.sqlcmd> mysqldump -u root -p day12 > c:\day12.sql 回车输入密码INSERTINTO `exam` VALUES(1,'关羽',85,76,70),(2,'张飞',70,75,70),(3,'赵云',90,65,95),(4,'刘备',NULL,55,38);

2、恢复命令mysql/bin/mysql 将sql文件导入到数据库

    语法:mysql -u 用户名 -p 数据库名 < 磁盘SQL文件路径

*****导入SQL 必须手动创建数据库 ,SQL不会创建数据库

例如:将c:\day12.sql导入 day12数据库

    cmd> mysql -u root -p day12 < c:\day12.sql 回车密码

补充知识:恢复SQL也可以在数据库内部执行source c:\day12.sql

多表操作

  • 外键约束
  • 有一个部门的表,还有一个员工表,
    create database day16;use day16;create table dept(did int primary key auto_increment,dname varchar(30)); create table emp(eid int primary key auto_increment,ename varchar(20),salaly double,dno int); insert into dept values(null,'研发部');insert into dept values(null,'销售部');insert into dept values(null,'人事部');insert into dept values(null,'扯淡部');insert into dept values(null,'牛宝宝部'); insert into emp values(null,'班长',10000,1);insert into emp values(null,'美美',10000,2);insert into emp values(null,'小凤',10000,3);insert into emp values(null,'如花',10000,2);insert into emp values(null,'芙蓉',10000,1);insert into emp values(null,'东东',800,null);insert into emp values(null,'波波',1000,null); update emp set salaly=2500 where eid = 5;
  • 把研发部删除?

  • 研发部下有人员?该操作不合理。

  • 引入外键约束?

    • 作用:保证数据的完整性。

定义外键约束

1,可以直接在create语句中定义外键

    •foreign key 当前表名 (字段名) references 目标表名 (目标表的主键)

2,创建完语句后,可以直接使用修改语句定义

    •alter table 表名 add foreign key 当前表名 (字段名) references 目标表名 (目标表的主键);
  • 添加外键
    语法:alter table emp add foreign key 当前表名(dno) references 关联的表(did);
    alter table emp add foreign key emp(dno) references dept(did);
  • 数据库的设计
  • 一对多 生活中一个部门下有多个员工,一个员工属于一个部门。
    在多方需要添加一个字段,并且和一放主键的类型必须是相同的。
    把该字段作为外键指向一方的主键。
    一方部门
    多方员工
  • 多对多
    学生可以选择多门课程,课程又可以被多名学生选择。
    建表原则:
  • 拆开两个一对多的关系,中间创建一个中间表,至少有两个字段。作为外键指向两个多对多关系表的主键。
  • 一对一(了解)
  • 公司,地址,一个公司对应的是一个地址。 一张表包含公司名称、公司地址。
  • 根据公司的业务需求,会把公司这张表拆开,形成一对一。
  • 建表原则

建表原则:

•第一种是主键对应

    •将两个表的主键进行关联

•第二种是唯一外键对应

    •在任何一方加一个外键,但是需要设置成唯一(unique),指向另一方的主键

多表的查询

引入笛卡尔积的概念:
     笛卡尔乘积是指在数学中,两个集合X和Y的笛卡尓积(Cartesian product),又称直积,表示为X × Y,第一个对象是X的成员而第二个对象是Y的所有可能有序对的其中一个成员

多表查询时,如果不指定表之间的连接条件,则连接变成笛卡尔乘积操作,笛卡尔积的效果如本页所示。进行笛卡尔积后,查询结果中存在大量无意义的数据,示例中只有A表中的A_ID和B表中A_ID一致的行才有意义,这样我们通过加上WHERE过滤条件.得到想要的数据。这种横跨多表的查询操作一般用连接完成。

表A            表B
aid aname bid bname
a1 aa1 b1 bb1
a2 aa2 b2 bb2
            b3 bb3

  • 查询的语法
    select * from 表A,表B; 返回的结果就是笛卡尔积。
    结果:
    a1 aa1 b1 bb1
    a1 aa1 b2 bb2
    a1 aa1 b3 bb3
    a2 aa2 b1 bb1
    a2 aa2 b2 bb2
    a2 aa2 b3 bb3
    select * from dept,emp;
    多表查询
    内连接(用的比较多)

  • 普通内连接
    前提条件:需要有外键的。
    提交关键字 inner join … on
    select * from dept inner join emp on dept.did = emp.dno;
    隐式内连接(用的是最多的)
    可以不使用inner join … on关键字
    select * from dept,emp where dept.did = emp.dno;
    外连接

  • 左外链接(看左表,把左表所有的数据全部查询出来)
    前提条件:需要有外键的。
    语法: 使用关键字 left [outer] join … on
    select * from dept left outer join emp on dept.did = emp.dno;

  • 右外链接(看右表,把右表所有的数据全部查询出来)
    前提条件:需要有外键的。
    语法: 使用关键字 right [outer] join … on

            select * from dept right join emp on dept.did = emp.dno
    

子查询

查询的内容需要另一个查询的结果。

select * from emp where 条件 > (select * from emp where 条件);select * from emp where ename > (select * from emp where 条件);

any 任意
all 全部

any 大于结果的最小值

all 大于结果的最大值

create table dept(did int primary key auto_increment,dname varchar(30)
);
create table emp(eid int primary key auto_increment,ename varchar(20),salaly double,dno int
);

查看所有人所属的部门名称和员工名称?

select dept.dname,emp.ename from dept,emp where dept.did = emp.dno;
select d.dname,e.ename from dept d,emp e where d.did = e.dno;

统计每个部门的人数(按照部门名称统计,分组group by count)

select d.dname,count(*) from dept d,emp e where d.did = e.dno group by d.dname; ​​​​​​​

统计每个部门的人数(按照部门名称统计)

select d.did,d.dname,count(*) from dept d,emp e where d.did= e.dno group by d.did order by d.did asc;

统计部门的平均工资(按部门名称统计 ,分组group by avg)

select d.dname,avg(salaly) from dept d,emp e where d.did = e.dno group by d.dname;

统计部门的平均工资大于公司平均工资的部门(子查询)

  • 公司的平均工资

select avg(salaly) from emp;

  • 部门的平均工资

select d.dname,avg(e.salaly) as sa from dept d,emp e where d.did = e.dno group by d.dname having sa > (select avg(salaly) from emp);

+-----+-------+--------+------+
| eid | ename | salaly | dno  |
+-----+-------+--------+------+
|   1 | 班长  |  10000 |    1 |
|   2 | 美美  |  10000 |    2 |
|   3 | 小凤  |  10000 |    3 |
|   4 | 如花  |  10000 |    2 |
|   5 | 芙蓉  |  10000 |    1 |
+-----+-------+--------+------++-----+--------+
| did | dname  |
+-----+--------+
|   1 | 研发部 |
|   2 | 销售部 |
|   3 | 人事部 |
+-----+--------+
==============================================================================================
+-----+-------+--------+------+
| eid | ename | salaly | dno  |
+-----+-------+--------+------+
|   1 | 班长  |  10000 |    1 |
|   2 | 美美  |  10000 |    2 |
|   3 | 小凤  |  10000 |    3 |
|   4 | 如花  |  10000 |    2 |
|   5 | 芙蓉  |  10000 |    1 |
|   6 | 东东  |    800 | NULL |
|   7 | 波波  |   1000 | NULL |
+-----+-------+--------+------++-----+----------+
| did | dname    |
+-----+----------+
|   1 | 研发部   |
|   2 | 销售部   |
|   3 | 人事部   |
|   4 | 扯淡部   |
|   5 | 牛宝宝部 |
+-----+----------+

MySQL数据库学习II(基础)相关推荐

  1. MySQL数据库学习笔记(十二)----开源工具DbUtils的使用(数据库的增删改查)

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...

  2. 最新、最全、最详细的 MySQL 数据库学习笔记总结(2021最新版)

    数据库是什么 数据库管理系统,简称为DBMS(Database Management System),是用来存储数据的管理系统. DBMS 的重要性 无法多人共享数据 无法提供操作大量数据所需的格式 ...

  3. MySQL数据库学习导航

    MySQL数据库学习导航 MySQL数据库基础知识 MySQL数据库备份 MySQL数据在线备份 MySQL数据库基础知识 MySQL数据库介绍 MySQL体系结构 MySQL语句 - sql语句 M ...

  4. MySQL 数据库学习(一)

    MySQL 数据库学习 数据库 1. 数据库的介绍 2. 数据库的分类 3. 数据库的作用 4. 数据库的特点 5. 小结 MySQL数据库 1. MySQL数据库的介绍 2. MySQL数据库的安装 ...

  5. MySQL数据库学习日志(六):索引和视图

    MySQL数据库学习日志(六):索引和视图 MySQL数据库学习日志(六):索引和视图 索引 (一)索引概述 (二)优缺点 (三)分类 1. 按照底层实现的方式 2. 按照功能划分 普通索引 唯一索引 ...

  6. linux数据库创建score表,MySQL数据库学习笔记

    MySQL数据库学习笔记phpma (实验环境:Redhat9.0,MySQL3.23.54) 纲要: 一,连接MySQL phpma 二,MySQL管理与授权 三,数据库简单操作 四, 数据库备份 ...

  7. mysql 数据库学习(触发器)

    引用:http://bbs.mysql.cn/thread-9135-1-2.html 引用:21. 触发程序 create table a (sa int); create table b (sb ...

  8. 2.5.1 MySQL数据库备份恢复基础讲解

    MySQL数据库备份恢复基础 MySQL常见的故障类型 对于用户来说,数据库中保存的数据通常至关重要,所以要采取各种手段来防止各种可能的数据损失和数据故障. DBA主要任务就是维持数据库的高可靠性运行 ...

  9. MySQL数据库学习笔记(九)----JDBC的ResultSet接口(查询操作)、PreparedStatement接口重构增删改查(含SQL注入的解释)...

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...

最新文章

  1. 降维后的高维特征的参数_高维超参数调整简介
  2. python最小二乘法拟合_Python 普通最小二乘法(OLS)进行多项式拟合
  3. HTTP请求/响应原理
  4. 【推荐收藏】1000+ Python第三方库大合集
  5. 二进制 八进制 十进制 十六进制 相互转化法
  6. 肿瘤异质性:精准医学需要解决的难题
  7. 天翼校园网开wifi指南
  8. cad角度怎么画_软件CAD | 直线amp;构造线
  9. 读《Oracle 数据库应用与实践》
  10. 三维重建(5)之三角测量计算双目相机坐标系下三维坐标
  11. iphone win7无法识别_Win7电脑不能识别iphone苹果设备怎么解决
  12. java 批注框_Java 回复Word批注
  13. Matlab中interp2和interpn的差异
  14. 充电宝哪个品牌的更实用更安全?安全的充电宝推荐
  15. WEMOS D1 R1/R2 [ESP8266] + PCA9685 驱动舵机
  16. git flow 概念
  17. dialog中的edit无法弹出输入法
  18. 解决maven下载jar包失败的几种方法
  19. winds Server2016安装mysql8.0版教程
  20. 拳王虚拟项目公社:聊聊虚拟资源项目虚拟资源倒卖生意怎么赚钱?

热门文章

  1. [转]iptables详解
  2. c语言 冒泡排序 按从小到大排序。
  3. 为家长解答青少儿编程常见问题
  4. Windows 下如何使用管理员的身份运行 DOS 窗口
  5. VCenter平台Linux虚拟机安装VMware Tools
  6. 企业级飞速低代码平台 | 公司及产品介绍 | 飞速生产力的平台
  7. 干货 | MOS管的GS波形分析,教你如何消除MOS管的GS波形振荡~
  8. 记一次错误记录(已解决)Description:The bean ‘metaDataSourceAdvisor‘ could not be registered.
  9. [不好分类]读书笔记《你的灯亮着吗》
  10. 网站打开出现服务器错误代码,网站打开出现“404”错误怎么解决?