MySQL数据库学习II(基础)
备份、恢复数据库
备份数据库表中的数据
•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 … onselect * 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(基础)相关推荐
- MySQL数据库学习笔记(十二)----开源工具DbUtils的使用(数据库的增删改查)
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...
- 最新、最全、最详细的 MySQL 数据库学习笔记总结(2021最新版)
数据库是什么 数据库管理系统,简称为DBMS(Database Management System),是用来存储数据的管理系统. DBMS 的重要性 无法多人共享数据 无法提供操作大量数据所需的格式 ...
- MySQL数据库学习导航
MySQL数据库学习导航 MySQL数据库基础知识 MySQL数据库备份 MySQL数据在线备份 MySQL数据库基础知识 MySQL数据库介绍 MySQL体系结构 MySQL语句 - sql语句 M ...
- MySQL 数据库学习(一)
MySQL 数据库学习 数据库 1. 数据库的介绍 2. 数据库的分类 3. 数据库的作用 4. 数据库的特点 5. 小结 MySQL数据库 1. MySQL数据库的介绍 2. MySQL数据库的安装 ...
- MySQL数据库学习日志(六):索引和视图
MySQL数据库学习日志(六):索引和视图 MySQL数据库学习日志(六):索引和视图 索引 (一)索引概述 (二)优缺点 (三)分类 1. 按照底层实现的方式 2. 按照功能划分 普通索引 唯一索引 ...
- linux数据库创建score表,MySQL数据库学习笔记
MySQL数据库学习笔记phpma (实验环境:Redhat9.0,MySQL3.23.54) 纲要: 一,连接MySQL phpma 二,MySQL管理与授权 三,数据库简单操作 四, 数据库备份 ...
- mysql 数据库学习(触发器)
引用:http://bbs.mysql.cn/thread-9135-1-2.html 引用:21. 触发程序 create table a (sa int); create table b (sb ...
- 2.5.1 MySQL数据库备份恢复基础讲解
MySQL数据库备份恢复基础 MySQL常见的故障类型 对于用户来说,数据库中保存的数据通常至关重要,所以要采取各种手段来防止各种可能的数据损失和数据故障. DBA主要任务就是维持数据库的高可靠性运行 ...
- MySQL数据库学习笔记(九)----JDBC的ResultSet接口(查询操作)、PreparedStatement接口重构增删改查(含SQL注入的解释)...
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...
最新文章
- 降维后的高维特征的参数_高维超参数调整简介
- python最小二乘法拟合_Python 普通最小二乘法(OLS)进行多项式拟合
- HTTP请求/响应原理
- 【推荐收藏】1000+ Python第三方库大合集
- 二进制 八进制 十进制 十六进制 相互转化法
- 肿瘤异质性:精准医学需要解决的难题
- 天翼校园网开wifi指南
- cad角度怎么画_软件CAD | 直线amp;构造线
- 读《Oracle 数据库应用与实践》
- 三维重建(5)之三角测量计算双目相机坐标系下三维坐标
- iphone win7无法识别_Win7电脑不能识别iphone苹果设备怎么解决
- java 批注框_Java 回复Word批注
- Matlab中interp2和interpn的差异
- 充电宝哪个品牌的更实用更安全?安全的充电宝推荐
- WEMOS D1 R1/R2 [ESP8266] + PCA9685 驱动舵机
- git flow 概念
- dialog中的edit无法弹出输入法
- 解决maven下载jar包失败的几种方法
- winds Server2016安装mysql8.0版教程
- 拳王虚拟项目公社:聊聊虚拟资源项目虚拟资源倒卖生意怎么赚钱?
热门文章
- [转]iptables详解
- c语言 冒泡排序 按从小到大排序。
- 为家长解答青少儿编程常见问题
- Windows 下如何使用管理员的身份运行 DOS 窗口
- VCenter平台Linux虚拟机安装VMware Tools
- 企业级飞速低代码平台 | 公司及产品介绍 | 飞速生产力的平台
- 干货 | MOS管的GS波形分析,教你如何消除MOS管的GS波形振荡~
- 记一次错误记录(已解决)Description:The bean ‘metaDataSourceAdvisor‘ could not be registered.
- [不好分类]读书笔记《你的灯亮着吗》
- 网站打开出现服务器错误代码,网站打开出现“404”错误怎么解决?